1 คะแนน โดย GN⁺ 2024-11-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ChipWits หนึ่งในเกมยุคแรกของ Macintosh ปี 1984 ฉลองครบรอบ 40 ปีด้วยการเปิดซอร์ส ซอร์สโค้ด FORTH ต้นฉบับสำหรับ Mac และ Commodore 64 เป็นโอเพนซอร์ส
  • จุดประสงค์ของการเผยแพร่คือเพื่ออนุรักษ์มรดกของเกม และแบ่งปันว่าการพัฒนาข้ามแพลตฟอร์มบน ไมโครคอมพิวเตอร์ 8 บิต ในปี 1984 ทำกันอย่างไร
  • กู้ข้อมูลจากดิสก์อายุ 40 ปีที่ Doug Sharp เก็บไว้ แม้จะมีบางเซกเตอร์เสีย แต่ดิสก์ส่วนใหญ่ยังอ่านได้ตามปกติ
  • ซอร์สทั้งหมดของเวอร์ชัน Mac มี FORTH ประมาณ 3,000 บรรทัด ขณะที่พอร์ตเวอร์ชันทันสมัยมี C# ถึง 35,000 บรรทัด สะท้อนให้เห็นความกะทัดรัดและข้อจำกัดของโค้ดในยุคนั้น
  • โปรเจกต์ได้เผยแพร่อิมเมจดิสก์ต้นฉบับและโค้ดที่ดึงออกมาบน GitHub และตั้งใจจะร่วมกับชุมชนในการระบุซอร์สล่าสุด เขียนวิธี build และดึงสไปรต์ออกมา

เปิดเผยโค้ดต้นฉบับของ ChipWits

  • เพื่อฉลองครบรอบ 40 ปีของ ChipWits จึงเปิดซอร์ส ซอร์สโค้ด FORTH ต้นฉบับสำหรับ Mac และ Commodore 64 เป็นโอเพนซอร์ส
  • โค้ดต้นฉบับที่กู้คืนมาและอิมเมจดิสก์ถูกรวบรวมไว้ที่ chipwits/chipwits-forth
  • จุดประสงค์ของการเผยแพร่คือ การอนุรักษ์มรดก ของ ChipWits และการแบ่งปันประสบการณ์พัฒนาข้ามแพลตฟอร์มสำหรับไมโครคอมพิวเตอร์ 8 บิตในปี 1984
  • ผู้ที่คุ้นเคยกับระบบต้นฉบับสามารถเข้าร่วมสำรวจและจัดระเบียบซอร์สได้ โดยโปรเจกต์ขอความร่วมมือผ่าน ChipWits Discord Server

เหตุผลที่เลือก FORTH ในปี 1984

  • ChipWits เป็นหนึ่งในเกมยุคแรกที่เปิดตัวบน Macintosh ในปี 1984
  • ผู้ร่วมสร้าง Doug Sharp และ Mike Johnston ออกแบบ ChipWits ซึ่งเป็นเกมออริจินัลเกมแรกของพวกเขา ระหว่างที่พอร์ตเกมเพื่อการศึกษาข้ามไมโครคอมพิวเตอร์ 8 บิต
  • เกมนี้เป็นเกม เขียนโปรแกรมหุ่นยนต์ ที่ได้รับอิทธิพลจากเกมแนวโปรแกรมมิงในยุคนั้น เช่น Rocky’s Boots, Logo
  • สภาพแวดล้อมการพัฒนา Mac ในปี 1984 มีข้อจำกัด และวิธีพัฒนาหลักคือการซื้อ Apple Lisa
    • ราคาดั้งเดิมของ Apple Lisa คือ $9,995 และเทียบเป็นมูลค่าปัจจุบันคือ $30,373
    • เป็นค่าใช้จ่ายที่สตูดิโอเกมอินดี้รับไหวได้ยาก Doug และ Mike จึงพัฒนาด้วย MacForth Plus ซึ่งรันบน Mac ได้โดยตรง
  • ในเวลานั้นมี FORTH หลายสายพันธุ์บนไมโครคอมพิวเตอร์ 8 บิตหลายรุ่น จึงเหมาะกับการเลือกเป็นภาษาโดยคำนึงถึงการพอร์ตในภายหลัง
  • การพัฒนาเริ่มในเดือนเมษายน 1984 และใช้เวลาประมาณ 7 เดือน ตั้งแต่พัฒนาเวอร์ชันแรกจนถึงการจัดพิมพ์ จนเสร็จทันช่วงคริสต์มาส

