1 komentar

 
GN⁺ 2024-01-06
Opini Hacker News
  • Teks isi telah disusun ulang dengan TeX, dan saya membuat PDF yang lebih nyaman dibaca bagi yang berminat: https://github.com/guidoism/tex-oberon

    • Keren. Sepertinya ada cara yang tidak terlalu sulit untuk mengubah format kertas; saya ingin mengubahnya ke A5 lalu mencoba menjilidnya sendiri menjadi buku yang bagus
    • Saya penasaran apakah seluruhnya bisa dibuat sambil mengikuti buku versi ini. Saya ingin tahu apakah tidak perlu mendapatkan papan FPGA asli yang digunakan Wirth
  • Setelah itu, ada baiknya juga melihat Oberon System 3. Di dalamnya ada campuran model komponen Gadgets dan compiler JIT/AOT
    "The Oberon companion - a guide to using and programming Oberon System 3"
    https://www.semanticscholar.org/paper/The-Oberon-companion-a...
    Kode sumbernya bisa dilihat di fork Rochus
    https://github.com/rochus-keller/OberonSystem3
    Atau, meski bukan langsung dikerjakan oleh Niklaus Wirth, ada juga alur yang berlanjut ke Active Oberon
    https://gitlab.inf.ethz.ch/felixf/oberon
    Screenshot dan manual sistem operasi
    https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/ocp/Doc...
    Ada juga Component Pascal dan Blackbox IDE yang dibuat oleh startup spin-off dari ETHZ
    https://blackboxframework.org/index.php

  • Ini baru separuh bagian depan buku. Semua bagian dan perangkat lunaknya bisa ditemukan di sini: https://people.inf.ethz.ch/wirth/ProjectOberon/

  • Bab terbesar dalam edisi 1992 membahas compiler yang menerjemahkan program Oberon menjadi kode prosesor NS32032, tetapi kini prosesor itu sudah tidak bisa didapatkan dan arsitekturnya pun sulit direkomendasikan. Jadi, alih-alih menulis compiler baru untuk arsitektur komersial, menarik bahwa mereka merancang sendiri agar kesederhanaan dan keteraturan juga meluas hingga ke perangkat keras
    Berkat keputusan ini, bukan hanya perangkat lunak Oberon System, tetapi juga perangkat kerasnya bisa dijelaskan secara lengkap dan ketat; prosesornya disebut RISC, dan semua modul perangkat keras dideskripsikan dengan Verilog
    Penasaran bagaimana jika dibandingkan dengan Nand to Tetris. Selain itu, kelihatannya benar-benar menarik; apakah ada yang sudah membacanya?

    • Seperti yang juga dikatakan orang lain, ini bukan untuk pemula. Anda mungkin perlu sebagian, bahkan mungkin sebagian besar, pengetahuan latar dari NAND 2 Tetris terlebih dahulu
      Misalnya, bagian prosesor di bab 16 langsung mendorong pembaca ke tengah-tengah kode Verilog. Antarmuka CPU dengan bus sistem, register, dan cara kerja unit perkalian langsung muncul begitu saja
      Bagian yang bagus adalah penjelasan tentang keputusan desain dan trade-off. Ini berharga karena merupakan kebijaksanaan yang ditinggalkan Niklaus Wirth di akhir kariernya, berdasarkan pengalaman seumur hidupnya. Ia adalah salah satu polymath langka yang memahami sirkuit maupun ilmu komputer yang lebih abstrak secara luas dan mendalam, selalu berusaha menggeneralisasi dan memahami prinsip, serta menjelaskan proses perkembangan dalam konteks sejarah
      Karena ini Wirth, pelajaran sejarahnya sering kali berbasis pengalaman pribadi, dan menurut saya itu menghasilkan sintesis yang bagus. Contohnya seperti berikut:

      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 adalah proyek pengantar yang sempurna untuk bidang ini, mencakup desain perangkat keras, sistem operasi, dan compiler
      Namun setelah mencobanya sendiri sampai selesai, saya merasa semua topiknya kurang dalam dan kurang dieksplorasi secara mendalam. Tetapi justru karena itulah ia menjadi proyek pengantar yang sempurna
      Universitas Tokyo juga punya proyek serupa, dan menurut saya bisa digunakan sebagai batu loncatan. Lihat eksperimen CPU: https://ytsmiling.tech/2017/04/02/cpuex.html
      Kalau tidak cocok, mungkin karena dokumentasinya kurang; pada tahap ini, Anda sebenarnya sudah bisa merancang proyek sendiri. Pada dasarnya mulai dari subproyek CPU yang memakai Verilog atau bahasa deskripsi perangkat keras apa pun, lalu lanjutkan ke proyek sistem operasi dan compiler
    • Project Oberon menjelaskan seperti apa sistem akhirnya. Ini bukan tutorial yang membawa Anda langkah demi langkah dari dasar hingga sistem jadi
    • Prosesor RISC milik Wirth jauh lebih sederhana untuk dijelaskan dan diprogram dibanding prosesor TECS/Nand2Tetris. Menurut saya prosesor Nand2Tetris nyaris tidak layak dipakai
      Saya pernah melalui proses “merancang” prosesor Nand2Tetris di nandgame, dan untuk dirangkai dengan gerbang, prosesor Nand2Tetris tampaknya lebih sederhana
      Namun prosesor RISC Wirth akan jauh lebih mudah dijalankan di FPGA atau disimulasikan dengan Verilator. Sebab ia memakai bahasa deskripsi perangkat keras sungguhan, bukan sesuatu yang mirip bahasa deskripsi perangkat keras yang dibayangkan oleh orang yang belum pernah merancang perangkat keras
      Mungkin jika ditulis dengan Verilog, prosesor Nand2Tetris bisa memiliki jumlah kode yang lebih sedikit. Ia mungkin cukup mirip dengan "a tiny computer for teaching" dari Chuck Thacker https://www.cl.cam.ac.uk/teaching/1112/ECAD+Arch/files/Thack..., dan seperti prosesor Nand2Tetris, ia berbasis arsitektur Data General Nova
      Nand2Tetris membawa Anda dari gerbang NAND hingga Tetris dan interpreter bytecode. Sebaliknya, Oberon dimulai dari Verilog yang dapat disintesis, lalu membawa Anda sampai ke sistem operasi GUI yang sepenuhnya layak pakai dan mampu mengompilasi ulang kode sumbernya sendiri
      Sayangnya, Vivado tidak bisa dijalankan di atasnya, jadi ia tidak bisa menyintesis ulang bitstream FPGA-nya sendiri. Namun seperti yang dikatakan seseorang di bawah, tampaknya ia bisa menyimulasikan perangkat kerasnya sendiri
      Kesamaan keduanya adalah tidak ada nama yang layak untuk arsitektur prosesornya
    • Struktur edukatifnya jauh lebih lemah daripada Nand to Tetris. Jika Anda membutuhkan pengetahuan latar, sebaiknya baca itu dulu baru kemudian baca buku ini
      Belakangan Wirth memindahkan deskripsi perangkat kerasnya ke Lola, HDL yang ia buat sendiri
  • Selama lima tahun terakhir, gagasan tentang komputer untuk pendidikan terus terngiang di kepala saya
    Jika melihat hardware dan sistem operasi modern, praktis mustahil memiliki mesin yang cukup sederhana untuk diajarkan kepada generasi muda. Konsol fantasi seperti pico-8 adalah pilihan bagus untuk pemrograman, tetapi tidak cocok untuk memahami hardware di bawahnya
    Jadi sepertinya sekolah-sekolah masih memakai arsitektur lama untuk pendidikan

    • Implementasi minimal RISC-V cukup sederhana. Ada juga implementasi RISC-V di xv6. Namun, dibutuhkan sedikit lebih banyak daripada implementasi RISC-V yang benar-benar minimal; tepatnya perlu CSR, mode M/S/U, dan paging
      Jika tidak memerlukan memori berpaging, mode M dan mode U saja sudah bisa. Dengan konfigurasi seperti itu, saya punya sistem operasi real-time kecil yang menargetkan beberapa mikrokontroler WCH. Memang memakai PMP, tetapi itu pun sebenarnya tidak wajib
    • Hardware 8-bit vintage sangat mudah dipahami, dan mengajarkan dasar-dasar yang masih berlaku hingga hari ini
      Video YouTube Ben Eater sangat bagus untuk ini. Baik proyek 6502 maupun komputer buatan tangan yang dibuat “dari nol” dengan breadboard sama-sama bagus
    • Komputer yang entah bagaimana dapat belajar cara berbicara dengan komputer lain tampaknya akan menjadi solusi puncaknya
      Kini berkat LLM, hal itu sudah berada dalam jangkauan, dan tantangan yang tersisa tampaknya adalah bagaimana menghubungkan komputer-komputer itu dengan cara tertentu, yaitu masalah kompatibilitas hardware. Di sisi software, ia harus bisa memahami software pihak lain dengan cara apa pun
  • Halaman 59–75 membahas implementasi piece list yang cepat. Ini juga topik yang baru-baru ini dibahas di HN
    Saya tambahkan karena ada beberapa thread HN tentang cara merepresentasikan buffer teks untuk penyuntingan cepat:
    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

  • Semoga Prof. Wirth beristirahat dalam damai
    Sedikit di luar topik, bisakah diberi tag yang lebih baik untuk menunjukkan bahwa tautan ini adalah file PDF? Sumbernya tampak tepercaya, tetapi saya selalu tegang kalau URL mengarah ke PDF

    • Seruan beliau tentang lean software selalu layak dibaca
      [1] https://cr.yp.to/bib/1995/wirth.pdf
    • Biasanya tautan yang mengarah ke PDF diberi [pdf] di bagian akhir
    • Saya penasaran, bagian apa dari file PDF yang secara spesifik membuat Anda khawatir
    • URL-nya sudah berakhiran .pdf
  • Saat mengambil mata kuliah compiler di universitas, saya menulis compiler Oberon
    Saya tidak bisa menemukan situs asli mata kuliahnya, tetapi situs ini, yang materinya beberapa tahun sebelum masa saya mengambilnya, sepertinya kurang lebih sesuai: https://cseweb.ucsd.edu/~wgg/CSE131B/
    Bahasa yang sangat bagus untuk pendidikan

  • Ini seperti permata. Saya penasaran apakah ada upaya untuk memanfaatkan ulang Oberon sebagai “komputer” mobile

  • Saya penasaran apakah ada orang yang memperbarui bukunya agar bisa bekerja dengan papan FPGA yang lebih baru