Categories Books | Hard | Hardware | Linux | MCU | Misc | Publish | Radio | Repository | Thoughts | Time | UNIX | Writing | プロフィール
GNU GRUB 開発者である奥地さん(現 Nexedi)から、Magic number 1440 (Heart Beat)に対して、コメントを頂きました。しかも、GNU 開発ツールの宣伝つきで!ありがとうございます。
奥地さんはコメント中で、Sense of wonder を次のように捉えられています。
sense of wonderはヒトの持つ武器だとも言えます。
今いる世界から一歩先に進むための道具です。
sense of wonderがなければ、井の中の蛙です。
武器、一歩先に進むための道具、井の中の蛙・・なるほど。正直、私には考えつかなかった表現ですが、この解釈を読んで、あるスピーチを思い出しました。
時は2003年2月、スペースシャトル Columbia 号がミッション終了16分前に空中爆発を起こし、7名の宇宙飛行士全員が死亡。以下は、その2日後にブッシュ大統領が NIH (National Institutes of Health)での講演前に話したコメントです(SPACEFLIGHT NOW の Mission Status Center から一部引用)。
Two days ago, America was yet reminded again of the sacrifices made in the name of scientific discovery. The seven brave men and women from the Columbia will be remembered for their achievements, their heroism and their sense of wonder. Our prayers are with their families and their loved ones.
私には英語圏の人達が "sense of wonder" という言葉に対して、どのようなイメージを喚起するのかは分かりませんが、書籍やネット上での引用などを見ていると、アメリカの教養人は Rachel Carson 女史の名著 The Sense of Wonder を一般常識として知っているようです。
ブッシュ大統領のコメントは、このような背景を踏まえて起草されたのだと思いますが、文章自体は小説家もかなわない超一流の大統領専属ライターの手によるものでしょう。平易にして明快な文章ですが、凄いの一言に尽きます。悲しみと諦め感が漂う国民を前にしての第一文。決して臆することなく、"yet reminded again" で始めるとは、何という勇気!「謹んでお悔やみ申し上げます」という定型文で終わってしまう日本とは、えらい違いです。
ひとつの国家プロジェクトを進める上で決して揺らぐことのない強い覚悟、亡くなった宇宙飛行士とその家族への哀悼と respect が伝わる名文だと思います。respect として文中で用いられた言葉のひとつが "their sense of wonder" ですが、実は私的には今ひとつしっくりこない表現でした。
しかし、奥地さんの解釈を当てはめると、実に良くこの文章の意図を理解できると思うのです。まさに、ドンピシャリ。
Sense of wonder、つくづく深い言葉ですね。
このメモを書いている間に、Stephen King 著 On Writing (邦訳 小説作法)の一節が頭をよぎりました。Columbia 号に関する原稿には、King 氏の文章に対する姿勢と相通じるものがあると思います。怪著 On Writing については、また後日ご紹介することにしましょう。
今回は、Marc J. Rochkind 氏による Advanced UNIX Programming 第二版をご紹介します。
UNIX プログラミングに関するリファレンス書として、本書は APUE と並び双璧を成していますが、初版発行は APUE よりも遙かに古く 1985 年となっています(APUE の初版は 1993 年)。初版の出版社は Prentice Hall でしたが、続く第二版は 2004年 Addison Wesely が出版しています(ちなみに、APUE 第二版の出版も同じく Addison Weseley ですが、こちらは翌 2005年)。
両者を一言で表現するなら、APUE は "classical" であるのに対して、本書は "practical" と言えるでしょう。各論を重んじる APUE とは違い、実践面を重視している点が Advanced UNIX Programming の特徴です。特に、File I/O とプロセスに関する記述は、詳細かつポイントを抑えており、現時点で入手できるテキストの中では最高峰のレベルにあります。
章立ては類書とほぼ同様ですが、第1章 第1節に位置する "A Whirlwind Tour of UNIX and Linux" は、わずか16ページで UNIX の全体像を概観しており、その内容は神がかり的です。一見するとありふれた "overview" に見えるのですが、プログラム・プロセス・i-node・リンクなど基本概念の解説は簡明にして正確で、惚れ惚れするほどの完成度です。
Rochkind 氏は、1970年代 UNIX が花盛りであった頃に Bell 研究所に勤務されていたそうですが、Thompson, Ritchie, Kernighan らが成し得なかった "UNIX の overview" に本書で挑戦しているように見えます。
私は UNIX の最大の悲劇は、Bell 研から優れた "overview" が生まれなかった点にあると考えています。これはコンピュータに限らず、あらゆる分野でもそうだと思うのですが、各論を書くことは易しく、概論を著すことは極めて難しい。もちろん、各論と言えども APUE のような優れた書籍に出会えることは少ないのですが、私の経験では優れた概論は100冊に1冊あるかないかという印象です。
「UNIX 概論であれば、Kernighan と Pike 両氏による、UNIX Programming Environment (邦訳 UNIX プログラミング環境)があるではないか」という指摘もあるかと思いますが、この書籍はあくまでも UNIX 環境への入門書であり、肝心の UNIX システムコールに関する記述はおまけ程度、UNIX カーネルの設計哲学を伝えるものではありません。
UNIX 7th edition の man pages を見ていても、Bell 研の人達は各論には滅法強いのですが、肝心の概論では悲しいまでに筆に力がないことがよく分かります。
この伝統は、その後の Plan9 にも引き継がれており、Plan9 の普及を阻む大きな要因となっているように思います。
UNIX 初学者が最初に持つ疑問のひとつに、「なぜ fork と exec は別々なのか?」というものがあります。私自身も当初この疑問を持ちましたが、残念ながらその理由を明快に解説してくれる書籍はありませんでした。APUE ですら、私の心のモヤモヤを解き放つことは出来ず、悶々とすることしばし・・。
随分回り道をしましたが、私の出した結論は「答えはシェルの実装にあり」というものでした。fork と exec に隠された意味とその使いこなしは、シェルを自作して初めて理解し、会得することができます。ところが、UNIX プログラミング解説書のほとんどは、システムコールのインターフェースとお決まりの fork/exec/wait プログラムを提示するだけであり、シェルの実装には触れていません(APUE も然り)。
私が知る限り、「シェルの実装」を通じて「fork/exec 分断の意図」を読者に伝えている書籍は、この世でわずか2冊。Advanced UNIX Programming は、そのうちの1冊です(もっと早くに出会うことが出来ていたらと、悔やむことしきり)。
Rochkind 氏が書籍中で提示するシェルは、段階に応じて Version 1, Version 2, Version 3, Real Shell の計4種類が用意されており、中でも Real Shell はパイプ処理やバックグラウンド処理にも対応した本格的なものです。
本書で登場するソース中には、システムコールの例外処理に独特のマクロ定義が使われており、意見が分かれるところだと思いますが、ページの端々に実践面で役立つ情報がさりげなく散りばめられており、最後まで目が離せません。Rochkind 氏の UNIX に対する高い理解度と愛情、そして独特の解説力は、本書を APUE とは全くことなる性格に位置づけています。
英文は APUE ほど磨き込まれてはいませんが、十分に平易であり、700ページから得るものは大きいでしょう。