การพอร์ตไป Commodore 64 และ Apple II

  • Epyx มีกำหนดจะเป็นผู้จัดจำหน่าย ChipWits และ Commodore 64 เป็นตลาดที่ใหญ่ที่สุด
  • Epyx ไม่มีเกม Mac และ Brainworks ตั้งเป้าตลาดการศึกษาที่ Apple แข็งแกร่งในตอนนั้น ดังนั้น Epyx จึงจัดจำหน่าย เฉพาะเวอร์ชัน Commodore 64
  • พอร์ต C64 เสร็จในปี 1985 และเขียนด้วย Super Forth 64
  • การพอร์ตไป Commodore 64 ทำได้ยาก เพราะต้องคงการออกแบบ UI โดยรวมให้เหมือนกับ Mac
    • ต้องพัฒนาระบบเมนูแบบ pull-down ที่ทำงานด้วย จอยสติก แทนเมาส์
    • เพิ่มกราฟิกสีและ เสียงจากชิป SID
    • ต้องยัดทุกอย่างลงใน ดิสก์ 165KB แทนดิสก์ 400KB ของ Mac
    • ต้องใช้ RAM 64KB และโปรเซสเซอร์ที่ช้ากว่า แทน RAM 128KB ของ Mac
  • หลังจากเวอร์ชัน Commodore 64 ประสบความสำเร็จ ก็มีการสร้างเวอร์ชัน Apple II ด้วย และเวอร์ชันนี้ก็เขียนด้วย FORTH สายพันธุ์หนึ่งเช่นกัน

เสียงตอบรับหลังวางจำหน่ายและการรันต้นฉบับ

  • หลังวางจำหน่าย ChipWits ได้รับรีวิวและรางวัลหลายรายการ
  • MacUser Editor’s Choice 1986 Award ประเมินว่า ChipWits เป็น “บทนำสู่แนวคิดการเขียนโปรแกรมที่สนุกที่สุด” และชื่นชมภาษาที่ใช้ไอคอนกับการออกแบบเชิงการศึกษา
  • Macazine คาดว่า ChipWits จะกลายเป็นผลงานขวัญใจเฉพาะกลุ่มในหมู่ผู้ใช้ Macintosh และเด็ก ๆ
  • MacWorld ระบุว่าหากชอบการเขียนโปรแกรม ก็จะชอบ ChipWits
  • Creative Computing เขียนรีวิวที่มีฉากด่าหุ่นยนต์การ์ตูนตอนตี 4 ครึ่ง
  • ในปี 2008 Maclife.com เลือก ChipWits เป็นหนึ่งใน Top 10 Apple II / Mac Games ตลอดกาล
  • เวอร์ชันต้นฉบับถูกเตรียมให้รันได้ในอีมูเลเตอร์บนเบราว์เซอร์ผ่านโปรเจกต์โอเพนซอร์ส Emularity และ Apple2js

