Lions' Commentary on UNIXを読む。
UNIXバージョン6のソースコードとそれの註釈と解説をした伝説の名著である。日本語訳もある。ISBN4-7561-1844-5
当時のUNIXの中核部分はたった1万行弱のコンパクトなプログラムであった。そのために学生が学習するためにはもってこいだった。
UNIXはすでに利用可能なシステム上で実行されている。
UNIXはコンパクトで理解しやすい。
UNIXは広範囲に渡る非常に有用な機能群を提供している。
UNIXは元来おもしろく、実際多くの分野で新天地を開拓している。
まえがき(249ページ)
現在のOSはどれもこのサイズをはるかに凌駕している。Linuxは数百万行のサイズである。
OSを教えるための主なアプローチとして次の3つがあるとLionsは記している。
1) 一般原理
基本的な原理を詳細に説明し、さまざまな既存のシステムを参照しながら解説する。(中略)多くの学生はここから十分に学び取るほどには習得もしないし、経験を積むこともない。
2) ビルディングブロック
学生達は自分たちで小さな、あるいは"おもちゃの"オペレーティングシステムを組み立てられるようになる。確かにこれは価値ある学習になることがあるが、正確に系統立てて学ぶには、実際のオペレーティングシステムの複雑さと精巧さを取り込まないわけにはいかない。
3) ケーススタディ
これは元々、コンピュータサイエンスに関するACMカリキュラム委員会の報告の中のシステムプログラミングコースのために推奨されたアプローチである。
10年前、適切なシステムを十分な学生に利用できるようにするコストは単純にいって高過ぎたので、「コースの大部分を1つのシステムの研究にあてる」ことを唱えるこのアプローチは非現実的であった。
10年がたち、経済状況は際立って変化し、ミニコンピュータシステムが研究の主題になるならば、もはやコストはそれほど問題にならなくなっている。既存のシステムの詳細な分析に取りかかるアプローチの持つ多くの利点はこの時点で到達可能である。
われわれは、あらゆる局面で、稼働しているオペレーティングシステムを学生が研究する機会を得ることは非常に有益であると考える。
その上で、コンピュータサイエンスを専攻している学生が自分のキャリアの中で少なくとも一度はかなり重要なプログラムを読み、理解することに直面することは、確かによいことである。
OSほどの複雑さをもったものを学ぶためには、適切なコース、カリキュラムが必要だが、Lionsの著書は適度な分量で入門書として適していると思う。OSが持つべき機能をトップダウンで解説した一般原理アプローチの教科書は多いが、学生がそこから学ぶものは低いという立場をLionsはとる。わたしも、その通りだと思うが、OSが持つべき共通のアーキテクチャというのはあるので、その語彙を統一するためには標準的な教科書は必要である。
一方でケーススタディから学べるものは多い。実際の実装上のトレードオフ、数々の制約の中でのトレードオフなど理論ではないドロ臭さを学べる。
オープンソースソフトウェアの実装は、先人の知恵を学ぶ宝庫である。それをどのように学ぶかという方法論が実は強く求められているのである。




コメント