yohasebe.com


Tue Jul 18 12:48:00 +0900 2006

ハッカーと画家―コンピュータ時代の創造者たち

  • Paul Graham(著)河合史朗(訳)
  • ハッカーと画家―コンピュータ時代の創造者たち
  • 東京
  • オーム社
  • 2005
  • 4274065979

その一風変わったタイトルに興味を持って手にとり、引き込まれるように読んだ。後からネットをいろいろ調べてみると、筆者 Paul Graham はその筋ではかなり有名な人物らしい。プログラミング言語 Lisp のエキスパートであり、その Lisp を使ったサーバサイドウェブシステムの開発によって、企業家としても成功を収めている。エッセイストとしての技量もかなりのもので、実際とても面白く読めた。

いわく、プログラミングはひとつのアートである。それは絵画や音楽やその他の芸術的営みと本質的に同じ「モノ作り」のプロセスであり、いわゆるハッカーたちは、そのプロセスに没頭することに純粋な悦びを見い出す。彼らは、現実的には大学や研究機関に所属して、論文の形で成果をまとめることを求められたり、あるいは、企業の一員として、トップダウンでやってくるプロジェクトに否応なしに参加させられたりしている。しかし、そういう現実的な側面がある一方で、本当にすぐれたハッカーたちは、プログラミングという手段を用いて、自らを「表現」しつづける。

もちろん、ここでいう「ハッカー」とは、他人のコンピュータに侵入して悪事をはたらく連中のことではない。それは、プログラムのソースコードを書き、コンピュータを自在に働かせることのできる、すぐれたプログラマたちを指す。したがって、一般的な印象とは逆に、この語には、そう呼ばれる人たちへの尊敬の念さえ込められている。

エッセイ集ということで、雑多なトピックの話が収められているが、個人的に、筆者 Paul Graham が考える「未来のプログラミング言語」に関する話が興味深かった。少し引用してみたい。


ハッカーの夢の言語というのを考えてみよう。夢の言語は美しく、明快で、簡潔だ。すばやく立ち上がる会話的なトップレベルを持つ。よくある問題を解くプログラムはほんのわずかなコードで書ける。どんなプログラムでも、書かなくちゃいけないのはアプリケーションに特有な部分だけだ。ほかのすべてはあなたのために既に作られている。(p.216)

その言語はいくつもの層から構成されている。抽象化の高い層は抽象化の低い層から透過的に構成されており、必要とあらば抽象化の低い層を直接叩くこともできる。

絶対に必要である箇所以外は、何事もプログラマから隠されてはいない。その言語の抽象化機能は、プログラマにどうプログラムすべきかを教えるのではなく、プログラマの仕事を楽にするためだけに提供されている。実際、その言語はプログラマを言語の設計に参加するものとして扱ってくれるのだ。(p.217)

コンピュータプログラミングのプロセスでは、現実世界における実際的な問題の発見に始まり、プログラマ/ハッカーによる見立てという、ある意味において非常に主観的なフィルタを通じて、コンピュータという対象への働きかけが行なわれる。このプロセスを最大限に効率化するべくプログラミング言語を最適化していくことは、まさに、コンピュータという、ある特別な形式の論理体系を備えた存在を、人間の思考や認知という異なった論理体系を持つもの側へと引きよせていくことに他ならない。そう考えると、「夢のプログラミング言語」は、人が社会の中で他者とかかわっていくために、生物的、歴史的、そして社会的文脈の中で最適化された仕組み、すなわち自然言語と、多くの点で共通点を持つことになるものかもしれない。

エッセイ集として、非常にカジュアルなタッチで書かれた本であるにもかかわらず、プログラミングという営みについてこの本で披露されている筆者の考えは、自然言語に関する問題から、さらには人間の思考や認知一般に関する問題へと、読み方によって、様々な興味を喚起してくれる。はたして、未来のプログラミング言語はどのような姿をしているのだろうか。それは自然言語や、より基本的な認知システムのしくみに、どれだけ接近してくるのだろうか。あるいはそれとは異なる方向へと進んでいくのだろうか…。

オブジェクト指向プログラミングに関する議論は、静的型付けと動的型付けの議論のようにはっきりしたものではない。型付けの議論では、どっちかを選ばなければならなかった。しかし、言語のオブジェクト指向機能にはいろいろな段階がある。実際、言語がオブジェクト指向であると言ったとき、そこには大きく2つの意味がある。いくつかの言語では、オブジェクト指向とはそれを使ってもプログラミングができるということであり、別の言語では、オブジェクト指向とは、それを使わなければプログラムが書けないことを指す。

私は、後者の言語にはあまり利点を感じない。少なくとも、何かを使うことが許されている言語は、何かを使うことを強制されている言語と同等以上であるはずだ。

Prev entry | | Next entry



大学関係


計算機プログラミング


その他いろいろ


--