การกู้ดิสก์อายุ 40 ปี

  • ระหว่างทำงานกับ ChipWits เวอร์ชันใหม่ Doug Sharp พบ ดิสก์ต้นฉบับ ที่เขาเก็บไว้
  • ดิสเก็ตต์ 3.5 นิ้วและฟลอปปีดิสก์ 5.25 นิ้วถูกเก็บไว้ในบ้านเป็นเวลา 40 ปี แต่ดิสก์ส่วนใหญ่อ่านได้โดยไม่มีเซกเตอร์เสีย
  • การกู้ดิสก์ Commodore 64 ใช้ 1541 Commodore 64 Disk Drive ที่ซื้อจาก eBay
    • อ่านข้อมูลบนพีซีสมัยใหม่ผ่านอะแดปเตอร์ USB XoomFloppy
  • ดิสเก็ตต์ Mac 3.5 นิ้วไม่สามารถอ่านด้วยวิธีมาตรฐานของไดรฟ์สมัยใหม่ได้ เพราะ Mac ใช้การจัดวางเซกเตอร์เฉพาะของตัวเอง
    • Mac ใช้เลย์เอาต์เซกเตอร์เฉพาะเพื่อเพิ่มความจุดิสก์เป็น 800KB
    • PowerMac G3 WallStreet มีไดรฟ์ 3.5 นิ้วและสแต็กเครือข่าย จึงถูกใช้เป็นระบบสะพาน แต่ใน MacOS รุ่นใหม่มีการปิดการรองรับ 400KB ทำให้อ่านได้เฉพาะดิสก์ 800KB
    • ภายหลัง มีแฟนคนหนึ่งเสนอให้ใช้ GreaseWeazle ซึ่งเป็นคอนโทรลเลอร์ฮาร์ดแวร์แบบคัสตอมสำหรับควบคุม USB disk drive และวิธีนี้ทำงานได้ปกติ
  • ดิสก์ทั้งหมดถูกทำเป็นอิมเมจระดับบล็อก แล้วจัดระเบียบไว้ใน GitHub repository
    • ใช้ป้ายชื่อบนดิสก์เป็นชื่อไฟล์
    • หากตรวจพบเซกเตอร์เสีย จะเติม bad ไว้หน้าชื่อไฟล์
    • ใช้สคริปต์ Python ดึงบล็อกออกมาและจัดรูปแบบใหม่เป็นไฟล์ UTF-8 ASCII เพื่อให้อ่านง่ายบนคอมพิวเตอร์สมัยใหม่
    • PETSCII ซึ่งเป็น encoding ตัวอักษรเฉพาะของ Commodore 64 ถูกแปลงเป็น ASCII

วิธีพัฒนาที่เห็นได้จากซอร์ส FORTH

  • สามารถดูอิมเมจดิสก์ต้นฉบับทั้งหมดและโค้ดได้ที่ chipwits/chipwits-forth
  • ซอร์สทั้งหมดของ ChipWits สำหรับ Mac มี FORTH ประมาณ 3,000 บรรทัด
  • พอร์ตเวอร์ชันทันสมัยมี C# ถึง 35,000 บรรทัด แล้ว ทำให้ความกะทัดรัดของโค้ด FORTH ต้นฉบับโดดเด่น
  • บทความแยก Forth Code for Electrocrabs in 1984 ChipWits Deciphered วิเคราะห์ “screen” หนึ่งของโค้ด FORTH ที่ควบคุมปูไฟฟ้า (electrocrabs)
  • FORTH เป็นภาษาที่อิงสแตก และคล้ายกับ Reverse Polish Notation
    • เขียนในรูปแบบ 1 1 + แทน 1 + 1
    • ใช้รูปแบบ 3 irnd 1 = if แทน if random(3) == 1

