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
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
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
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
1 komentar
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
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
Untuk mempelajari kode sumbernya, Anda bisa menggunakan alat ini: https://github.com/Rochus-Keller/ActiveOberon
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?
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:
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
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
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
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
Video YouTube Ben Eater sangat bagus untuk ini. Baik proyek 6502 maupun komputer buatan tangan yang dibuat “dari nol” dengan breadboard sama-sama bagus
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
[1] https://cr.yp.to/bib/1995/wirth.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