ในโลกของภาษาโปรแกรมและระบบปฏิบัติการ กำลังมีการปฏิวัติอย่างเงียบ ๆ เกิดขึ้น เอกสารงานวิจัยชิ้นใหม่ที่เสนอการรวมกระบวนทัศน์ของ Unix และ Smalltalk เข้าด้วยกัน ได้จุดประกายการอภิปรายอย่างร้อนแรงในหมู่นักพัฒนาที่ใฝ่ฝันถึงระบบคอมพิวเตอร์แบบองค์ประกอบที่ปรับเปลี่ยนได้มากขึ้น บทสนทนานี้เป็นตัวแทนของกระแสการเคลื่อนไหวที่กำลังเติบโตเพื่อฟื้นคืนจิตวิญญาณแห่งนวัตกรรมจากยุครุ่งเรืองของคอมพิวเตอร์ ในขณะเดียวกันก็สร้างต่อจากรากฐานสมัยใหม่
แก่นแนวคิด: ตัวปฏิบัติการเป็นเมธอด
ข้อเสนอหลักจาก Joel Jakubovic นักวิจัยจาก Charles University เสนอให้มองตัวปฏิบัติการของ Unix เป็นเมธอดของ Smalltalk และมองกระบวนการต่าง ๆ ว่าเป็นการกระตุ้นทำงานของเมธอด การเปลี่ยนแนวคิดที่ดูเหมือนเรียบง่ายนี้อาจเปลี่ยนแปลงวิธีที่เราคิดเกี่ยวกับการประกอบสร้างซอฟต์แวร์ได้ แทนที่จะเป็นแอปพลิเคชันขนาดใหญ่แบบรวมศูนย์ เราจะได้ทำงานกับส่วนประกอบเล็ก ๆ นับไม่ถ้วนที่นำกลับมาใช้ใหม่ได้ และสื่อสารกันผ่านการส่งข้อความ วิธีการนี้ประสานกลมกลืนกับหลักปรัชญาหลายภาษาของ Unix ในขณะเดียวกันก็นำความสะดวกสบายในการพัฒนาที่ได้รับการยกย่องของ Smalltalk สู่ระบบกระแสหลัก
วิสัยทัศน์นี้เชื่อมโยงโดยตรงกับความพยายามทางประวัติศาสตร์ในการผสมผสานโลกทั้งสองนี้ ดังที่ผู้แสดงความคิดเห็นหนึ่งระบุ Xerox PARC พยายามนำสภาพแวดล้อมการเขียนโปรแกรมของพวกเขาสู่ UNIX ตั้งแต่ช่วงปลายทศวรรษ 1980 แล้ว ด้วยโปรเจกต์เช่น Interlisp-D และ Cedar ที่ย้ายมาใช้ ความพยายามเหล่านี้แสดงให้เห็นถึงการตระหนักรู้ในยุคเริ่มต้นว่าการพัฒนาสไตล์โต้ตอบแบบอิมเมจมีข้อได้เปรียบที่สำคัญซึ่งคุ้มค่าที่จะรักษาไว้ แม้ภายในระบบนิเวศของ Unix
แนวคิดทางเทคนิคที่กล่าวถึง:
- Unix executable ในฐานะเมธอดของ Smalltalk
- โปรเซสในฐานะการเรียกใช้เมธอด
- การเขียนโปรแกรมแบบเน้นข้อความ (Message-oriented programming)
- อิมเมจหน่วยความจำแบบถาวร (Persistent memory images)
- ระบบปฏิบัติการแบบพื้นที่แอดเดรสเดียว (Single-address space operating systems) (Opal)
- การจัดเก็บข้อมูลถาวรแบบตั้งฉาก (Orthogonal persistence)
- การออกแบบซอฟต์แวร์แบบคอมโพเนนต์
- การประกอบโปรเซสแบบละเอียด (Fine-grained process composition)
ชุมชนแห่งผู้ฝันและผู้สร้าง
การอภิปรายเผยให้เห็นชุมชนนักพัฒนาที่มีชีวิตชีวาซึ่งทำงานอย่างเงียบ ๆ เพื่อเป้าหมายที่คล้ายกันมานานหลายปี ผู้แสดงความคิดเห็นหนึ่งแบ่งปันการเดินทางกว่าทศวรรษของพวกเขา ที่ฝันถึงการสร้างระบบปฏิบัติการสมัยใหม่ที่มีความสามารถในการปรับเปลี่ยนสูงและส่งเสริมการออกแบบซอฟต์แวร์แบบเป็นส่วนประกอบ โดยได้รับแรงบันดาลใจจาก Smalltalk-80, Lisp machines, Plan 9 และโปรเจกต์ STEPS ของ Alan Kay โปรเจกต์ MallowOS ของพวกเขาเป็นตัวแทนของนวัตกรรมระดับรากหญ้าที่งานวิจัยนี้สร้างแรงบันดาลใจได้อย่างแท้จริง
ฉันฝันมานานแล้วที่จะสร้างระบบปฏิบัติการสมัยใหม่ที่ปรับเปลี่ยนได้สูงและส่งเสริมการออกแบบซอฟต์แวร์แบบเป็นส่วนประกอบ และฉันได้รวบรวมความคิดมากมายและอ่านหนังสือเป็นจำนวนมาก
การสนทนายังเน้นย้ำการนำไปใช้จริงที่มีอยู่แล้ว โปรเจกต์ liballocs ของ Stephen Kell และระบบ Woosh (ที่เพิ่งอัปโหลดไปยัง SourceForge) แสดงให้เห็นว่าแนวคิดเหล่านี้ไม่ใช่แค่ทฤษฎี โปรเจกต์เหล่านี้แสดงเส้นทางที่เป็นรูปธรรมสู่การทำให้การสังเคราะห์ Unix-Smalltalk เป็นจริง โดย Woosh มีความเกี่ยวข้องเป็นพิเศษเพราะมันนำแนวคิดที่คล้ายกันเกี่ยวกับกระบวนการ Unix ขั้นละเอียดเป็นหน่วยการคำนวณไปใช้แล้ว
อิทธิพลสำคัญทางประวัติศาสตร์ที่กล่าวถึงในการอภิปราย:
- สภาพแวดล้อม Smalltalk-80
- สภาพแวดล้อมเครื่อง Lisp (Symbolics Genera)
- โครงการของ Apple: Dylan, Bauhaus OS, OpenDoc
- ระบบปฏิบัติการ Plan 9
- Xerox PARC: Interlisp-D, Cedar
- NeXTSTEP/macOS
- Etoile (เดสก์ท็อปที่ใช้ GNUstep เป็นฐาน)
- โครงการ liballocs ของ Stephen Kell
- ระบบ Woosh
บริบททางประวัติศาสตร์และความเกี่ยวข้องสมัยใหม่
ผู้แสดงความคิดเห็นอภิปรายอย่างกว้างขวางถึงแบบอย่างทางประวัติศาสตร์สำหรับงานนี้ ความเชื่อมโยงระหว่าง Objective-C และ Smalltalk ผ่านโปรเจกต์เช่น NeXTSTEP และ Etoile แสดงให้เห็นว่าแนวคิดเหล่านี้มีอิทธิพลต่อระบบกระแสหลักอย่างไร Etoile สภาพแวดล้อมเดสก์ท็อปที่ใช้พื้นฐานจาก GNUstep จากปลายทศวรรษ 2000 ยอมรับแรงบันดาลใจจาก Smalltalk ภายในกรอบที่เข้ากันได้กับ Unix ซึ่งแสดงให้เห็นว่าการสังเคราะห์นี้สามารถบรรลุผลได้ในทางปฏิบัติ
การอภิปรายยังกล่าวถึงแนวคิดของอิมเมจหน่วยความจำถาวรที่มักถูกเข้าใจผิด แม้จะถูกวิพากษ์วิจารณ์นอกชุมชน Smalltalk/Lisp วิธีการนี้สะท้อนให้เห็นอย่างใกล้ชิดกับการปฏิบัติของ IDE สมัยใหม่และการใช้งานระบบไฟล์ ดังที่นักพัฒนาคนหนึ่งระบุ IDE ในปัจจุบันใช้เลเยอร์ระบบไฟล์เสมือนที่จำลองความสามารถหลายอย่างแบบอิมเมจ ซึ่งชี้ให้เห็นว่าเราได้ค่อย ๆ บรรจบกันไปสู่สภาพแวดล้อมแบบ Smalltalk โดยไม่รู้ตัว
ความท้าทายด้านประสิทธิภาพและแนวทางแก้ไข
ข้อกังวลในทางปฏิบัติที่สำคัญที่สุดที่ถูกหยิบยกขึ้นมาคือเรื่องค่าใช้จ่ายด้านประสิทธิภาพ การสร้างกระบวนการ Unix สำหรับทุกครั้งที่มีการเรียกใช้เมธอด ตามที่เอกสารเสนอ โดยทั่วไปแล้วจะเกิดต้นทุนที่ยอมรับไม่ได้ อย่างไรก็ตาม งานวิจัยนี้ได้อภิปรายถึงกลยุทธ์การเพิ่มประสิทธิภาพหลายอย่างที่อาจทำให้แนวทางนี้มีความเป็นไปได้ วิธีแก้ปัญหาที่เป็นไปได้เหล่านี้เป็นตัวแทนของพื้นที่ที่น่าตื่นเต้นสำหรับการพัฒนาในอนาคต ซึ่งสร้างสมดุลระหว่างความสง่างามเชิงแนวคิดของกระบวนการขั้นละเอียด กับข้อกำหนดด้านประสิทธิภาพของคอมพิวเตอร์สมัยใหม่
การสนทนายังอ้างอิงถึงงานที่เกี่ยวข้องในระบบปฏิบัติการแบบ single-address space เช่น Opal ซึ่งสามารถให้รากฐานทางสถาปัตยกรรมสำหรับการนำไปใช้ที่มีประสิทธิภาพ สิ่งนี้ชี้ให้เห็นว่าอุปสรรคด้านประสิทธิภาพอาจถูกเอาชนะได้ผ่านการออกแบบระบบที่ชาญฉลาด แทนที่จะละทิ้งแนวคิดหลัก
เส้นทางสู่การก้าวต่อไป
การตอบสนองจากชุมชนแสดงให้เห็นถึงความตื่นเต้นอย่างแท้จริงในการรื้อฟื้นและพัฒนาต่อยอดแนวคิดเหล่านี้ นักพัฒนากำลังพิจารณาวิธีการปรับแนวคิดโดยใช้ภาษาสมัยใหม่อย่าง Rust ในขณะเดียวกันก็ใช้ประโยชน์จากส่วนประกอบเคอร์เนลที่มีอยู่ การอภิปรายครอบคลุมตั้งแต่การพิจารณาทางทฤษฎีเกี่ยวกับการเขียนโปรแกรมเชิงข้อความ (ตามที่ Alan Kay จินตนาการไว้แต่แรก) ไปจนถึงกลยุทธ์การนำไปใช้ในทางปฏิบัติโดยใช้เครื่องมือร่วมสมัย
สิ่งที่ปรากฏออกมาคือภาพของการปรับปรุงแบบค่อยเป็นค่อยไปและวิวัฒนาการ แทนที่จะเป็นการแทนที่แบบปฏิวัติ เป้าหมายไม่ใช่การทิ้ง Unix แต่เพื่อช่วยให้มันกลายเป็นเวอร์ชันที่ดีที่สุดของตัวมันเอง นั่นคือระบบที่รวมเอาด้านที่มีค่าที่สุดของสภาพแวดล้อมการเขียนโปรแกรมของ Smalltalk เข้ามา ในขณะเดียวกันก็ยังคงความเข้ากันได้และประสิทธิภาพไว้ แนวทางที่ไตร่ตรองอย่างรอบคอบนี้อาจส่งมอบตามคำสัญญาที่ค้างคาอยู่บริเวณขอบของการคำนวณมานานหลายทศวรรษได้ในที่สุด
ดูเหมือนว่าถึงเวลาที่เหมาะสมสำหรับการสังเคราะห์นี้ ด้วยความสนใจที่เพิ่มขึ้นในประสบการณ์ของนักพัฒนา สถาปัตยกรรมแบบองค์ประกอบ และความปลอดภัยในการเขียนโปรแกรมระบบ สภาวะต่าง ๆ ก็พร้อมสำหรับยุคฟื้นฟูศิลปะของแนวคิดที่มีความสำคัญทางประวัติศาสตร์เหล่านี้ การอภิปรายในชุมชนชี้ให้เห็นว่าเราอาจกำลังเป็นพยานในระยะเริ่มต้นของการเปลี่ยนแปลงที่มีความหมายในวิธีที่เรามโนภาพและสร้างระบบซอฟต์แวร์