ดูการสร้างเกมปี 1984 ผ่านตัวอย่างโค้ด

  • โค้ดการเคลื่อนที่ของหุ่นยนต์ในเวอร์ชัน Mac ไม่ได้แยก rendering loop รายเฟรมเหมือนการพัฒนาเกมสมัยใหม่
    • ลอจิกเกมและการเรนเดอร์กราฟิก ถูกผสมอยู่ด้วยกันในโค้ดเชิงคำสั่ง
    • อนิเมชันถูกทำโดยเรนเดอร์พิกเซลโดยตรงภายในลูป
    • ใช้โค้ดเพียงไม่กี่คำเพื่อจัดการว่ากำลังย้ายไปยังไทล์พื้นว่าง ชนกำแพง หรือแตะระเบิด
    • definition ?boom ตัดสินไปถึงว่าเกมจะจบหรือไม่เมื่อแตะระเบิด
    • เพิ่ม 0 เข้าไปในคะแนนตามตำแหน่งของหุ่นยนต์ เพื่อบังคับให้วาดตัวเลขคะแนนใหม่ ซึ่งอาจถูกลบไปตอนหุ่นยนต์เดินผ่าน
  • definition ของสไปรต์ในเวอร์ชัน Commodore 64 แสดงให้เห็นวิธีที่โค้ดและข้อมูล asset ถูกผสมอยู่ด้วยกัน
    • ซอร์ส FORTH ไม่ได้เก็บเป็นไฟล์ แต่เก็บเป็นหน่วย screen ที่มีหมายเลขกำกับ และถูกโหลดตามลำดับที่ต้องใช้
    • สไปรต์ขาวดำของ C64 มีขนาด 24×21 พิกเซล และใช้สไปรต์บนหน้าจอได้เพียง 8 ตัว
    • หากเลือกสไปรต์ 4 สี ความละเอียดจะลดลงเป็น 12×21 และพิกเซลจะกว้างเป็นสองเท่า
    • ตัวละคร ChipWit ถูกเรนเดอร์ด้วยการซ้อนสไปรต์หลายชิ้น คล้ายกับ cel animation ของการ์ตูนวินเทจ
    • การเลือกแบบนี้ทำให้ใช้สไปรต์จำนวนมากกับ ChipWit แต่แลกกับภาพที่คมชัดกว่าและอนิเมชันแยกตามส่วนได้
  • ตารางคะแนนไอเท็มของเวอร์ชัน Mac ถูกบีบอัดข้อมูลให้พอดีกับหนึ่ง screen
    • สัญลักษณ์อย่าง ( 110584 dws) คือ date stamp ของ screen โดย 110584 หมายถึง 5 พฤศจิกายน 1984 และ dws หมายถึง Douglass Walter Sharp
    • screen ดังกล่าวดูเหมือนจะเป็นหนึ่งใน screen สุดท้ายที่ถูกแก้ไขก่อน release สุดท้าย โดย screen ที่เปลี่ยนแปลงล่าสุดคือวันที่ 8 พฤศจิกายน
    • d, ถูก define ให้คูณค่าด้วย 10 ก่อนจัดเก็บ จึงสามารถแสดง 150 คะแนนเป็น 15 d ได้
    • วิธีนี้ช่วยรักษาการจัดแนวตารางให้พอดีในหนึ่ง screen และอาจทำให้ปรับค่าคะแนนทั้งหมดได้ง่ายขึ้นระหว่างการ balance คะแนนก่อน release

รีบูตและงานของชุมชน

  • ทีมกำลังทำ ChipWits เวอร์ชันทันสมัยควบคู่ไปกับการเผยแพร่เวอร์ชัน FORTH ต้นฉบับ
  • เวอร์ชันรีบูตพยายามคงความสนุกและความเข้มงวดด้านวิทยาการคอมพิวเตอร์ของต้นฉบับไว้ พร้อมปรับปรุงหลายด้าน ตั้งแต่ learning curve ไปจนถึง leaderboard ระดับโลกแบบแข่งขัน
  • หากเพิ่ม ChipWits ลงใน wishlist บน Steam จะได้รับการแจ้งเตือนเมื่อเวอร์ชันสุดท้ายเปิดตัว
  • เป้าหมายระยะสั้นของ GitHub issues ปัจจุบันที่เกี่ยวข้องกับโค้ด FORTH ต้นฉบับมีดังนี้
    • ตรวจสอบว่าได้ดึงซอร์สโค้ดที่เกี่ยวข้องทั้งหมดจาก raw disk image แล้วหรือไม่
    • แก้ปัญหาการจัดแนวของไฟล์ซอร์สบางไฟล์
      • บางไฟล์กว้าง 40 ตัวอักษร บางไฟล์กว้าง 64 ตัวอักษร
    • ระบุว่าดิสก์ใดมีซอร์สโค้ดล่าสุดที่สุด
    • เขียนวิธี build จากซอร์สบน Mac และ C64
    • ดึง raw sprite และรูปภาพจากดิสก์ แล้วแปลงเป็นไฟล์ .png
  • เป้าหมายสุดท้ายคือ ChipWits เวอร์ชัน FORTH ที่ชุมชนดูแล สำหรับพีซีสมัยใหม่

