我々がやっていることは何て呼んだらいいんでしょう。
Dave: コーディング。
弾: では質問を少し変えて、良いコーダーになるためにはどうしたらいいと思いますか?
Dave: とにかく重要なのは情熱。Passionです。コーディングを続けていくという情熱。それ以外は、それほど取るに足りることではないんじゃないか。自分が知ってる一番優秀なプログラマは優秀なミュージシャンでもあるけれども、これは単なる偶然とは思えない。
出版の将来
弾: DaveさんはThe Pragmatic Programmers, LLCで出版に携わっていますが、出版は今後、どうなっていくんでしょう。
Dave: いろんなことが起こるんですけど、まず1つ大事なのは、出版社の役割。かつては、出版物の配布がすごい重要だったんですけど、それはインターネットによって根底から変わってしまった。今後は出版社の役割というのは、その情報ソースに関して、一定の品質を保証すること。これは出版社の役割として今後も残るのではないでしょうか。
The Pragmatic Bookshelfでやっていることに関連しますが、実際にどういう風にある本が出版されるかということも変わるでしょう。The Pragmatic Bookshelfでは、まだ完成していない本を出してるんですけど、それによって、ユーザから新たなフィードバックも得られます。印刷されて、今まで知識を一方的に配ってたものがもっと双方向になるっていうプロセスが、ネットに限らず紙の本の世界でも重要になってくるでしょう。だから、出版社というのは、本を一方的にばら撒くところではなくて、読者のための広場のような存在になっていくんじゃないでしょうか。
弾: では、The Pragmatic Bookshelfの今後の刊行予定は?
Dave: 今年の7月にErlang。ほかの言語も控えてますが、それはみなさんを良い意味で驚かせたいので秘密です。あともう1つ書いているのは、今までのソフトウェアの中で人々が見落としがちだったことです。たとえばアクセシビリティ、障がい者の人がどういうふうにWebサイトとかにアクセスしていくのかっていうの、これ見落とされがちですけど、非常に重要な話題です。こういう分野にも今取り組んでいます[1] 。
プログラミング経験
弾: プロフィールでは自身を「プログラマー」とおっしゃってるんですけど、システム開発の経験としてはどんなことをしてきましたか?
Dave: プログラムを始めたのが1971年か1972年。プログラミング言語に関しては、20代からやっていました。特にBASICに関しては自己改変コードを書いたのは、私が初めてでしょう。
弾: PEEKやPOKE[2] は?
Dave: 使ってません。それで、大学に行ってAdaとかSimulaとかAPLとかBCPLとか…ありとあらゆるプログラミング言語を使ってたんですけども、それでずっとそのまま今に至ります。
弾: そこまでいろいろコンピュータ言語を研究してたんだったら、俺言語を作るつもりはなかったんですか?
Dave: 2通りの答えがあります。1つはYES、そうです。実際にコンピュータプログラムを書くというのは、自分の言語をある意味では作っているんです。自分の世界を作る意味で。もう1つはNO。コンピュータ言語を考え出すというのは、まったく独特の才能で、それは私の才能ではありませんでした。
弾: そういえば、Rubyの特徴というのか、欠落した部分として、自己改変のための機能を少なめにしてますよね。
Dave: 「+」の定義は変えられるけど(笑) 。Rubyのセマンティックスっていうのはものすごい幅が広いんですけども、それでも幅広いセマンティックスをさらに言語内のしくみでもって変えるしくみっていうのは確かにあまりない。たとえばLispのマクロですとか、Perlのソースフィルタとかっていうのはないし、Matzさんもそういった機能は嫌い。
コンピュータ言語も人間の言葉と同じように、話題によって得意不得意がある。ロマンスを語るのに向いた言語もあれば、たとえば論文を書くのに向いた言語もある。
弾: Rubyはどんなことに適した言語だと思いますか?
Dave: 頭の中で考えたプログラムをそのままコードに転写するのに非常に向いています。考えたままに書けばたいてい動く。なんでRubyが好きかっていう、私なりの理由です。
撮影:武田康宏