The second [interface] (MouseX) is included here for historical reasons. It was used by the computer Lilith in 1979, and used the same Mouse as its ancestor Alto (at PARC, 1975). It is distinguished by a very simple hardware without its own microprocessor, which is currently contained in most mice. This goes at a cost of a 9-wire cable. But today, microprocessors are cheaper than cables. We include this interface here, because it allows for a simple explanation of the principle of pointing devices.
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
มีคนจัดรูปเล่มเนื้อหาใหม่ด้วย TeX และทำ PDF ที่อ่านสบายขึ้นไว้สำหรับผู้ที่สนใจ: https://github.com/guidoism/tex-oberon
หลังจากนั้นก็น่าดู Oberon System 3 ด้วย มีการผสมกันระหว่างโมเดลคอมโพเนนต์ Gadgets กับคอมไพเลอร์ JIT/AOT
"The Oberon companion - a guide to using and programming Oberon System 3"
https://www.semanticscholar.org/paper/The-Oberon-companion-a...
ซอร์สโค้ดดูได้จาก fork ของ Rochus
https://github.com/rochus-keller/OberonSystem3
หรือยังมีสายวิวัฒนาการที่ต่อไปเป็น Active Oberon แม้จะไม่ใช่ผลงานของ Niklaus Wirth โดยตรง
https://gitlab.inf.ethz.ch/felixf/oberon
ภาพหน้าจอและคู่มือระบบปฏิบัติการ
https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/ocp/Doc...
ยังมี Component Pascal และ Blackbox IDE ที่สร้างโดยสตาร์ทอัพจาก ETHZ ด้วย
https://blackboxframework.org/index.php
หากต้องการศึกษาซอร์สโค้ด สามารถใช้เครื่องมือนี้ได้: https://github.com/Rochus-Keller/ActiveOberon
นี่เป็นเพียงครึ่งแรกของหนังสือเท่านั้น ทุกพาร์ตและซอฟต์แวร์หาได้ที่นี่: https://people.inf.ethz.ch/wirth/ProjectOberon/
บทที่ใหญ่ที่สุดในฉบับปี 1992 ว่าด้วยคอมไพเลอร์ที่แปลโปรแกรม Oberon เป็นโค้ดสำหรับโปรเซสเซอร์ NS32032 แต่ตอนนี้โปรเซสเซอร์นั้นหาไม่ได้แล้ว และสถาปัตยกรรมของมันก็ยากจะแนะนำ เลยมีจุดที่น่าสนใจตรงที่แทนที่จะเขียนคอมไพเลอร์ใหม่สำหรับสถาปัตยกรรมเชิงพาณิชย์ เขาออกแบบเองเพื่อขยายความเรียบง่ายและความเป็นระเบียบไปถึงระดับฮาร์ดแวร์
การตัดสินใจนี้ทำให้สามารถอธิบายได้อย่างครบถ้วนและเข้มงวด ไม่ใช่แค่ซอฟต์แวร์ของ Oberon System แต่รวมถึงฮาร์ดแวร์ด้วย และโปรเซสเซอร์นั้นถูกเรียกว่า RISC โดยโมดูลฮาร์ดแวร์ทั้งหมดอธิบายด้วย Verilog
อยากรู้ว่าถ้าเทียบกับ Nand to Tetris แล้วจะเป็นอย่างไร นอกนั้นดูน่าสนใจมากจริง ๆ เลยอยากรู้ว่ามีใครเคยอ่านไหม
ตัวอย่างเช่น ส่วนโปรเซสเซอร์ในบทที่ 16 จะพาเข้าไปกลางโค้ด Verilog ทันที อินเทอร์เฟซของ CPU กับ system bus, register และวิธีทำงานของหน่วยคูณจะโผล่มาเลย
ส่วนที่ดีคือคำอธิบายเกี่ยวกับการตัดสินใจในการออกแบบและการประนีประนอมต่าง ๆ สิ่งนี้มีคุณค่า เพราะเป็นภูมิปัญญาที่ Niklaus Wirth ในช่วงท้ายอาชีพถ่ายทอดจากประสบการณ์ตลอดชีวิต เขาเป็นพหูสูตที่หาได้ยาก ผู้เข้าใจทั้งวงจรและวิทยาการคอมพิวเตอร์ที่เป็นนามธรรมกว่าอย่างกว้างและลึก และมักพยายามทำให้เป็นหลักทั่วไป ทำความเข้าใจหลักการ และอธิบายพัฒนาการในบริบททางประวัติศาสตร์เสมอ
เพราะเป็น Wirth บทเรียนประวัติศาสตร์จึงมักอิงจากประสบการณ์ส่วนตัว และผมคิดว่านั่นทำให้เกิดการสังเคราะห์ที่ดี ตัวอย่างเช่น:
แต่พอได้ลองทำจนจบเอง ก็รู้สึกว่าทุกหัวข้อยังขาดความลึกและการสำรวจเชิงลึก อย่างไรก็ตาม นั่นแหละที่ทำให้มันเป็นโปรเจกต์ปูพื้นฐานที่สมบูรณ์แบบ
มหาวิทยาลัยโตเกียวก็มีโปรเจกต์คล้ายกัน และคิดว่าน่าจะใช้เป็นขั้นเชื่อมได้ ลองดูการทดลอง CPU: https://ytsmiling.tech/2017/04/02/cpuex.html
ถ้าไม่ถูกใจ อาจเป็นเพราะเอกสารไม่เพียงพอ แต่ในขั้นนี้คุณน่าจะออกแบบโปรเจกต์เองได้แล้ว โดยพื้นฐานคือเริ่มจากโปรเจกต์ย่อย CPU ที่ใช้ Verilog หรือภาษาอธิบายฮาร์ดแวร์ใด ๆ แล้วต่อไปยังโปรเจกต์ระบบปฏิบัติการและคอมไพเลอร์
ผมเคยผ่านขั้นตอน “ออกแบบ” โปรเซสเซอร์ Nand2Tetris ใน nandgame มาแล้ว และคิดว่าสำหรับการเดินสายด้วยเกต โปรเซสเซอร์ Nand2Tetris น่าจะเรียบง่ายกว่า
แต่โปรเซสเซอร์ RISC ของ Wirth น่าจะเอาไปรันบน FPGA หรือจำลองด้วย Verilator ได้ง่ายกว่ามาก เพราะใช้ภาษาอธิบายฮาร์ดแวร์จริง ไม่ใช่อะไรคล้ายภาษาอธิบายฮาร์ดแวร์ที่คนไม่เคยออกแบบฮาร์ดแวร์จินตนาการขึ้นมา
ถ้าเขียนด้วย Verilog โปรเซสเซอร์ Nand2Tetris อาจใช้โค้ดน้อยกว่าก็ได้ มันน่าจะค่อนข้างคล้ายกับ "a tiny computer for teaching" ของ Chuck Thacker https://www.cl.cam.ac.uk/teaching/1112/ECAD+Arch/files/Thack... ซึ่งก็อิงสถาปัตยกรรม Data General Nova เหมือนโปรเซสเซอร์ Nand2Tetris
Nand2Tetris พาคุณจาก NAND gate ไปจนถึง Tetris และตัวแปล bytecode ในทางกลับกัน Oberon เริ่มจาก Verilog ที่สังเคราะห์ได้ แล้วพาไปถึงระบบปฏิบัติการ GUI ที่ใช้งานได้จริงเต็มรูปแบบ ซึ่งสามารถคอมไพล์ซอร์สโค้ดของตัวเองใหม่ได้
น่าเสียดายที่รัน Vivado บนนั้นไม่ได้ จึงสังเคราะห์ FPGA bitstream ของตัวเองใหม่ไม่ได้ แต่เหมือนอย่างที่มีคนด้านล่างบอกไว้ ดูเหมือนว่าจะจำลองฮาร์ดแวร์ของตัวเองได้
จุดร่วมของทั้งสองอย่างคือไม่มีชื่อที่ใช้งานได้ดีสำหรับสถาปัตยกรรมโปรเซสเซอร์
ภายหลัง Wirth ย้ายคำอธิบายฮาร์ดแวร์ไปเป็น Lola ซึ่งเป็น HDL ที่เขาสร้างขึ้นเอง
ตลอด 5 ปีที่ผ่านมา แนวคิดเรื่อง คอมพิวเตอร์เพื่อการศึกษา วนเวียนอยู่ในหัวผมมาตลอด
ถ้าคิดถึงฮาร์ดแวร์และระบบปฏิบัติการสมัยใหม่แล้ว แทบเป็นไปไม่ได้เลยที่จะมีเครื่องที่เรียบง่ายพอจะสอนคนรุ่นใหม่ได้ คอนโซลแฟนตาซีอย่าง pico-8 เป็นตัวเลือกที่ดีสำหรับการเขียนโปรแกรม แต่ไม่เหมาะกับการทำความเข้าใจฮาร์ดแวร์ที่อยู่ข้างใต้
เพราะอย่างนั้นผมเลยคิดว่าโรงเรียนยังคงใช้สถาปัตยกรรมเก่า ๆ ในการสอนอยู่
ถ้าไม่ต้องการหน่วยความจำแบบ paged ก็ใช้แค่โหมด M กับ U ได้ ผมมีระบบปฏิบัติการเรียลไทม์ขนาดเล็กที่ทำงานกับไมโครคอนโทรลเลอร์ WCH บางรุ่นในรูปแบบนั้นอยู่ แม้จะใช้ PMP แต่ถึงไม่มีก็ไม่จำเป็นขนาดนั้น
วิดีโอ YouTube ของ Ben Eater เหมาะมากสำหรับเรื่องนี้ ทั้งโปรเจกต์ 6502 และคอมพิวเตอร์ทำมือที่สร้าง “ตั้งแต่ศูนย์” บนเบรดบอร์ด
ตอนนี้ด้วย LLM มันเริ่มอยู่ในระยะที่เอื้อมถึงแล้ว และโจทย์ที่เหลือน่าจะเป็นการเชื่อมต่อคอมพิวเตอร์เหล่านั้นเข้าด้วยกันให้ได้ไม่ทางใดก็ทางหนึ่ง หรือก็คือปัญหาความเข้ากันได้ของฮาร์ดแวร์ ส่วนฝั่งซอฟต์แวร์ต้องสามารถทำความเข้าใจซอฟต์แวร์ของอีกฝ่ายได้ไม่ทางใดก็ทางหนึ่ง
หน้า 59–75 กล่าวถึงการใช้งาน piece list ที่รวดเร็ว ซึ่งเป็นหัวข้อที่เพิ่งถูกพูดถึงใน HN เมื่อไม่นานนี้
ขอเสริมว่าเคยมีหลายเธรดใน HN เกี่ยวกับวิธีแทน text buffer เพื่อการแก้ไขที่รวดเร็ว:
https://news.ycombinator.com/item?id=15381886
https://news.ycombinator.com/item?id=11244103
https://news.ycombinator.com/item?id=14129543
https://news.ycombinator.com/item?id=15387672
https://news.ycombinator.com/item?id=14046446
ขอให้ศาสตราจารย์ Wirth ไปสู่สุคติ
นอกเรื่องเล็กน้อย เป็นไปได้ไหมที่จะใส่แท็กที่ดีกว่านี้เพื่อแสดงว่าลิงก์นี้เป็นไฟล์ PDF? แหล่งที่มาดูน่าเชื่อถือ แต่ผมมักจะเกร็งเสมอเมื่อ URL พาไปยัง PDF
[1] https://cr.yp.to/bib/1995/wirth.pdf
ตอนเรียนวิชา compiler ที่มหาวิทยาลัย ผมเคยเขียน Oberon compiler
หาหน้าเว็บวิชาต้นฉบับไม่เจอแล้ว แต่เว็บนี้ซึ่งเป็นเอกสารก่อนช่วงที่ผมเรียนอยู่ไม่กี่ปี น่าจะใกล้เคียงกัน: https://cseweb.ucsd.edu/~wgg/CSE131B/
เป็นภาษาสำหรับการศึกษาที่ยอดเยี่ยม
นี่เป็นของล้ำค่าจริง ๆ สงสัยว่ามีความพยายามนำ Oberon มาใช้ซ้ำเป็น “คอมพิวเตอร์” มือถือบ้างไหม
สงสัยว่ามีใครอัปเดตหนังสือให้ทำงานกับ บอร์ด FPGA รุ่นใหม่กว่านี้ได้หรือยัง