スキップしてメイン コンテンツに移動

「ハッカーと画家」を読んで

ポール・グレアムの「ハッカーと画家 コンピュータ時代の創造者たち」を読んだ。もっと以前に読んでいてしかるべき本であったが、読みそびれていた。もっと技術的な話だと思っていたのだが、(プログラマであれば)気軽に読めるとても面白いエッセイ集だった。

個人的に興味深かったのは、第4章の「天邪鬼の価値」で、ジョブズとウォズニアックが錠開け装置をいじっている写真だ。リチャード・ファインマンがマンハッタン計画で重要書類の入っている金庫を破ることを楽しみにしていたり、グレアムが学生の頃のMITではピッキングが流行ったりしていたそうだが、それを読んで、自分が子供の頃のことを思い出した。古いダイアル式南京錠が家にあったのだが、それは錠が閉まっていて親に聞いても番号が分からないという。そこでどうやったら開けることが出来るかを考えるうちに面白くなり、次第に夢中になっていった。ダイアルは3桁の数字なので、10*10*10=1000通りを試したら必ず開けられる。しかし、そんな面倒なことはしたく無い。悪用されても困るので詳しくは書かないけど、しばらくいじっているうちにキーの動きに法則があることに気がついた。こうなれば簡単で、最大で10+10+10=30通りを試すだけでよくなる。これで開かない錠前を開けることができた。今で言えばセキュリティに欠陥があるということなのだろうが、困難だと思われることに挑戦し、それを克服することは、とても強い達成感となる。子供ながらにそう感じた。ファインマンもMITの学生もそう感じたのだろう。これがハックする理由の原点だろうか。

第13章の「オタク野郎の復讐」を読めば分かるけど、ポール・グレアムは熱心なLispハッカーで、Lispを非常に高く評価している。確かに他の言語の意義についても説いてはいるけど、「他のプログラミング言語はとうとう(Lispの生まれた)1958年に追いつこうとしている」と書いていることからもLispが最も良い言語だと考えているのが分かる。確かにLispは良い言語だと思うけど、個人的には万人にLispを勧めることはできないなぁ。

自分の場合は、普段はC++とPythonを利用していて(多くの場合はこれで事足りる)、最近は並列化のためにTBBやCUDA、それとErlangを使ったりしている。もちろんAndroidで開発するときはJavaだし、グラフィカルなことをしたいときはProcessingやActionScriptを使うし、他にも様々な言語をいじったりするけども、結局、言語の選択はその環境と目的に強く依存されると思う。それに、複数の言語から選択できる方が一つの言語に固執するより健全じゃないかなぁ(一つの言語を極めてみるというのには異存はないけど)。複数の言語を覚えるのは大変そうに思えるかもしれないけど、最初に2~3の言語を習得すれば、それ以降はあまり苦労せずに覚えることができると思う。

ところでLispの開発環境についてだけど、WindowsでCommon Lispを使いたいときはEmacs Lispの代わりにCommon Lispライクなマクロ言語を搭載したxyzzyが手軽だ。LinuxならCLISPSBCLがよく使われている。

ポール・グレアムの最新のエッセイはPaul Graham - Essaysから読むことができる。日本語訳はnaoya_t:ポール・グレアムのエッセイと和訳一覧でまとめられているので、興味のある方は読んでみてはどうだろうか。あと、第13章「オタク野郎の復讐」で納得しかねたPythonユーザはPaul Prescodの「PythonとLispの関係について」(川合史朗訳)を読んでみることをお勧めしたい。

コメント