この質問をする方ならたぶん名前は聞いたことがあるであろう、とあるプログラマの方です。私は関東地方のとある地方国立大学の情報系学部に進学しましたが、彼は私と同じサークルで一年後輩でした。ここではN君(仮名)としておきます。
N君の名前は高校時代にとある伝手で聞いていたのですが、その時は一度聞いただけですぐに忘れてしまっていました。しかし、二年生に上がった頃、サークル内では「今度入ってくる新入生はヤバいらしいぞ」ということで噂になっていました。私が入っていたサークルはとにかくコンピュータやプログラミングが好きな人間が集まる「ちょっと変わった」サークルでしたが、彼は高校生にして書店に並ぶような技術書籍を執筆しており、当時のケータイのメモリを編集するソフトなんかも開発しているということで、入ってきた時点で技術の面で頭抜けていたことは確かでした。
そんなN君と私はサークル内でよく激論を交わす間柄でもあり(ちなみに、ほとんどの議論で私が言い負けていました)、仲良く喧嘩するような仲でしたが、彼と何度かプログラミング勝負をしたのが印象に残っています。今回はその内の一つについてお話したいと思います。
お題はといえばSMTPプロトコルをしゃべるメール送信プログラムをどちらが早く書けるというもので、彼が使用したのはC言語、私が使用したのはJava言語。TCP/IPのライブラリが標準で備わっているJavaの方が有利なのは明らかでした。が、蓋を開けてみれば私の敗北。どのくらいの時間がかかったかは覚えていないのですが、彼の方が30分以上早くSMTPでメールを送信する簡易プログラムを完成させて「言語のハンデがあってもここまで負けるのか」と悔しかった思い出があります。
若くして実績を積み上げていたN君でしたが、驚くべきは、それでいてデータ構造に関する知識についてはあまりなく、記憶が確かなら大学一年生の時に知っていたデータ構造は配列だけでした。そんな彼が一年の内に業界を沸かせる有名なVPNソフトウェアを開発したわけですから、当時の自分も驚くばかりでした。当時「Why TCP Over TCP Is A Bad Idea」なんて論文があったくらいで、このアイデアはネットワークに詳しい先生方から見ても「筋の悪い」アイデアとされていたのですが、彼は独自の工夫をすることでTCP over TCPを採用しながら実用的なVPNソフトウェアを構築してみせました。すぐ近くでその様子を見ていて私は色々な意味で「かなわないな」と思うばかりでした。
そんなN君は現在も、さまざまな分野で活躍していますが、当時、近くで見ていた人間としては、従来「良い」とされていた正攻法に頼らずに恐ろしいまでの馬力で実用的なソフトウェアを開発してしまうという意味で、まさしく「天才」というのが相応しい人物だと思います。
凄腕と言えるプログラマの方には結構お会いしたことがあるのですが「なるほど、わからん」という発想の仕方をするタイプの人は彼が最初で、それ以降、同じくらいぶっ飛んだ発想をする方にはほとんど会えていない気がします。