CHAOS ของ James Gleick: ซอฟต์แวร์
(github.com/rudyrucker)- James Gleick's CHAOS: The Software เป็นรีลีสที่เปิดให้ใช้งานฟรีทั้งซอร์สโค้ด คู่มือ และไฟล์ปฏิบัติการของโปรแกรม Autodesk สำหรับ DOS จากปี 1991
- โปรแกรมนี้สร้างโดย Josh Gordon, Rudy Rucker และ John Walker โดย Rudy Rucker เขียนอัลกอริทึมส่วนใหญ่ และอัลกอริทึม Fractal Landscapes เขียนโดย John Walker
- โปรแกรมถูกสร้างขึ้นโดยหารือกับ James Gleick เกี่ยวกับหนังสือ Chaos: Making a New Science ของเขา และการเผยแพร่ครั้งนี้แจกจ่ายภายใต้ GNU license
- สามารถรันได้บนแทบทุกแพลตฟอร์มผ่าน DOSBox และ Release 1.1 มีไฟล์ปฏิบัติการ ไฟล์พารามิเตอร์ คู่มือผู้ใช้ และซอร์สโค้ดรวมอยู่ด้วย
- งานปรับปรุงหลักที่ยังเหลืออยู่คือการเพิ่มความละเอียดการแสดงผลหรือขนาดพิกเซล และการเลิกพึ่งพาโปรแกรม DOS TSR รุ่นเก่า metashel.exe ที่ใช้กับกราฟิก
การเปิดให้ใช้งานฟรีของโปรแกรม DOS จากปี 1991
- James Gleick's CHAOS: The Software เป็นรีลีสที่เปิดให้ใช้งานฟรีทั้งซอร์สโค้ด คู่มือ และไฟล์ปฏิบัติการของโปรแกรม Autodesk สำหรับ DOS จากปี 1991
- ผู้สร้างซอฟต์แวร์คือ Josh Gordon, Rudy Rucker และ John Walker
- Rudy Rucker เขียนอัลกอริทึมส่วนใหญ่
- อัลกอริทึม Fractal Landscapes เขียนโดย John Walker
- Josh Gordon รับผิดชอบอินเทอร์เฟซและการนำโค้ดอัลกอริทึมไปใช้งานเป็นจำนวนมาก
- โปรแกรมนี้ถูกสร้างขึ้นโดยหารือกับ James Gleick เกี่ยวกับหนังสือ Chaos: Making a New Science
- การเผยแพร่ครั้งนี้แจกจ่ายภายใต้ GNU license
การดาวน์โหลดและการรัน
- รายการดาวน์โหลด Release 1.1 มีสามส่วน
- The CHAOS executables and parameter files: ไฟล์ปฏิบัติการและไฟล์พารามิเตอร์
- The CHAOS User manual: คู่มือผู้ใช้
- The CHAOS source code: ซอร์สโค้ด
- โปรแกรม Chaos สามารถรันได้บนแทบทุกแพลตฟอร์มภายใน DOS shell ที่ชื่อ DOSBox
- รายละเอียดการรันเพิ่มเติมอยู่ที่ Releases page
การเปลี่ยนแปลงโค้ดและงานปรับปรุงที่ยังเหลือ
- ผู้ใช้สามารถแก้ไข Chaos code และอัปโหลดเวอร์ชันใหม่ได้
- ยังสามารถนำอัลกอริทึมไปต่อยอดเป็นโปรแกรมขนาดเล็กกว่าได้
- โค้ดออนไลน์ดูได้ที่ Chaos GitHub repository
- มีผู้สมัครเป็นงานอัปเกรดสำคัญที่ยังไม่ถูกแก้ไขอยู่สองข้อ
- เพิ่มความละเอียดการแสดงผลหรือขนาดพิกเซล
- เลิกใช้ DOS TSR เก่าของ MetaGraphics Software Corporation หรือโปรแกรมแบบ “terminate and stay resident” ชื่อ metashel.exe
- Chaos ใช้การเรียก metashel เพื่อจัดการกราฟิก
6 โมดูลที่อยู่ใน Chaos
- MANDEL: โปรแกรม Mandelbrot Set
- รวม quadratic และ cubic Julia set
- รวม quadratic และ cubic Mandelbrot set
- รวม Rudy set ซึ่งเป็น cubic connectedness map
- MAGNETS: โปรแกรม Pendulum and Magnets
- แสดงการเคลื่อนที่ทางฟิสิกส์แบบโกลาหล
- แสดง fractal attraction basin
- ATTRACT: โปรแกรม Strange Attractors
- แสดง Lorenz Attractor
- แสดง Logistic Map
- แสดง Yorke Attractors และ Henon Attractors
- GAME: โปรแกรม Barnsley Fractals
- แสดงแฟร็กทัลแบบ Iterated Function System เช่น fractal fern ที่มีชื่อเสียง
- FORGE: โปรแกรม Fractal Forgeries
- แสดงเมฆ แผนที่ เทือกเขา และดาวเคราะห์ที่สร้างจากแฟร็กทัลแบบสุ่ม
- TOY: โปรแกรม Toy Universes
- แสดง cellular automata
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนมัธยมปลาย ผมอ่านหนังสือเล่มนี้ และช่วงไล่เลี่ยกันก็ได้ดูการนำเสนอเกี่ยวกับ เซตแมนเดลบรอต
คนที่นำเสนอแสดง
z = z**2 + cพร้อมอธิบายว่าจำนวนเชิงซ้อนทำงานอย่างไร แล้วพอกลับบ้าน ผมก็ครุ่นคิดอย่างจริงจังว่าจะทำอย่างไรถึงจะแมปช่วงเล็ก ๆ ของเลขทศนิยมลอยตัวไปยังหน้าจอความละเอียดสูงของ Apple //e ได้สุดท้ายผมทำโปรแกรมที่รันได้สำเร็จ แต่พอลองรันดู มันแทบไม่คืบหน้าเลยจนถึงเวลาเข้านอน และผมก็ไม่รู้ด้วยว่าควรเปิดคอมพิวเตอร์ทิ้งไว้ทั้งคืนได้ไหม วันรุ่งขึ้นมาดู โปรแกรม BASIC ยังไปไม่ถึงตัวเซตหลักด้วยซ้ำ แค่วาดแถบริ้วรอบ ๆ อยู่เท่านั้น
ผมจึงรู้สึกว่าต้องมีคอมพิวเตอร์ที่เร็วขึ้น เลยอัปเกรดเป็น เครื่อง DOS 80286 และคิดว่านั่นทำให้ผมรัน FRACTINT ได้ FRACTINT เป็นการปรับแต่งที่ชาญฉลาดมาก ใช้การคำนวณจำนวนเต็มกับกลเม็ดหลายอย่างเพื่อเรนเดอร์เซตให้เร็วขึ้น และช่วยให้ผมเรียนรู้ได้มากว่า optimization คืออะไร
หนังสือเล่มนี้ รวมถึงหนังสืออย่าง K&R C และ Hackers ช่วยเปิดโลกความคิดของผมในช่วงมัธยมปลาย และพาผมไปสู่สายงานคอมพิวติ้งสมรรถนะสูง ระบบซับซ้อน และการจำลองสถานการณ์ ผลผีเสื้อยังมีบทบาทสำคัญในการทำความเข้าใจเรื่องเหตุและผลแบบคลาสสิกด้วย
ตอนนั้นผมเรียน C จากการดูไฟล์ซอร์ส และก่อนหน้านั้นก็ใช้ Turbo Pascal ปนกับแอสเซมบลีอยู่ ต่อมาจึงต่อยอดไปเป็น C++ และกลายเป็นภาษาหลักตลอดช่วงสำคัญของอาชีพฟรีแลนซ์ ดีใจที่ได้หวนคิดถึงมันอีกครั้ง
ผมถูกเรียกไปห้องครูใหญ่ตอนมัธยมปลายเพราะหนังสือ Chaos ของ Gleick
ผมหลงใหลแฟร็กทัลอย่างเต็มตัว แต่ที่บ้านมีแค่ IBM PC XT การเรนเดอร์เซตแมนเดลบรอตจึงช้าจนน่าทรมาน และพาเลตสีของ CGA ก็จำกัดมาก
ช่วงนั้นผมกับผู้สมรู้ร่วมคิดค้นพบว่าเครื่อง 386 ในห้องสมุดแทบไม่ได้ถูกใช้ค้นหาแค็ตตาล็อกเลย จึงเอาเครื่องเหล่านั้นมาใช้เป็นฟาร์มเรนเดอร์แฟร็กทัล เราจะปิดโปรแกรมแค็ตตาล็อก ใส่ฟลอปปีดิสก์ที่มีเรนเดอเรอร์เวอร์ชันล่าสุด ตั้งให้เรนเดอร์การซูมลึก ๆ แล้วปิดจอไว้ไม่ให้เป็นที่สงสัย จากนั้นค่อยกลับมาตรวจดูในคาบถัดไป
ผลลัพธ์น่าตื่นเต้นมาก และทำให้ผมสัมผัสได้ว่า การเข้าถึงทรัพยากรประมวลผล สร้างความแตกต่างได้มากแค่ไหน สุดท้ายก็จบแบบคุ้น ๆ คือถูกบรรณารักษ์จับได้และถูกรายงานว่าเป็น “การแฮ็ก”
หนังสือเล่มนี้เปลี่ยนชีวิตผม
ตอนมัธยมปลาย ผมแย่คณิตศาสตร์มาก แต่พอมีความสนใจแบบอุ่น ๆ ต่อสายศิลปะอยู่บ้าง เลยคิดว่าอาจทำอะไรอย่างสถาปัตยกรรมได้ จึงเลือกเรียนคณิตศาสตร์ขั้นสูง ในระบบเกรดของอังกฤษ ผมได้ U ซึ่งเทียบกับ “Unmarked” หมายถึงทำได้แย่จนกระดาษคำตอบไม่คุ้มจะให้คะแนนด้วยซ้ำ
ช่วงใกล้ ๆ กัน ระหว่างเดินไปเรื่อย ๆ ผมเห็นปกหนังสือที่มีกราฟิกแปลกและสวยที่สุดเท่าที่เคยเห็นมา แล้วคิดว่า “นี่มันอะไรกันแน่?” จึงหยิบขึ้นมา ภาพสีตรงกลางเล่มมีรูปที่คมชัดและชวนตะลึงยิ่งกว่าเดิม ผมจึงยืมหนังสือมาอ่านเพื่อหาคำตอบว่าภาพเหล่านั้นถูกวาดขึ้นมาได้อย่างไร
สรุปคือผมกลายเป็นคนที่เก่งคณิตศาสตร์พอสมควร และแฟร็กทัล โดยเฉพาะแฟร็กทัลเชิงสถิติ ก็กลายเป็นหัวข้อสำคัญในงานวิจัยปริญญาเอกของผมด้วย บางครั้งผมก็คิดว่าชีวิตคงเป็นอย่างไรถ้าไม่ได้เห็นภาพประหลาดเหล่านั้น อย่างมากก็น่าจะได้เป็นสถาปนิกธรรมดามาก ๆ คนหนึ่ง
ผมเคยคิดว่าวิทยาศาสตร์เป็นเรื่องของสถานะสุดท้าย เช่น ผสมสารเคมีสองชนิดแล้วได้ผลิตภัณฑ์ หรือแก้โจทย์คณิตศาสตร์แล้วได้คำตอบ
แต่แนวคิดที่ว่าส่วนที่น่าสนใจไม่ใช่ผลลัพธ์ หากเป็น กระบวนการ นั้นเป็นวิธีมองโลกแบบใหม่อย่างสิ้นเชิง ผมได้พบเป็นครั้งแรกว่า iteration ที่เอาเอาต์พุตกลับไปป้อนเป็นอินพุตของฟังก์ชันอีกครั้ง ไม่ใช่แค่สัญญาณรบกวนจาก feedback ธรรมดา ๆ
ชั่วชีวิตคนเราจะได้เจอการเปลี่ยนกระบวนทัศน์จริง ๆ สักกี่ครั้งกัน ผมคงได้เจอหนังสือที่ใช่ในวัยที่ใช่ และคนส่วนใหญ่ที่ทิ้งคอมเมนต์แบบนี้น่าจะอายุราว ๆ 50 ปีแล้วตอนนี้
เพียงแต่ผมไม่เคยเก่งคณิตศาสตร์ขึ้นได้จริง ๆ
การที่เอกสารนี้อยู่บน GitHub ของ Rudy Rucker ยิ่งเจ๋งเป็นสองเท่า
ผมอ่านหนังสือ “Infinity and the Mind” ของเขา แล้วกลับไปเรียนมหาวิทยาลัยอีกครั้งเพื่อเรียนเอกคณิตศาสตร์ หนังสือเล่มนั้นเปลี่ยนชีวิตผมไปในทางที่ดี
https://en.wikipedia.org/wiki/Rudy_Rucker
https://en.wikipedia.org/wiki/Postsingular
ตอนเป็นนักเรียนมัธยมปลายในปี 1987 ผมอ่าน Chaos แล้วก็ตกลงไปในโพรงกระต่ายทันที โดยเขียนโค้ดตัวดึงดูดลอเรนซ์บน Apple IIe ของโรงเรียน
ผมทึ่งกับความจริงที่ว่าไม่ว่าจะซูมตรงไหน ก็มีรายละเอียดเพิ่มขึ้นเสมอ ผมสงสัยว่ามนุษย์เป็นผู้ประดิษฐ์คณิตศาสตร์ขึ้นมาเพื่อสร้างรูปทรงเหล่านี้ หรือมันดำรงอยู่เป็นอิสระที่ไหนสักแห่งในจักรวาล รอให้ถูกค้นพบกันแน่ ประสบการณ์นั้นทำให้ช่วงวัยรุ่นของผมมีบทสนทนาเชิงปรัชญาตามมาอย่างมากมาย
โปรแกรม Applesoft BASIC ช้ามาก และผมเสียดายที่มันไม่ได้ผลักดันให้ผมเรียนแอสเซมบลี 6502
ผมได้ค่าที่วัดอยู่ และแทบจะเห็นอะไรคล้ายตัวดึงดูดแล้ว แต่ BASIC ช้าเกินไป ผมเลยต้องเรียนแอสเซมบลีเพื่อให้ได้การวัดที่ต้องการ
สุดท้ายผมดูเหมือนจะหมดความสนใจในฟิสิกส์และคณิตศาสตร์ แล้วขุดลึกกับคอมพิวเตอร์อย่างเดียวต่อมา ผ่านไป 40 ปีจนถึงตอนนี้ก็ยังทำแบบนั้นอยู่
ตอนมัธยมปลาย ผมชอบหนังสือเล่มนี้มาก และยังกลับมาอ่านอีกตอนมหาวิทยาลัย มันมีอิทธิพลต่อผมมาก ผู้เขียนเป็นนักเขียนที่ถ่ายทอดนักวิจัยหลายคนได้ดี และมีความสามารถยอดเยี่ยมในการอธิบาย ทฤษฎีและแนวคิด
ถ้าคุณชอบสาขานี้ Complexity Explorer ก็เป็นแหล่งข้อมูลที่ยอดเยี่ยม
https://www.complexityexplorer.org/
เป็นหนังสือที่ผมอ่านตอนเด็กและได้รับอิทธิพลมาก
เป็นหนึ่งในหนังสือและผู้เขียนที่ผมชอบที่สุด
หนังสือเล่มนี้เปิดใจผม และหลังจากอธิบายว่ามันเชื่อมโยงโดยตรงกับแนวคิด “สร้างระเบียบจากความโกลาหล” ในวารสารศาสตร์ภาพถ่าย ผมก็มอบสำเนาของผมให้กับติวเตอร์ด้านวารสารศาสตร์ภาพถ่าย จากนั้นแนวคิดนี้ก็กลายเป็นสิ่งที่นำไปใช้ได้ตลอดชีวิตการทำงานของผม
ตอนนี้คงต้องกลับไปค้นหนังสือเล่มอื่น ๆ ของเขาอีกครั้ง ซื้อเล่มนี้ใหม่อีกสักเล่ม และโคลน repository นี้ด้วย
ตอนเด็ก ๆ ผมเล่น ตัวสร้างแฟร็กทัล เยอะมาก และสนุกจริง ๆ ถ้าสนใจซอฟต์แวร์สมัยใหม่ที่คล้ายกัน ก็น่าดูรายการเหล่านี้
XaoS ตัวสร้าง/ตัวดูแฟร็กทัลแบบเรียลไทม์: https://github.com/xaos-project/XaoS
Apophysis 7X: https://github.com/xyrus02/apophysis-7x
Chaotica: https://www.chaoticafractals.com