- 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
มีบทความที่เขียนไว้ว่า ทำไมจึงสร้าง ChipWits ด้วย FORTH ในปี 1984
https://chipwits.com/2023/04/08/forth-programming-language-g...
ขอบคุณที่สร้างเกมที่เคยชอบ ได้ลองเดโมใหม่แล้ว และเพิ่มไว้ในรายการที่อยากได้บน Steam แล้วด้วย
Forth เป็นภาษาที่อยากเรียนมาหลายปีแล้ว
ในคอมพิวเตอร์ยุคเก่า ถ้าต้องการโปรแกรมที่เร็วก็มีตัวเลือกเป็น ภาษาแอสเซมบลี ถ้าช้าหน่อยก็ไม่เป็นไรก็ใช้ BASIC แต่ที่น่าสนใจคือ Forth ดูเหมือนค่อนข้างระดับสูง แต่ยังคงเป็นภาษาที่มี “ความเร็วระดับกลาง”
เป็นภาษาแบบ stack-based
https://www.forth.com/starting-forth/
แค่เสียบสาย USB เข้ากับคอมพิวเตอร์แล้วเปิดโปรแกรมเทอร์มินัลก็เริ่มได้ทันที จึงเหมาะมากสำหรับการดื่มด่ำกับภาษาอย่างเต็มที่
อย่างไรก็ตาม สินค้าที่มาจากออสเตรเลียอาจใช้เวลาหลายเดือนกว่าจะมาถึง จึงควรมองหาผู้จัดจำหน่ายใกล้ตัวก่อน
อีกวิธีที่ดีคือเรียนแบบปี 1984 คือเปิด emulator อย่าง Commodore 64 หรือ Apple ][ บนคอมพิวเตอร์สมัยใหม่ แล้วติดตั้งสภาพแวดล้อมพัฒนา Forth ไว้ในนั้น
เอกสารในยุคนั้นเขียนโดยตั้งใจให้ผู้เริ่มต้นจริง ๆ อ่าน จึงทำตามได้ง่ายมาก และบนอินเทอร์เน็ตก็มี PDF สแกนฟรีอยู่มากมาย
ง่ายและสนุก แต่ถึงจุดหนึ่งมันง่ายอย่างไม่น่าเชื่อจนบางคนอาจรู้สึกว่าพื้นฐานเกินไป หรือเริ่มอยากข้ามจากการทำ toy implementation ไปสู่สิ่งที่จริงจังกว่านั้น
ต้อง จัดการ stack เอง จึงค่อนข้างยุ่งยาก และการสร้าง FORTH เองก็สนุกดี ไม่จำเป็นต้องทำด้วยภาษาแอสเซมบลีเสมอไป ก่อนหน้านี้เคยทำภาษาสคริปต์คล้าย Forth ด้วย C++ ด้วย
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 แบบเต็มตัว
ชอบน้ำเสียงของผู้เขียนตั้งแต่ตอนนี้แล้ว
เช่น:
ผลงานที่ออกมาอย่างสม่ำเสมอและมหาศาลน่าประทับใจมาก แม้จะไม่ได้เห็นด้วยทั้งหมดกับปรัชญา Collapse แต่ mailing list ของ DuskOS ก็มีปริมาณทราฟฟิกกำลังดีสำหรับอ่านเงียบ ๆ
หลังจากเห็นงานของ Virgil ก็ลองแตะ Forth นิดหน่อย และปีที่แล้วใช้เวลา decompile SmithForth[1] ด้วยมือ
น่าทึ่งที่ต้องใช้ภาษาแอสเซมบลีเพียงน้อยมากในการ bootstrap ภาษา เข้าใจได้เต็มที่เลยว่า Forth สามารถให้ REPL ในสภาพแวดล้อม embedded ได้ และดูสนุกกว่าวงจรการพัฒนาทั่วไปที่ได้ยินกันบ่อย ๆ มาก
[0]:https://duskos.org/
[1]:https://dacvs.neocities.org/SF/
หลังจากนั้นได้อ่านหน้า 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 ขนาดค่อนข้างใหญ่ตัวหนึ่งที่ไม่ได้แตะมานานกว่า 3 ปี แล้วไล่อ่านซอร์ส ก็ไม่มีปัญหาเลยในการเข้าใจว่ามันทำอะไร
ผมไม่คิดว่าโค้ด Perl อ่านซ้ำยากกว่าภาษาโปรแกรมมิงส่วนใหญ่ ความยากขึ้นอยู่กับว่านักพัฒนาชำนาญภาษานั้นแค่ไหน และครั้งสุดท้ายที่เขียนโค้ดด้วยภาษานั้นคือเมื่อไหร่มากกว่า
ถ้าภาษาขึ้นสนิมไปมาก หรือเดิมทีก็ไม่ได้เชี่ยวชาญอยู่แล้ว ไม่ว่าภาษาไหน การกลับไปดูโค้ดเก่าก็ยากทั้งนั้น
แน่นอนว่าถ้าไม่ใช่โค้ดของตัวเองก็ยิ่งยากขึ้น และคุณภาพการเขียนโค้ดก็มีผลมากเช่นกัน ภาษาไหน ๆ ก็มีโค้ดขยะเยอะ และถ้ามันเป็นขยะตั้งแต่แรก เวลาผ่านไปก็ไม่ได้ทำให้ดีขึ้น
ผมว่า Forth เขียนยาก แต่อ่านง่าย
ตอนเด็ก ๆ เล่นบน Commodore 64 เยอะมาก
เป็นเกมที่แปลกใหม่ น่าสนใจ และสนุก
ไม่อยากสแปมใน Hacker News แต่ถ้าเคยเล่นต้นฉบับ ผมอยากฟังความเห็นต่อเวอร์ชันรีบูตมาก: https://chipwits.com
ตอนเด็ก ๆ ผมอยากได้เกมนี้มากจริง ๆ
ทำให้รู้สึกว่าตัวเองแก่แล้วจริง ๆ
สงสัยว่า ChipWits เวอร์ชันสมัยใหม่เขียนด้วยอะไร
ผมชอบเกมนี้มากจริง ๆ เคยมีแพ็กเกจ Forth สำหรับ C64 ด้วย แต่ไม่เคยเชื่อมโยงได้เลยว่าเกมนี้สร้างด้วยสิ่งนั้น
ซื้อ Human Resource Machine มาและเล่นสนุกเป็นส่วนใหญ่ จนกระทั่งมันยากเกินไป
ดูเหมือนเป็นแนวคิดเดียวกับ ChipWits คือเอาการโปรแกรมแบบใช้สแตกมาทำเป็นเกม
ถ้ามีใครเคยเล่นทั้งสองเกม อยากรู้ว่าเทียบกันแล้วเป็นอย่างไร