1 ความคิดเห็น

 
GN⁺ 2024-01-06
ความคิดเห็นจาก Hacker News
  • มีคนจัดรูปเล่มเนื้อหาใหม่ด้วย TeX และทำ PDF ที่อ่านสบายขึ้นไว้สำหรับผู้ที่สนใจ: https://github.com/guidoism/tex-oberon

    • เจ๋งดี น่าจะมีวิธีเปลี่ยน รูปแบบกระดาษ ได้ไม่ยาก อยากลองเปลี่ยนเป็น A5 แล้วเย็บเล่มเป็นหนังสือดี ๆ เอง
    • สงสัยว่าจะสามารถทำตามหนังสือเวอร์ชันนี้แล้วสร้างทั้งหมดได้หรือไม่ อยากรู้ว่าไม่จำเป็นต้องหา บอร์ด FPGA ดั้งเดิม ที่ Wirth ใช้หรือเปล่า
  • หลังจากนั้นก็น่าดู 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

    • วิวัฒนาการของ Active Oberon เริ่มจาก Active Object System (AOS) และตัวจัดการหน้าต่าง Bluebottle ส่วนซอร์สโค้ดของรีลีส "Current" สุดท้าย ดูได้ที่นี่เป็นตัวอย่าง: https://github.com/OberonSystem3/AOS_Bluebottle_Sources
      หากต้องการศึกษาซอร์สโค้ด สามารถใช้เครื่องมือนี้ได้: https://github.com/Rochus-Keller/ActiveOberon
  • นี่เป็นเพียงครึ่งแรกของหนังสือเท่านั้น ทุกพาร์ตและซอฟต์แวร์หาได้ที่นี่: https://people.inf.ethz.ch/wirth/ProjectOberon/

  • บทที่ใหญ่ที่สุดในฉบับปี 1992 ว่าด้วยคอมไพเลอร์ที่แปลโปรแกรม Oberon เป็นโค้ดสำหรับโปรเซสเซอร์ NS32032 แต่ตอนนี้โปรเซสเซอร์นั้นหาไม่ได้แล้ว และสถาปัตยกรรมของมันก็ยากจะแนะนำ เลยมีจุดที่น่าสนใจตรงที่แทนที่จะเขียนคอมไพเลอร์ใหม่สำหรับสถาปัตยกรรมเชิงพาณิชย์ เขาออกแบบเองเพื่อขยายความเรียบง่ายและความเป็นระเบียบไปถึงระดับฮาร์ดแวร์
    การตัดสินใจนี้ทำให้สามารถอธิบายได้อย่างครบถ้วนและเข้มงวด ไม่ใช่แค่ซอฟต์แวร์ของ Oberon System แต่รวมถึงฮาร์ดแวร์ด้วย และโปรเซสเซอร์นั้นถูกเรียกว่า RISC โดยโมดูลฮาร์ดแวร์ทั้งหมดอธิบายด้วย Verilog
    อยากรู้ว่าถ้าเทียบกับ Nand to Tetris แล้วจะเป็นอย่างไร นอกนั้นดูน่าสนใจมากจริง ๆ เลยอยากรู้ว่ามีใครเคยอ่านไหม

    • อย่างที่อีกท่านบอกไว้ นี่ไม่ใช่งานที่มุ่งสำหรับมือใหม่ ก่อนอื่นน่าจะต้องมีพื้นฐานบางส่วน หรืออาจจะส่วนใหญ่ ของ NAND 2 Tetris มาก่อน
      ตัวอย่างเช่น ส่วนโปรเซสเซอร์ในบทที่ 16 จะพาเข้าไปกลางโค้ด Verilog ทันที อินเทอร์เฟซของ CPU กับ system bus, register และวิธีทำงานของหน่วยคูณจะโผล่มาเลย
      ส่วนที่ดีคือคำอธิบายเกี่ยวกับการตัดสินใจในการออกแบบและการประนีประนอมต่าง ๆ สิ่งนี้มีคุณค่า เพราะเป็นภูมิปัญญาที่ Niklaus Wirth ในช่วงท้ายอาชีพถ่ายทอดจากประสบการณ์ตลอดชีวิต เขาเป็นพหูสูตที่หาได้ยาก ผู้เข้าใจทั้งวงจรและวิทยาการคอมพิวเตอร์ที่เป็นนามธรรมกว่าอย่างกว้างและลึก และมักพยายามทำให้เป็นหลักทั่วไป ทำความเข้าใจหลักการ และอธิบายพัฒนาการในบริบททางประวัติศาสตร์เสมอ
      เพราะเป็น Wirth บทเรียนประวัติศาสตร์จึงมักอิงจากประสบการณ์ส่วนตัว และผมคิดว่านั่นทำให้เกิดการสังเคราะห์ที่ดี ตัวอย่างเช่น:

      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.

    • Nand2Tetris เป็นโปรเจกต์ปูพื้นฐานที่สมบูรณ์แบบสำหรับสาขานี้ ครอบคลุมการออกแบบฮาร์ดแวร์ ระบบปฏิบัติการ และคอมไพเลอร์
      แต่พอได้ลองทำจนจบเอง ก็รู้สึกว่าทุกหัวข้อยังขาดความลึกและการสำรวจเชิงลึก อย่างไรก็ตาม นั่นแหละที่ทำให้มันเป็นโปรเจกต์ปูพื้นฐานที่สมบูรณ์แบบ
      มหาวิทยาลัยโตเกียวก็มีโปรเจกต์คล้ายกัน และคิดว่าน่าจะใช้เป็นขั้นเชื่อมได้ ลองดูการทดลอง CPU: https://ytsmiling.tech/2017/04/02/cpuex.html
      ถ้าไม่ถูกใจ อาจเป็นเพราะเอกสารไม่เพียงพอ แต่ในขั้นนี้คุณน่าจะออกแบบโปรเจกต์เองได้แล้ว โดยพื้นฐานคือเริ่มจากโปรเจกต์ย่อย CPU ที่ใช้ Verilog หรือภาษาอธิบายฮาร์ดแวร์ใด ๆ แล้วต่อไปยังโปรเจกต์ระบบปฏิบัติการและคอมไพเลอร์
    • Project Oberon อธิบายว่าระบบสุดท้ายหน้าตาเป็นอย่างไร ไม่ใช่บทเรียนแบบพาไปทีละขั้นจากพื้นฐานจนถึงระบบที่เสร็จสมบูรณ์
    • โปรเซสเซอร์ RISC ของ Wirth อธิบายและเขียนโปรแกรมได้ง่ายกว่าโปรเซสเซอร์ TECS/Nand2Tetris มาก ผมคิดว่าโปรเซสเซอร์ Nand2Tetris แทบจะใช้งานไม่ได้เลย
      ผมเคยผ่านขั้นตอน “ออกแบบ” โปรเซสเซอร์ 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 ของตัวเองใหม่ไม่ได้ แต่เหมือนอย่างที่มีคนด้านล่างบอกไว้ ดูเหมือนว่าจะจำลองฮาร์ดแวร์ของตัวเองได้
      จุดร่วมของทั้งสองอย่างคือไม่มีชื่อที่ใช้งานได้ดีสำหรับสถาปัตยกรรมโปรเซสเซอร์
    • โครงสร้างเพื่อการเรียนการสอน อ่อนกว่า Nand to Tetris มาก ถ้าจำเป็นต้องมีพื้นฐาน ก็ควรอ่านอันนั้นก่อนแล้วค่อยอ่านเล่มนี้
      ภายหลัง Wirth ย้ายคำอธิบายฮาร์ดแวร์ไปเป็น Lola ซึ่งเป็น HDL ที่เขาสร้างขึ้นเอง
  • ตลอด 5 ปีที่ผ่านมา แนวคิดเรื่อง คอมพิวเตอร์เพื่อการศึกษา วนเวียนอยู่ในหัวผมมาตลอด
    ถ้าคิดถึงฮาร์ดแวร์และระบบปฏิบัติการสมัยใหม่แล้ว แทบเป็นไปไม่ได้เลยที่จะมีเครื่องที่เรียบง่ายพอจะสอนคนรุ่นใหม่ได้ คอนโซลแฟนตาซีอย่าง pico-8 เป็นตัวเลือกที่ดีสำหรับการเขียนโปรแกรม แต่ไม่เหมาะกับการทำความเข้าใจฮาร์ดแวร์ที่อยู่ข้างใต้
    เพราะอย่างนั้นผมเลยคิดว่าโรงเรียนยังคงใช้สถาปัตยกรรมเก่า ๆ ในการสอนอยู่

    • การใช้งาน RISC-V ขั้นต่ำสุดนั้นค่อนข้างเรียบง่าย และ xv6 ก็มีการใช้งาน RISC-V ด้วย เพียงแต่ว่าต้องการมากกว่าการใช้งาน RISC-V แบบขั้นต่ำสุดจริง ๆ เล็กน้อย กล่าวคือ ต้องมี CSR, โหมด M/S/U และ paging
      ถ้าไม่ต้องการหน่วยความจำแบบ paged ก็ใช้แค่โหมด M กับ U ได้ ผมมีระบบปฏิบัติการเรียลไทม์ขนาดเล็กที่ทำงานกับไมโครคอนโทรลเลอร์ WCH บางรุ่นในรูปแบบนั้นอยู่ แม้จะใช้ PMP แต่ถึงไม่มีก็ไม่จำเป็นขนาดนั้น
    • ฮาร์ดแวร์วินเทจ 8 บิต เข้าใจได้ง่ายมาก และสอนพื้นฐานที่ยังนำมาใช้ได้ตรง ๆ ในปัจจุบัน
      วิดีโอ 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

    • แถลงการณ์ lean software ของเขาคุ้มค่าแก่การอ่านเสมอ
      [1] https://cr.yp.to/bib/1995/wirth.pdf
    • โดยปกติลิงก์ที่พาไปยัง PDF จะมี [pdf] ต่อท้าย
    • ผมสงสัยว่าจุดไหนของไฟล์ PDF ที่คุณกังวลเป็นพิเศษ
    • URL ก็ลงท้ายด้วย .pdf อยู่แล้ว
  • ตอนเรียนวิชา compiler ที่มหาวิทยาลัย ผมเคยเขียน Oberon compiler
    หาหน้าเว็บวิชาต้นฉบับไม่เจอแล้ว แต่เว็บนี้ซึ่งเป็นเอกสารก่อนช่วงที่ผมเรียนอยู่ไม่กี่ปี น่าจะใกล้เคียงกัน: https://cseweb.ucsd.edu/~wgg/CSE131B/
    เป็นภาษาสำหรับการศึกษาที่ยอดเยี่ยม

  • นี่เป็นของล้ำค่าจริง ๆ สงสัยว่ามีความพยายามนำ Oberon มาใช้ซ้ำเป็น “คอมพิวเตอร์” มือถือบ้างไหม

  • สงสัยว่ามีใครอัปเดตหนังสือให้ทำงานกับ บอร์ด FPGA รุ่นใหม่กว่านี้ได้หรือยัง