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...
ソースコードは Rochus のフォークで見られる
https://github.com/rochus-keller/OberonSystem3
あるいは Niklaus Wirth 自身によるものではないが、Active Oberon へ続く流れもある
https://gitlab.inf.ethz.ch/felixf/oberon
スクリーンショットと OS マニュアル
https://gitlab.inf.ethz.ch/felixf/oberon/-/blob/main/ocp/Doc...
ETHZ 発のスタートアップが作った Component Pascal と Blackbox IDE もある
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インターフェイス、レジスタ、乗算ユニットの動作方式がすぐに出てくる
良いところは、設計上の判断とトレードオフに関する解説だ。キャリア晩年のNiklaus Wirthが生涯の経験をもとに残した知恵なので貴重だ。彼は回路と、より抽象的なコンピュータサイエンスの両方を広く深く理解していた珍しい博識家で、常に一般化し、原理を理解しようとし、歴史的文脈の中で発展の過程を説明していた
Wirthなので、歴史の授業が個人的な経験に基づくことも多く、そのおかげで良い総合が生まれていると思う。例えば次のようなものだ:
ただし実際に最後までやってみると、どのトピックでも深さや掘り下げが足りないと感じた。だがまさにその点が、完璧な入門プロジェクトにしている
東京大学にも似たプロジェクトがあり、踏み石として使えると思う。CPU実験を見るとよい: https://ytsmiling.tech/2017/04/02/cpuex.html
気に入らないなら、おそらくドキュメント不足が理由だろうが、この段階なら自分でプロジェクトを設計してもよい。基本的にはVerilogか任意のハードウェア記述言語を使うCPUのサブプロジェクトから始めて、OSとコンパイラのプロジェクトへつなげればよい
nandgameでNand2Tetrisプロセッサを「設計」する過程を経験したが、ゲートで配線するにはNand2Tetrisプロセッサの方が単純そうだ
しかしWirthのRISCプロセッサは、FPGAで動かしたりVerilatorでシミュレーションしたりするのがはるかに簡単なはずだ。ハードウェアを設計したことのない人が想像したハードウェア記述言語のようなものではなく、実際のハードウェア記述言語を使っているからだ
おそらくVerilogで書けば、Nand2Tetrisプロセッサの方がコード量は少ないかもしれない。Chuck Thackerの「a tiny computer for teaching」https://www.cl.cam.ac.uk/teaching/1112/ECAD+Arch/files/Thack...とかなり似ているはずで、Nand2Tetrisプロセッサと同じくData General Novaアーキテクチャをベースにしている
Nand2TetrisはNANDゲートからTetrisとバイトコードインタプリタまで連れていってくれる。一方Oberonは、合成可能なVerilogから始まり、自分自身のソースコードを再コンパイルできる、完全に実用的なGUI OSまで連れていってくれる
残念ながらVivadoをその上で動かすことはできないので、自分自身のFPGAビットストリームを再合成することはできない。ただし下で誰かが言っているように、自分のハードウェアをシミュレーションすることはできるようだ
両者の共通点は、プロセッサアーキテクチャに使える名前がないことだ
後にWirthはハードウェア記述を、自作のHDLであるLolaに移した
この5年間、教育用コンピュータというアイデアがずっと頭から離れなかった。
現代のハードウェアとオペレーティングシステムを考えると、若い世代に教えられるほど単純なマシンを持つことは事実上不可能だ。pico-8 のようなファンタジーコンソールはプログラミングには良い選択肢だが、その下にあるハードウェアを理解するには適していない。
だから今でも学校では古いアーキテクチャを教育に使っているように思う。
ページドメモリが不要なら、M モードと U モードだけでも可能だ。その構成で、一部の WCH マイクロコントローラを対象にした小さなリアルタイム OS を持っている。PMP は使っているが、それすら必須ではない。
Ben Eater の YouTube 動画はこの点で素晴らしい。6502 プロジェクトも、ブレッドボードで「ゼロから」作る手製コンピュータもどちらも良い。
今では LLM のおかげで手の届く範囲に入ってきており、残る課題はコンピュータ同士をどうにか接続すること、つまりハードウェア互換性の問題だろう。ソフトウェア側は、相手のソフトウェアを何らかの形で把握できなければならない。
59〜75ページでは高速な ピースリスト(piece list) 実装を扱っている。最近 HN でも取り上げられていた話題だ。
高速編集のためのテキストバッファ表現方式について HN にいくつかスレッドがあったので、付け加えておく。
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
大学でコンパイラの授業を受けたときに Oberon コンパイラを書いた。
元の授業サイトは見つけられないが、私が受講した時期より数年前の資料であるこのサイトがだいたい近いと思う: https://cseweb.ucsd.edu/~wgg/CSE131B/
教育用言語として素晴らしかった。
これは宝石のようなものだ。Oberon をモバイル「コンピュータ」として再利用しようとする試みがあるのか気になる。
もっと新しい FPGA ボードで作業できるように本をアップデートした人がいるのか気になる。