/ «2007-03-31 (Sat) ^ 2007-04-11 (Wed)» ?
   西田 亙の本:GNU 開発ツール -- hello.c から a.out が誕生するまで --

Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール


2007-04-02 (Mon)

[Books][UNIX] Understanding Unix/Linux Programming -- A guide to theory and practice --

Understanding Unix/Linux Programming 今回ご紹介する "UNIX システムプログラミングの名著シリーズ" 第三作は、Bruce Molay 氏による Understanding Unix/Linux Programming です。本書は Pearson Education から 2003年に出版された比較的新しい作品ですが、これまで国内はもとより、海外でもほとんど話題に上ることはありませんでした。残念なことですが、正当な評価を受けることなく、埋もれたままになっている名著は少なくありません。

Enjoyable UNIX

しかしながら、本書は他に比べるものがないほど独創的かつ楽しい内容を秘めています。次ページをワクワクするような気持ちでめくることができる技術書など、滅多に出会えるものではありません。本書の特徴を一言で表現するならば、"Enjoyable UNIX" でしょうか 。

「UNIX はシンプルにして面白い」、行間を通じて溢れ出る Molay 氏の思いは、 Understanding Unix/Linux Programming を "世界最高の UNIX プログラミング入門書" に仕立て上げています。

これまでに紹介してきた、Advanced Programming in the UNIX Environment, Advanced UNIX Programming に書かれている内容は、私の想定範囲に収まっていましたが、本書は違います。読み進めると、全く予想もしていなかった "ネタ" が、絶妙な章立ての中で登場。正直、「こりゃ負けた・・」と思いました。

なぜか?それは、本書が "教育" の場において "学生と共に" 練り上げられた希有なテキストであるからでしょう。

Award Winning Teacher in Harvard

Molay 氏は、Faculty of Arts and Sciences, Harvard University で教鞭を取る現職の教師であり、1998年には "Excellence in Teaching Award" を受賞しています。本賞は、氏が受け持っている UNIX Systems Programming と呼ばれる授業(現在も開講中)への高い評価に対して贈られたもので、採点にあたった一学生のコメントが奮っています。

Bruce's generosity in time and intellect goes well beyond expectation and duty.

学生に "beyond duty" と言わしめるとは、渋すぎます、泣けます・・。私も、こういう授業を受けてみたかった。

世の中には、講義用のテキストとして出版された書籍がありますが、そのほとんどは言葉足らずであり、一般読者向けではありません。しかし、本書は逆です。教育現場で得られた貴重な成果を取り込み、私達読者に "学外授業" の形で提供しているのです。

この姿勢を端的に表している言葉を Acknowledgements から引用しておきましょう。

I thank the many students and teaching assistants in Unix Systems Programming whose questions and remarks in class discussion and in tutorial conversations helped shape the outline, explanations, metaphors, and images that form this book.

本書の原泉が授業にあることを素直に認めた、とても印象的な言葉です。

From Pong to Threaded Web Server

さてその内容ですが、とにもかくにも題材が素晴らしい出来です。UNIX を理解するためには幾つかの勘所があるのですが、本書は考えに考え抜かれたサンプルプログラムと独特の図を用いてそれぞれのポイントを解説していきます。

注目すべきは、その解説が UNIX プログラミングの基本骨格の捉え方を述べるのみで、枝葉末節には敢えて立ち入っていない点です。このため読後には物足りなさが残るものの、他書では決して得られない「UNIX の全体像がおぼろげながら見えてきた!」という到達感を体験することができます。

ネタをばらしてしまうと、皆さんの楽しみが減ってしまいますので、ほんの一部をご紹介しますと、第7章ではなんと "Pong ゲーム" が登場します。冗談ではありません。昔懐かしのピンポンゲームを curses ライブラリを使って CUI で実装します、本気(マジ)です。具体的な章タイトルは次の通り。

CHAPTER 7: Event-Driven Programming, Writing a Video Game

繰り返しますが、本書はゲーム本ではありません。大学での講義から生み出された立派な UNIX システムプログラミング入門書です。それでは、なぜピンポンゲームなのか?

勘の良い方は既にお分かりの通り、第7章の真のテーマは "シグナルプログラミング" です。ともすれば、無味乾燥な解説に陥りがちのシグナル処理を Molay 氏はピンポンゲームを題材に取り上げることで、世界一の読み物に仕上げてしまったのです。

アラームハンドラで画面上のボールを動かし、非同期I/Oによりリアルタイムのキー入力を実現します。本書は、このように目の覚めるような題材で充ち満ちています。ピンポンゲームの他には、Thread 対応版 Web サーバーまで登場しますし、前回お話したシェルの実装も当然のことながら掲載されています。

全体は 522ページから構成されていますが、図やソースリストが半分近くを占めていますし、内容の面白さおよび展開のテンポの良さに引き込まれ、いつの間にか小説のように読み終わってしまう奇跡のようなテキストです。英文も極めて平易ですから、生まれて初めて洋書を手にしようという方には、最高の出会いをもたらしてくれることでしょう。

幸か不幸か、本書は国内において未だ翻訳されていません。

UNIX is not as easy as you imagine

最後に、文中で見つけた Molay 氏の含蓄の深い言葉を紹介しておきましょう。

Unix programming is not as difficult as you think, but it is not as easy as you first imagine.

「UNIX プログラミングは皆が思うほど難しくはないが、また易しくもない」、名言だと思います。