本連載では、コンピュータの世界で卓越した才能を発揮しているプログラマたちに、スキルやキャリアに関する10の質問し、プログラマとしての考え方・生き方を探る。天才の言動からわれわれ一般人がまねできることとは何か。今回は新春特別企画として、10の質問枠を取り払い、竹内郁雄氏との対談形式でお伝えする。
読者の皆さんは、「Cyan」(サイアン)という言語をご存じないかもしれない。Cyanは、Lispのマクロを持ち、Python風のインデントによってブロックを表すプログラミング言語。2008年の春、林拓人という1人の高校生によって設計された。
連載第1回の竹内郁雄氏が「開発」の天才、第2回の五十嵐悠紀氏が「発想」の天才とするならば、今回の林氏は「プログラミング言語」の天才だ。
林氏がプログラミング言語に初めて触れたのは中学3年の夏休み。そこから冬休みまでの5カ月間に、5つのプログラミング言語を習得した。その後もいくつかのプログラミング言語を学ぶ中、林氏の興味はWebサービスなどのものづくりには行かず、ひたすら言語自体へと向かっていった。
高校2年の春、自身でプログラミング言語Cyanを作り上げた。Cyanを設計した林氏は、「U-20プログラミング・コンテスト」(以下、U-20プロコン)で経済産業大臣賞を受賞。初めて本格的に書いたプログラムは、自分の設計した言語の処理系という、何とも特異な、前代未聞のプログラマである。
インタビュアーは、Lispでおなじみの東京大学 教授 竹内郁雄氏。才能あるプログラマの発掘・育成のためならばと、ボランタリーで引き受けてくださった。
1.――文系ですか? 理系ですか?
竹内氏 林君はいま高校2年生か。学校の勉強で得意科目は理数系?
林氏 理数系科目は好きですけど、得意とまではいえないです。国語は比較的得意です。
竹内氏 素晴らしい! 私の持論ですが、国語ができる(=日本語できちんとした文章が書ける)人じゃないとプログラムは書けない。これは非常に重要です。情報処理推進機構(IPA)未踏IT人材発掘・育成事業(未踏プロジェクト)で、逸材中の逸材といわれた登大遊(のぼり だいゆう)君も、国語力がすごい。プログラミング能力と国語力が同じくらいじゃないかな。本当にすごいプログラマは国語ができる人が多いです。いま日本は文章を書くという教育をほとんどしていないですが、林君は自分で文章を書く勉強をしたことはありますか?
林氏 本は好きで小さいころからよく読んでいました。特別にものを書く勉強をしたことはないですが、作文を書くときにはそれなりの注意を払って書きます。あと、日本語の文法にも興味があります。
竹内氏 そのセンスが重要なんです。話を聞いて分かったけど、林君は文系っぽいんだよね。その文系っぽい人が計算機に目覚めたときは怖いんですよ。恐ろしい力を発揮しますから。
2.――これまでのプログラミング経験を教えてください
竹内氏 プログラミングを始めたきっかけは?
林氏 中学3年の夏、帰宅部(註)で暇をもてあましていたとき、ふと本棚から中学2年の文化祭でもらったコンピュータ部の部誌を引っ張り出して読んだことです。部誌に書かれていた日本語プログラミング言語TTSneoを見て、これだったら自分でもできそうだと思い、やってみました。
竹内氏 なかなかマイナーな言語ですね。日本語だったら自分でもできそうと思ったんですね。TTSneoの後はどんな言語を勉強しました?
林氏 TTSneoの後はゲームを作るHSPを勉強しました。その後C言語をやろうとして、C++でオブジェクト指向をかじったりしました。そのときはフレンド関数などの使い道がよく分からず、オブジェクトは構造体に毛が生えたもの程度にしか思っていませんでした。そして、中学3年の冬にプログラミング言語の処理系の作り方を知りました。
竹内氏 中学3年の夏から勉強し始めて中学3年の冬には処理系の作り方を? 早いね! 教科書を読んで勉強したんですか?
林氏:処理系の作り方は、『いまどきのプログラミング言語の作り方』という本で勉強しました。この本にプロトタイプベースのオブジェクト指向について書かれていて……。
竹内氏 いきなりそこに行くか?! この本をきっかけにいろいろなプログラミング言語を習得したんですか?
林氏 はい。当時、オブジェクト指向はクラスベースという固定観念があったのですが、プロトタイプベースを知ったときにオブジェクト指向は広い意味でもっと面白いものだと思いました。プロトタイプベースのオブジェクト指向に興味を持って、いろいろな言語を眺めるようになりました。ちなみにそのときはまだLispを面白いとは思えなかったんです。Lispの第一印象は「変な言語」。後にプログラミング言語を作ろうとしてもう1度学び直したとき初めてLispの面白さが分かりました。
竹内氏 一般に、オブジェクト指向は入門教育が大変なんです。初心者にとって最初に越えなければならない壁が多いから。まずクラスやインスタンスありきで、最初にやたらと抽象的な概念が出てきます。入門言語としてオブジェクト指向がやりにくいというのは教育界でも定評があります。その点林君の場合はプロトタイプベースから入ってとっつきやすかったんですね。そういうところに自然に入っていくのがすごい。ただ、プロトタイプベースは、職業プログラマに対しては必ずしもお薦めしませんが。
それにしても、本当にプログラミング言語遍歴が速いよね。中学3年の夏休み(8月)からTTSneo、HSP、C言語を勉強したんですよね。
林氏 はい、ですがCは文法だけ眺めて止めにしました。これでプログラムは作れないかな、と思ったんです。低水準過ぎる気がして……
竹内氏 あー、いいね〜その感覚。それで、中学3年の冬休み(1月)にC++に移って、その後プロトタイプベースのオブジェクト指向とJavaを学ぶと。
林氏 自分でもこんなに早かったっけ、と思います。
竹内氏 TTSneo、HSP、C、C++、Java。つまり8月から1月の5カ月で、5個のプログラミング言語を習得したんだ?! 特別なセンスですね。ほかにどんな言語を勉強したんですか?
Copyright © ITmedia, Inc. All Rights Reserved.