1 ความคิดเห็น

 
GN⁺ 2024-11-23
ความคิดเห็นบน Hacker News
  • มีบทความที่เขียนไว้ว่า ทำไมจึงสร้าง ChipWits ด้วย FORTH ในปี 1984
    https://chipwits.com/2023/04/08/forth-programming-language-g...

    • ChipWits เป็นหนึ่งในเกมแรก ๆ ที่เคยเล่นบน Apple Macintosh ซึ่งเป็นคอมพิวเตอร์เครื่องแรกของตัวเองตอนอายุ 6 ขวบในปี 1984
      ขอบคุณที่สร้างเกมที่เคยชอบ ได้ลองเดโมใหม่แล้ว และเพิ่มไว้ในรายการที่อยากได้บน Steam แล้วด้วย
  • Forth เป็นภาษาที่อยากเรียนมาหลายปีแล้ว
    ในคอมพิวเตอร์ยุคเก่า ถ้าต้องการโปรแกรมที่เร็วก็มีตัวเลือกเป็น ภาษาแอสเซมบลี ถ้าช้าหน่อยก็ไม่เป็นไรก็ใช้ BASIC แต่ที่น่าสนใจคือ Forth ดูเหมือนค่อนข้างระดับสูง แต่ยังคงเป็นภาษาที่มี “ความเร็วระดับกลาง”

    • Forth เป็นภาษามาตรฐานในด้าน การพัฒนาฮาร์ดแวร์และไดรเวอร์ ร่วมกับ C มาเป็นเวลานาน และปัจจุบันก็ยังใช้กันอยู่หลายแห่ง
      เป็นภาษาแบบ stack-based
      https://www.forth.com/starting-forth/
    • สามารถซื้อ คอมพิวเตอร์บอร์ดเดี่ยว ที่รัน Forth แบบเนทีฟได้
      แค่เสียบสาย USB เข้ากับคอมพิวเตอร์แล้วเปิดโปรแกรมเทอร์มินัลก็เริ่มได้ทันที จึงเหมาะมากสำหรับการดื่มด่ำกับภาษาอย่างเต็มที่
      อย่างไรก็ตาม สินค้าที่มาจากออสเตรเลียอาจใช้เวลาหลายเดือนกว่าจะมาถึง จึงควรมองหาผู้จัดจำหน่ายใกล้ตัวก่อน
      อีกวิธีที่ดีคือเรียนแบบปี 1984 คือเปิด emulator อย่าง Commodore 64 หรือ Apple ][ บนคอมพิวเตอร์สมัยใหม่ แล้วติดตั้งสภาพแวดล้อมพัฒนา Forth ไว้ในนั้น
      เอกสารในยุคนั้นเขียนโดยตั้งใจให้ผู้เริ่มต้นจริง ๆ อ่าน จึงทำตามได้ง่ายมาก และบนอินเทอร์เน็ตก็มี PDF สแกนฟรีอยู่มากมาย
    • มองว่าการลองสร้าง toy Forth interpreter เองเป็นวิธีที่ดีในการเรียนภาษา
      ง่ายและสนุก แต่ถึงจุดหนึ่งมันง่ายอย่างไม่น่าเชื่อจนบางคนอาจรู้สึกว่าพื้นฐานเกินไป หรือเริ่มอยากข้ามจากการทำ toy implementation ไปสู่สิ่งที่จริงจังกว่านั้น
    • Forth เร็วมาก และอาจเร็วกว่าภาษาแอสเซมบลีที่เขียนแบบตรงไปตรงมาเสียอีก แต่ไม่ใช่ภาษาระดับสูงเลย
      ต้อง จัดการ stack เอง จึงค่อนข้างยุ่งยาก และการสร้าง FORTH เองก็สนุกดี ไม่จำเป็นต้องทำด้วยภาษาแอสเซมบลีเสมอไป ก่อนหน้านี้เคยทำภาษาสคริปต์คล้าย Forth ด้วย C++ ด้วย
    • คอมพิวเตอร์บ้าน 8 บิตรุ่นเก่าออกแบบโดยคำนึงถึงวัยรุ่นและเด็ก ๆ และอาจได้รับอิทธิพลจาก Alan Kay ด้วย
      BASIC ย่อมาจาก “Beginner's All-purpose Symbolic Instruction Code” จึงเข้ากันได้ดี
      Amstrad CPC 6128 ยังมีการแจก implementation ของ Logo ซึ่งเป็น dialect ของ Lisp เพื่อการศึกษา แยกเป็นดิสก์ต่างหาก และตอนเด็ก ๆ linked list ของมันทำให้รู้สึกตะลึงมาก
      ในตอนนั้น “โอเพนซอร์ส” ยังไม่ใช่แนวคิดที่พบได้ทั่วไป และคอมไพเลอร์กับอินเทอร์พรีเตอร์ของภาษาต่าง ๆ เป็นเครื่องมือเชิงพาณิชย์สำหรับมืออาชีพ
      [1] https://en.wikipedia.org/wiki/Amstrad_CPC#Other_languages
      [2] https://en.wikipedia.org/wiki/An_Open_Letter_to_Hobbyists
  • ดูเจ๋งมาก
    ที่เกี่ยวข้องกันก็มี http://tumbleforth.hardcoded.net/ ด้วย ซึ่งคิดว่าดูดีทีเดียว ถ้ามีใครลองทำจนจบแล้ว อยากรู้ว่าเป็นประสบการณ์แบบไหน

    • เคยทำไปได้ประมาณครึ่งหนึ่งในสัปดาห์ที่งานไม่ยุ่ง แล้วทำให้นึกถึง วิชาฮาร์ดแวร์ สมัยมหาวิทยาลัย
      มันทำให้คิดเกี่ยวกับคอมพิวติ้งต่างออกไป
      ถึงยังเด็กและยังรู้น้อย แต่เมื่อมองย้อนกลับไป ดูเหมือนว่าในอดีต abstraction บางแบบถูกเลือกเพราะข้อจำกัดด้านฮาร์ดแวร์ และใน “กิ่งวิวัฒนาการ” ของภาษาโปรแกรมมิงปัจจุบัน มี abstraction จำนวนมากที่แก่ตัวไปไม่ค่อยดีสะสมอยู่ จนกลายเป็นชั้นเศษ杂ที่ต้องแบกรับน้ำหนักไว้มากมาย คล้ายกับโปรเจกต์วิศวกรรมอื่น ๆ
      Collapse OS อาจไม่ใช่สิ่งที่ใช้งานได้จริงในปัจจุบัน แต่ก็มี ความรู้สึกเป็นอิสระ จากการหลุดพ้นจากชั้น abstraction หลาย ๆ ชั้นอยู่ รู้สึกเหมือนเป็นวิธีสนุกกับคอมพิวติ้งแบบทศวรรษ 1960 โดยไม่ต้องเจอกับประสบการณ์นักพัฒนาที่เลวร้าย
      โปรเจกต์เพ้อฝันตอนนี้คือไล่ตามสิ่งเหล่านี้ไปเรื่อย ๆ โดย build Dusk OS บน virtual machine จากนั้นย้ายไปเครื่องจริง แล้วเขียน Scheme interpreter สำหรับ Dusk OS ด้วย C ก่อนจะขยายมันตามใจชอบ
      ก่อนจะไปถึงตรงนั้นยังมีอุปสรรคอีกหลายด่าน เคยทำ Scheme interpreter ด้วย Python ได้ภายในไม่กี่ชั่วโมง และใช้เวลาเพิ่มอีกไม่กี่ชั่วโมงปรับปรุง scanner/tokenizer ตอนนี้กำลังอ่าน Crafting Interpreters เพื่อดูว่าถ้าจะทำ Scheme interpreter ด้วย C ควรทำอย่างไร หลังจากทำ C interpreter แล้ว ตั้งใจว่าจะกลับมาดูไกด์นี้อีกครั้งและกระโจนเข้าใส่ DuskOS แบบเต็มตัว
    • เพิ่งเริ่มดู ขอบคุณที่แชร์
      ชอบน้ำเสียงของผู้เขียนตั้งแต่ตอนนี้แล้ว
      เช่น:

      Much terser than the C version right?
      This little assembler crash course gives us a better understanding of what is compiled by the C compiler, but not how it compiles it. We don't know how it's ran either. To know that, we'd have to dig through software that weighs millions of lines of code. Maybe you'd have the patience to do it, I don't, so let's continue tumbling down the rabbit hole. We'll go bare metal and then build an operating system of our own, with a C compiler of our own. It's simpler this way.
      What’s a linker? Aw, forget about it, it’s another piece of overcomplicated software that has convinced the world that it’s essential. We won’t need one in what’s coming.

    • Virgil Dupras ผู้เขียนซีรีส์ Tumble Forth ยังสร้าง DuskOS ซึ่งเป็นระบบปฏิบัติการที่เขียนทั้งหมดด้วย Forth แบบกำหนดเองด้วย
      ผลงานที่ออกมาอย่างสม่ำเสมอและมหาศาลน่าประทับใจมาก แม้จะไม่ได้เห็นด้วยทั้งหมดกับปรัชญา Collapse แต่ mailing list ของ DuskOS ก็มีปริมาณทราฟฟิกกำลังดีสำหรับอ่านเงียบ ๆ
      หลังจากเห็นงานของ Virgil ก็ลองแตะ Forth นิดหน่อย และปีที่แล้วใช้เวลา decompile SmithForth[1] ด้วยมือ
      น่าทึ่งที่ต้องใช้ภาษาแอสเซมบลีเพียงน้อยมากในการ bootstrap ภาษา เข้าใจได้เต็มที่เลยว่า Forth สามารถให้ REPL ในสภาพแวดล้อม embedded ได้ และดูสนุกกว่าวงจรการพัฒนาทั่วไปที่ได้ยินกันบ่อย ๆ มาก
      [0]:https://duskos.org/
      [1]:https://dacvs.neocities.org/SF/
    • ตอนแรกเป็นปฏิกิริยาที่เขียนไว้เพราะตื่นเต้นที่ได้เห็นอะไรจริง ๆ ที่ใช้ Forth เป็นฐาน
      หลังจากนั้นได้อ่านหน้า Wikipedia และบล็อกโพสต์ของ ChipWits แล้ว เกมต้นฉบับดูยอดเยี่ยมจริง ๆ โลโก้ในคู่มือบน Wikipedia ก็ดีมาก
      ช่วงนี้กำลังทำรายชื่อเกมเก่า/ใหม่ที่มีองค์ประกอบของพัซเซิลและการเขียนโปรแกรมอยู่ และตั้งใจจะใส่เกมนี้ลงไปด้วย อาจลองเล่นทันทีหลังจากจบ “เกม” แอสเซมบลี ketman จริง ๆ แล้วจะเรียกว่าเกมก็ออกจะกำกวมอยู่
      หวังว่า ChipWits เวอร์ชันใหม่จะไปได้สวยมาก ๆ
  • ValForth ของ Valpar เป็นหนึ่งในการใช้งาน FORTH แบบข้ามแพลตฟอร์มยุคแรก ๆ ใน ecosystem ของ Atari ST และยังมีส่วนขยายที่ชาญฉลาดสำหรับเกมด้วย
    https://www.atarimagazines.com/rom/issue1/jumping_forth.php
    อย่างที่บทความบอก บนเครื่อง 8 บิตก็มี FORTH ของ Elcomp และยังมีหนังสืออย่าง https://www.atarimania.com/documents/FORTH-on-the-Atari-Lear... ด้วย “Starting FORTH” ของ Leo Brodie ก็ยังเป็นหนังสือปูพื้นฐานที่ยอดเยี่ยมจนถึงตอนนี้
    ทุกคนเรียน BASIC กัน แต่ภาษาทางเลือกเหล่านี้ทำให้รู้ว่ามีอุปลักษณ์ที่ต่างออกไปโดยสิ้นเชิงสำหรับการโปรแกรมอุปกรณ์อยู่จริง
    สำหรับเด็กยุค 80 แล้ว นั่นเป็นสิ่งที่เปิดโลกมาก

  • Forth ดูเหมือนจะเป็นหนึ่งใน ภาษาที่พอเขียนครั้งเดียวแล้วอ่านยาก คล้าย Perl
    เขียนและสร้างได้ง่าย แต่พอผ่านไปสัก 1 ปีแล้วกลับมาดูโค้ด น่าจะไม่รู้ว่ามันทำอะไรอยู่
    แต่ถึงอย่างนั้นก็เร็วและมีประสิทธิภาพจริง ๆ

    • ผมคิดว่าชื่อเสียงแบบนั้นของ Perl นั้นไม่ยุติธรรมอย่างสิ้นเชิง
      เมื่อกี้ลองสุ่มเปิดโปรแกรม Perl ขนาดค่อนข้างใหญ่ตัวหนึ่งที่ไม่ได้แตะมานานกว่า 3 ปี แล้วไล่อ่านซอร์ส ก็ไม่มีปัญหาเลยในการเข้าใจว่ามันทำอะไร
      ผมไม่คิดว่าโค้ด Perl อ่านซ้ำยากกว่าภาษาโปรแกรมมิงส่วนใหญ่ ความยากขึ้นอยู่กับว่านักพัฒนาชำนาญภาษานั้นแค่ไหน และครั้งสุดท้ายที่เขียนโค้ดด้วยภาษานั้นคือเมื่อไหร่มากกว่า
      ถ้าภาษาขึ้นสนิมไปมาก หรือเดิมทีก็ไม่ได้เชี่ยวชาญอยู่แล้ว ไม่ว่าภาษาไหน การกลับไปดูโค้ดเก่าก็ยากทั้งนั้น
      แน่นอนว่าถ้าไม่ใช่โค้ดของตัวเองก็ยิ่งยากขึ้น และคุณภาพการเขียนโค้ดก็มีผลมากเช่นกัน ภาษาไหน ๆ ก็มีโค้ดขยะเยอะ และถ้ามันเป็นขยะตั้งแต่แรก เวลาผ่านไปก็ไม่ได้ทำให้ดีขึ้น
    • ส่วนตัวผมรู้สึกตรงกันข้าม
      ผมว่า Forth เขียนยาก แต่อ่านง่าย
  • ตอนเด็ก ๆ เล่นบน Commodore 64 เยอะมาก
    เป็นเกมที่แปลกใหม่ น่าสนใจ และสนุก

    • ในเกมภาคใหม่ก็ยังคง เกมเพลย์ ของต้นฉบับไว้แทบเหมือนเดิม
      ไม่อยากสแปมใน Hacker News แต่ถ้าเคยเล่นต้นฉบับ ผมอยากฟังความเห็นต่อเวอร์ชันรีบูตมาก: https://chipwits.com
  • ตอนเด็ก ๆ ผมอยากได้เกมนี้มากจริง ๆ
    ทำให้รู้สึกว่าตัวเองแก่แล้วจริง ๆ

  • สงสัยว่า ChipWits เวอร์ชันสมัยใหม่เขียนด้วยอะไร

    • ตามบทความบอกว่าเป็น C# และปริมาณโค้ดอย่างน้อย 10 เท่า
      ผมชอบเกมนี้มากจริง ๆ เคยมีแพ็กเกจ Forth สำหรับ C64 ด้วย แต่ไม่เคยเชื่อมโยงได้เลยว่าเกมนี้สร้างด้วยสิ่งนั้น
    • ใช้ Unity และ C#
  • ซื้อ Human Resource Machine มาและเล่นสนุกเป็นส่วนใหญ่ จนกระทั่งมันยากเกินไป
    ดูเหมือนเป็นแนวคิดเดียวกับ ChipWits คือเอาการโปรแกรมแบบใช้สแตกมาทำเป็นเกม
    ถ้ามีใครเคยเล่นทั้งสองเกม อยากรู้ว่าเทียบกันแล้วเป็นอย่างไร