จนถึงตอนนี้ยังชอบวิทยานิพนธ์ปริญญาเอกของ Michael Franz ลูกศิษย์ของ Wirth ที่ได้อ่านครั้งแรกในปี 1994 มาก
ปัจจุบันเขาเป็นศาสตราจารย์ที่ UC Irvine และยังเป็นอาจารย์ที่ปรึกษาวิทยานิพนธ์ของ Andreas Gal เรื่อง tracing tree ซึ่งภายหลังกลายเป็น TraceMonkey ด้วย
ถ้านับในหมวดอัครสาวกของซอฟต์แวร์ที่เรียบง่าย ถูกต้องแม่นยำ และมนุษย์เข้าใจได้ Alan Kay ก็ยังอยู่กับเราเช่นกัน
มีข้อความที่ Dijkstra เขียนไว้เองใน EWD1308 เกี่ยวกับเรื่องนี้
ในปี 1968 Communications of the ACM ตีพิมพ์งานเขียนของเขาในชื่อ “The goto statement considered harmful” และต่อมางานชิ้นนั้นก็มักถูกอ้างถึงโดยผู้เขียนที่น่าเสียดายว่าอ่านแค่ชื่อ จนกลายเป็นรากฐานสำคัญของชื่อเสียงของเขา และเป็นต้นแบบของรูปแบบชื่อ “X considered harmful”
เดิมทีเขาส่งบทความในชื่อ “A case against the goto statement” แต่เพื่อให้ตีพิมพ์ได้เร็ว บรรณาธิการจึงเปลี่ยนเป็น “จดหมายถึงบรรณาธิการ” และตั้งชื่อใหม่ตามความคิดของตนเอง ซึ่งบรรณาธิการคนนั้นก็คือ Niklaus Wirth
[1] Transcription - https://www.cs.utexas.edu/%7EEWD/transcriptions/EWD13xx/EWD1...
PDF - https://www.cs.utexas.edu/%7EEWD/ewd13xx/EWD1308.PDF
2 ความคิดเห็น
แม้แต่ Kent Beck ก็ได้เขียนความทรงจำถึงศาสตราจารย์ Niklaus Wirth ไว้ด้วยนะครับ
https://tidyfirst.substack.com/p/niklaus-wirth-1934-2024
ได้ยินว่าศาสตราจารย์ Joe Armstrong ก็ได้รับอิทธิพลจากศาสตราจารย์ Niklaus Wirth ด้วย ดูท่าจะเป็นบุคคลที่ยิ่งใหญ่จริง ๆ ครับ
ความคิดเห็นใน Hacker News
นอกจากผลงานด้านการออกแบบภาษาแล้ว Niklaus Wirth ยังทิ้งมุกเล่นคำที่ยอดเยี่ยมที่สุดมุกหนึ่งไว้ด้วย
นามสกุลเดิมออกเสียงคล้าย “Virt” แต่ในสหรัฐฯ ทุกคนเรียกเขาว่า “Worth” เขาจึงพูดติดตลกว่า “ในยุโรป ผมถูกเรียกด้วยชื่อ แต่ในสหรัฐฯ ผมถูกเรียกด้วยค่า”
ถ้ามีวิดีโอปฏิกิริยาของผู้ฟังตอนนั้น คงอยากดูมาก
https://en.wikiquote.org/wiki/Niklaus_Wirth
https://lists.racket-lang.org/users/archive/2014-July/063519...
เพราะ “by value” ตั้งใจให้ออกเสียงรวมชื่อกับนามสกุลจนฟังคล้าย Nickles Worth
นอกเหนือจากผลงานมากมาย Wirth ยังเป็นฮีโร่ของ Joe Armstrong และมีอิทธิพลอย่างมากต่อความเรียบง่ายแบบ Armstrong
Joe มักอ้างคำพูดของ Wirth ที่ว่า “หน้าต่างซ้อนกันอาจดีกว่าหน้าต่างแบบไทล์ก็ได้ แต่ไม่ได้ดีกว่ามากพอจะคุ้มกับต้นทุนความซับซ้อนในการทำให้มันทำงาน”
สิ่งที่น่าประทับใจอีกอย่างคือในงานสัมมนาฉลองอายุ 80 ปีที่ ETH เขาโชว์การพอร์ต Oberon ใหม่ไปยัง CPU ที่สร้างเอง ซึ่งรันอยู่บนบอร์ดพัฒนา FPGA แบบสุ่ม ๆ กับอุปกรณ์ต่อพ่วง USB และสักวันหนึ่งก็อยากเป็นคนวัย 80 แบบนั้นบ้าง
จุดยืนของเขาต่อการปรับแต่งคอมไพเลอร์ก็คล้ายกัน คือมองว่าควรเพิ่ม optimization pass ก็ต่อเมื่อมันช่วยปรับปรุง เวลาที่คอมไพเลอร์ใช้คอมไพล์ตัวเอง เท่านั้น
Oberon เองก็ตั้งใจรองรับแค่ cooperative multitasking เท่านั้น
https://www.youtube.com/watch?v=EXY78gPMvl0
ตอนแรกเขียนว่า “worthwhile” แต่เล่นคำจนเหมือนจะทะลุออกนอกจอ
นอกจากภาษาของ Wirth แล้ว ยังชอบผลงานอย่าง อัลกอริทึม + โครงสร้างข้อมูล = โปรแกรม และการกลั่นกรองแบบเป็นขั้นเป็นตอนด้วย
Pascal เป็นหนึ่งในภาษาแรก ๆ ของผมเหมือนกับหลายคน และจนถึงตอนนี้ก็ยังชอบในรูปแบบ Delphi และ Free Pascal
RIP, guruji
เหตุผลที่แก้จาก guru เป็น guruji เพราะในภาษาฮินดี ji เป็นปัจจัยแสดงความเคารพ และแน่นอนว่า guru เองก็เป็นคำที่มีความเคารพอยู่แล้ว
ผมเป็นอดีตนักศึกษาของเขา
เขาเป็นหนึ่งในคนที่เปลี่ยนผมจากวัยรุ่นที่เคาะคีย์บอร์ดให้ทุกอย่างทำงานได้ ไปเป็น โปรแกรมเมอร์ที่ชำนาญ ซึ่งคิดก่อนจะเขียนโค้ด
ก่อนจะได้พบเขาที่มหาวิทยาลัย ผมก็เขียนโปรแกรมด้วย Oberon อยู่แล้ว เพราะฝั่ง Amiga มีโปรแกรมเมอร์จำนวนมากที่ใช้ภาษาของ Wirth และผมจะคิดถึงเขามาก
นักศึกษาปริญญาตรีทุกคนยำเกรงเขา แต่ดูเหมือนเขาจะไม่ได้สนุกกับการสอนระดับปริญญาตรีเป็นพิเศษ
อย่างไรก็ตาม ต่างจากอาจารย์คนอื่น ๆ เขาไม่ได้พยายามโยนความรับผิดชอบนั้นให้ผู้ช่วยสอน และดูเหมือนเขามีความสัมพันธ์ที่ดีกับนักศึกษาปริญญาโท
ในวิชาการสร้างคอมไพเลอร์ เขาดูมีส่วนร่วมมากขึ้น อาจเพราะนักศึกษามีประสบการณ์เพิ่มขึ้นบ้างแล้ว และตอนนั้นเขากำลังปรับปรุงการออกแบบ Oberon แบบวนซ้ำอยู่
ในการสอบปากเปล่า เขาให้ผมลองแก้ปัญหา dangling ELSE ของ Pascal และผมตอบว่าจะทำให้ไวยากรณ์ของภาษาประณีตขึ้นเพื่อแก้ความกำกวม
เขาบอกว่ามันน่าจะทำงานได้ แต่ซับซ้อนเกินไป แล้วถามว่าผมได้แนวคิดนั้นมาจากไหน สุดท้ายผมก็สารภาพว่าเห็นมาจาก “Dragon Book” ซึ่งแทบจะเป็นคู่แข่งกับตำราของเขา
ภายหลังผมจึงตระหนักว่าคำตอบที่เขาต้องการคือการเปลี่ยนภาษาให้บังคับใช้ END อย่างชัดเจน เหมือนใน Modula-2 และ Oberon
ในวงส่วนตัว เขาเป็นคนคุยสนุกและมีเกร็ดเรื่องคอมพิวเตอร์มากมาย
ในที่สาธารณะเขาอาจดูค่อนข้างยึดมั่นในความคิดตัวเอง แต่ในวงส่วนตัวเขาใจกว้างต่อ “แนวนอกรีต” มากกว่า
ครั้งหนึ่งมีการพูดถึง Perl ผมไม่ได้คาดหวังว่าเขาจะพูดอะไรดี ๆ แต่กลับกลายเป็นว่าเขามองว่า ภาษาเพื่อ pattern matching/การประมวลผลข้อความ มีช่องทางใช้งานเฉพาะที่สมเหตุสมผล และกล่าวถึง SNOBOL ว่าเป็นภาษารุ่นก่อนในสายนี้
ผมเพิ่งกู้คืน Amiga 500 ที่ติดตั้ง Workbench 2.1 ไว้ และอยากรำลึกถึงเขา
เพราะฝั่ง PC เคยชินกับ Turbo Pascal ไปแล้ว
begin
เป็นข่าวที่น่าเศร้าจริง ๆ
สงสัยว่ามีแหล่งข้อมูลที่ดีกว่า Twitter ไหม
แก้ไข: https://lists.inf.ethz.ch/pipermail/oberon/2024/016856.html
Wirth เป็นอัครสาวกผู้ยิ่งใหญ่ที่สุดที่ยังเหลืออยู่ของ ซอฟต์แวร์ที่เรียบง่าย ถูกต้องแม่นยำ และมนุษย์เข้าใจได้ และตอนนี้เหลือเพียง Hoare กับ Moore โดยดูเหมือน Moore เองก็ส่งต่ออำนาจจริงใน GreenArrays ให้คนรุ่นใหม่แล้ว
คนรุ่นใหม่อาจไม่รู้ว่างานของเขามีความหมายอย่างไร ไม่ใช่แค่ในเชิงวิชาการ แต่ในเชิงปฏิบัติด้วย จึงขอทิ้งไว้สักสองสามข้อ
สภาพแวดล้อมการพัฒนาแบบบูรณาการ อย่างที่เรารู้จักในวันนี้ถือกำเนิดจาก Turbo Pascal ซอฟต์แวร์ Macintosh ยุคแรกส่วนใหญ่เขียนด้วย Pascal และ MacPaint ก็เป็นตัวอย่างหนึ่ง
Robert Griesemer หนึ่งในสามผู้ออกแบบดั้งเดิมของ Go เป็นลูกศิษย์ของ Wirth และได้รับปริญญาเอกจากงานขยาย Oberon อีกทั้งภาษาต่าง ๆ ของ Wirth ยังเป็นแรงบันดาลใจที่เห็นได้ชัดมากต่อการออกแบบ Newsqueak
TeX ก็เขียนด้วย Pascal
end;
end.
เพียงแต่งานส่วนใหญ่ไม่ได้รับความสนใจ และบทเพลงอันเงียบงันถูกกลบด้วยเสียงอึกทึกของซอฟต์แวร์ยักษ์ใหญ่ที่ซับซ้อน เปราะบาง และดึงดูดสายตา
บทเพลงนั้นไม่เคยหายไป เพียงแค่ต้องปรับให้ตรงความถี่
https://twitter.com/odersky/status/1742618391553171866
ปัจจุบันเขาเป็นศาสตราจารย์ที่ UC Irvine และยังเป็นอาจารย์ที่ปรึกษาวิทยานิพนธ์ของ Andreas Gal เรื่อง tracing tree ซึ่งภายหลังกลายเป็น TraceMonkey ด้วย
Niklaus Wirth ยังเป็นคนที่เปลี่ยนชื่อบทความของ Dijkstra เป็น Goto Statement Considered Harmful ด้วย
https://en.wikipedia.org/wiki/Considered_harmful#cite_ref-6
ในปี 1968 Communications of the ACM ตีพิมพ์งานเขียนของเขาในชื่อ “The goto statement considered harmful” และต่อมางานชิ้นนั้นก็มักถูกอ้างถึงโดยผู้เขียนที่น่าเสียดายว่าอ่านแค่ชื่อ จนกลายเป็นรากฐานสำคัญของชื่อเสียงของเขา และเป็นต้นแบบของรูปแบบชื่อ “X considered harmful”
เดิมทีเขาส่งบทความในชื่อ “A case against the goto statement” แต่เพื่อให้ตีพิมพ์ได้เร็ว บรรณาธิการจึงเปลี่ยนเป็น “จดหมายถึงบรรณาธิการ” และตั้งชื่อใหม่ตามความคิดของตนเอง ซึ่งบรรณาธิการคนนั้นก็คือ Niklaus Wirth
[1] Transcription - https://www.cs.utexas.edu/%7EEWD/transcriptions/EWD13xx/EWD1...
PDF - https://www.cs.utexas.edu/%7EEWD/ewd13xx/EWD1308.PDF
ศาสตราจารย์ Wirth เป็นคนที่สร้างแรงบันดาลใจให้ผมอย่างมากตอนยังเด็ก
ตอนนั้นผมยังไม่เข้าใจอย่างแท้จริงว่าหนังสือของเขาเกี่ยวกับ Pascal นั้นสง่างามและเรียบง่ายเพียงใด แต่ก็อ่านอย่างตั้งใจ และติดตามการพัฒนาภาษา Oberon กับเวิร์กสเตชัน Lilith ด้วยความสนใจ
ตอนอายุ 13 ปี เขามาบรรยายที่ที่ไม่ไกลนัก น่าจะเป็น Johns Hopkins และพ่อก็พาผมไป
เป็นประสบการณ์ที่ยอดเยี่ยมจริง ๆ และอย่างที่เห็นในรูปที่ลิงก์ไว้[1] เขาเป็นคนใจดีมากและคอยให้กำลังใจอย่างไม่ขาด
[1]: https://mastodon.online/@raph/111693863925852135
เป็นวันที่น่าเศร้า
เขาเป็นยักษ์ใหญ่ของวงการคอมพิวติง และสมควรได้รับความสนใจมากกว่าที่เขาได้รับ
หลายอย่างคงจะออกมาดีกว่านี้ หากภาษาของเขาถูกใช้ในการพัฒนาซอฟต์แวร์อย่างแพร่หลายกว่านี้
หลังจากลองแตะ Basic บน C64/128 อยู่บ้าง ภาษาโปรแกรมมิง “ของจริง” ภาษาแรกที่ผมเรียนคือ Pascal
ผมเรียนด้วย UCSD Pascal บน Apple II ที่โรงเรียน และ Turbo Pascal 3.0 บน IBM PC โดย PC เครื่องนั้นยังไม่ใช่รุ่นหรูอย่าง AT ด้วยซ้ำ แต่เป็น PC แบบพกพาที่มี CRT สีอำพันในตัว
ตอนที่ผมซื้อ Amiga 500 นั้น Modula-2 เป็นที่นิยมมากบน Amiga และระบบ M2Amiga ก็เป็นสภาพแวดล้อมการพัฒนาที่แข็งแกร่งที่สุดจริง ๆ
Modula-2 ทำให้การสร้างโปรแกรมที่มีโครงสร้างและแข็งแรงทำได้ง่าย และแนวคิดเรื่องโมดูลก็ล้ำยุคมาก
ตรงข้ามกับโลกของ C ที่ยังคงคอมไพล์ไฟล์เฮดเดอร์ซ้ำไปอีกนานหลังจากนั้น
Go ในปัจจุบันนำหลายสิ่งมาจาก Modula-2 และนั่นทำให้ผมถูกดึงดูดเข้าหา Go ทันที
การที่ Robert Griesemer เคยเป็นนักเรียนของ Wirth ก็ไม่ใช่เรื่องบังเอิญ
แม้ในยุค 90 ขณะที่ MS-DOS ยังถูกใช้อยู่ Turbo Pascal ก็เป็นภาษาหลักของทุกคนบน PC
มันทรงพลัง แต่ก็เข้าถึงได้แม้สำหรับคนที่ไม่ใช่นักพัฒนาซอฟต์แวร์เต็มเวลา รับส่วนขยายจาก Modula-2 มาไม่น้อย และยังมีระบบอ็อบเจ็กต์ที่ดีด้วย
มันถึงจุดสูงสุดในเวอร์ชัน 6 และ 7 และด้วยความเร็วท่วมท้นของ UI แบบตัวอักษรล้วน จึงอาจยังเป็นสภาพแวดล้อมการพัฒนาที่ผมชอบที่สุดจนถึงทุกวันนี้
Turbo Pascal ผสานสภาพแวดล้อมการพัฒนาที่ดีเข้ากับภาษาที่หาจุดสมดุลได้ยอดเยี่ยมระหว่างพลังและความเรียบง่าย
น่าเสียดายที่ผมรู้จักงานช่วงหลังของเขาอย่าง Oberon เพียงเลือนราง
ผมเคยบูตระบบ Oberon แบบเนทีฟบน 386 แล้วลองเล่นอยู่บ้าง ประสิทธิภาพและ GUI ทั้งระบบในยุคที่ PC ยังอยู่ในสมัย DOS นั้นน่าประทับใจอย่างยิ่ง
น่าเสียดายที่มันไม่ได้รับความสนใจมากกว่านี้
ถ้ามันสร้างแรงส่งได้ทันก่อนจะสายเกินไปในปลายยุค 80 ก็อาจประสบความสำเร็จอย่างมาก แต่ต้นยุค 90 Windows ก็ปรากฏตัวขึ้น
จากมุมมองแบบพิถีพิถัน จุดสูงสุดคือเมื่อเขาได้ตำแหน่ง นักพัฒนาแบบฟูลสแตก อย่างแท้จริง
เพราะเขาไม่ได้แค่ออกแบบ Oberon และระบบปฏิบัติการเท่านั้น แต่ยังออกแบบ CPU ที่ใช้รันมันด้วย
น่าประทับใจมาก และมีคุณค่าทางการศึกษาสูงด้วย
END.
Wirth เป็นผู้ออกแบบหลักของ Euler, PL360, ALGOL W, Pascal, Modula, Modula-2, Oberon, Oberon-2 และ Oberon-07
เขายังมีบทบาทสำคัญในการออกแบบและสร้าง Medos-2 สำหรับเวิร์กสเตชัน Lilith, ระบบปฏิบัติการ Oberon สำหรับเวิร์กสเตชัน Ceres และระบบออกแบบ·จำลองฮาร์ดแวร์ดิจิทัล Lola
ในปี 1984 เขาได้รับรางวัล ACM Turing Award จากการพัฒนาภาษาเหล่านี้
เป็นภาษาบรรยายฮาร์ดแวร์ที่เรียนรู้ง่าย ได้รับอิทธิพลจาก Pascal/Oberon ตรงข้ามกับ Verilog ที่ได้แรงบันดาลใจจาก C หรือ VHDL ที่ได้แรงบันดาลใจจาก Ada
ผมยังชอบสแต็กซอฟต์แวร์ทั้งหมดของ Wirth ด้วย
RISC-5 ที่เขียนด้วย Lola ไม่ควรสับสนกับ RISC-V และด้านบนของมันมีภาษา Oberon กับสภาพแวดล้อม Oberon
ถ้าจำไม่ผิด Lola สามารถสร้าง Verilog ได้ และแนวคิดน่าจะเป็นการให้นักศึกษาเริ่มจากบอร์ด FPGA แล้วสร้าง CPU, คอมไพเลอร์ และระบบปฏิบัติการของตัวเอง
ผมยังชอบคำคมมีไหวพริบของเขาด้วย
เหมือนเขาเคยพูดประมาณว่า “ผมเป็นศาสตราจารย์ที่เป็นโปรแกรมเมอร์ และเป็นโปรแกรมเมอร์ที่เป็นศาสตราจารย์”
เราต้องการโปรแกรมเมอร์/ศาสตราจารย์แบบนั้นมากขึ้น และเขาเป็นแรงบันดาลใจที่ชัดเจนสำหรับคนสายระบบ
MODULA-2 หายไปไม่นานหลังจากนั้น แต่ Pascal ยังใช้ในวิชาโปรแกรมมิงเบื้องต้นอยู่
ผมดีใจมากที่ภาษาเหล่านี้เป็นสิ่งที่ทำให้ผมได้สัมผัสการเขียนโปรแกรมเป็นครั้งแรก และ Wirth ก็มีที่ทางพิเศษมากในใจผม
งานออกแบบของเขาล้ำหน้ากว่ายุคอย่างแท้จริง
ผมก็อยากเรียน Modula มาตลอด แต่สุดท้ายไปเรียน Delphi แทน
ผมเริ่มบริษัทแรกโดยใช้ Delphi เป็นฐาน และ Delphi ก็มีพื้นฐานมาจาก Turbo Pascal
Wirth เป็นแรงบันดาลใจสำคัญ และการจากไปของเขาไม่ใช่ความสูญเสียเล็กน้อยเลย
หวังว่างานของเขาจะยังคงสร้างแรงบันดาลใจให้โปรแกรมเมอร์รุ่นใหม่ต่อไปอีกหลายชั่วรุ่น
หนึ่งในคำพูดของเขาคือ: “ชาวยุโรปโดยทั่วไปออกเสียงชื่อผมได้ถูกต้องว่า ‘Ni-klows Wirt’ แต่ชาวอเมริกันทำมันพังเป็น ‘Nick-les Worth’ โดยไม่มีข้อยกเว้น กล่าวคือ ชาวยุโรปเรียกผมด้วยชื่อ ส่วนชาวอเมริกันเรียกผมด้วยค่า”
ผมเขียนวิทยานิพนธ์ปริญญาตรีในหัวข้อการนำ ความเป็นโมดูลาร์ มาใช้กับภาษาสำหรับการเฝ้าระวังระบบแบบเรียลไทม์ และได้รับแรงบันดาลใจอย่างมากจากงานของเขา โดยเฉพาะ MODULA-2
https://news.ycombinator.com/item?id=38858993
เป็นวันที่น่าเศร้าในประวัติศาสตร์คอมพิวติง และเราได้สูญเสีย นักออกแบบภาษา ผู้ยิ่งใหญ่ ที่แสดงให้หลายคนเห็นแนวทางที่ดีกว่าสำหรับการเขียนโปรแกรมระบบ
ผมอยากดื่มฉลองให้ชีวิตนั้น และหวังว่าเขาจะอยู่ใน วัลฮัลลาแห่งการเขียนโค้ด ที่ไหนสักแห่ง
ความตายเป็นส่วนหนึ่งของชีวิต
สิ่งที่น่าเศร้ากว่านั้นมากคือเมื่อชีวิตพังทลายลงด้วยอัลไซเมอร์ ภาวะสมองเสื่อม หรือเพียงแค่ค่อย ๆ ช้าลงและอ่อนแอลง หรือเมื่อมันจบลงเร็วเกินไป หรือถูกใช้ไปอย่างสูญเปล่า
เขาใกล้จะอายุ 90 แล้ว และมีชีวิตที่ยืนยาว เปี่ยมอิทธิพล และเต็มเปี่ยม
ชีวิตแบบนั้นควรค่าแก่การเฉลิมฉลอง