第3回 Cyanを設計した高校生、5カ月で5つの言語を習得
インタビュー:竹内郁雄(東京大学教授)
執筆:荒井亜子(@IT自分戦略研究所)
2009/1/15
林氏:Javaを勉強した後、RubyやPerl、Pythonの文法が面白くて眺めてました。だから、(設計で参考にした)Pythonは実際に使ったことはないんです。
竹内氏:眺めて文法だけを習得するってマニアックだよね!
林氏:高校1年になって、Rubyの開発者 まつもとゆきひろさんのブログでLispやHaskellが紹介されているのを見て、関数型やLispを勉強しようと思いました。
竹内氏:Lispは本で勉強したんですか?
林氏:「xyzzy Lisp Programming」というLispの入門サイトを見ました。アルゴリズムのサンプルなどはあまり見ないで、マクロなど特徴的な機能だけつまみ食いしました。
竹内氏:いや〜、徹底した言語マニアがにじんでくるよ。特異な才能。天性的に文系の発想です。林君は言葉の構造が好きなんだね。もしかしたらある日突然、比較言語学に転向するかもしれない。例えば、インド・ヨーロッパ語と中国語の構造の違いや、日本語とモンゴル語がどれくらい似ているかを研究しだしたりして。
Lispを勉強してマクロを面白いと思ったということは、多重代入もこの時期ですか?
林氏:はい。
竹内氏:継続は?
林氏:継続はちょっと後ですね。Schemeなので。
竹内氏:Webでマクロと多重代入を勉強してから、Schemeに入ったんだ?
林氏:Schemeは勉強しようと思ったというか、Schemeのコードが書かれているブログを見て、defineでの定義など簡単な文法は押さえていました。処理系をダウンロードしてマニュアルを眺めて、大枠をつかむくらいです。継続の概念はSchemeを勉強する時点で興味がありました。実行の位置が飛ぶのが面白いと思いました。Rubyの継続も参考にしました。
竹内氏:(多くのプログラミング言語を)触りまくりなわけね。でも、触りまくりなんだけど、本格的なプログラムを書いたのはCyanの処理系が初めてってことだ?
林氏:そういうことです。
竹内氏:ははは、すごいね〜! 最初に作ったプログラムが自分の作ったプログラミング言語の処理系というのは、何というかしびれてしまうなぁ。
| 「もし林君がぱっと引っ張り出した部誌がコンピュータ部の部誌ではなく比較言語学部の部誌だったら、全然違う道を歩んでたと思うよ」(竹内氏)。 |
■Lispを勉強した後、いよいよCyanの開発に乗り出す
Cyanとは、ALGOL文法の言語にLispのマクロを入れることをコンセプトに作られたプログラミング言語。設計の目標は、LispのマクロとS式を分離すること。Pythonのインデントやプロトタイプベースを用いるなど、処理系をより簡単に実装するための仕様が固められている。つまり、Cyanはプログラムを抽象的な観点でとらえているため、ものをつくる実用性は無視している。開発者に「こういう機能が合わさっていると面白いな」と思わせるためのものだ。言語好きによる言語好きのための言語だといえる。
3.――Cyanができるまでの経緯を教えてください
林氏:Cyanを着想したのは高校1年の春です。本当は高校1年のときにU-20 プロコンに応募しようと思ったのですが、完成が間に合いませんでした。Cyanの開発言語はC#ですが、高校1年の夏休みの間はJavaで書いていました。
竹内氏:どのタイミングでC#に変わったの?
林氏:C#で書いたのは、高校2年のU-20 プロコンに応募したときです。コンテストに出す作品を、Javaで書いたものを引き続きC#で書くよりは、もう1度書き直そうと思いました。Javaを使うのは飽きたというか、Javaは遊び心がないかなと思って。その点C#はちょっとユーモアがあるので。
竹内氏:C#対Java、つまりマイクロソフト対サン・マイクロシステムズの戦いですね。いまの発言は本音ベースで実に面白い。確かに、Javaはあまり遊び心がないですね。最近のJavaは随分性能が良くなってきたけどね。Javaに遊び心がない、とても言い得て妙! それでいうとLispとかRubyは遊びまくり。
C#で書き直した感想はどうでした?
林氏:率直にいって、面白かったんですよね。例えば、ゲッターとセッターを使えば長い名前を簡略化できたり、継続の概念を抽象化して、評価器の中にゲッターとセッターで継続を出し入れするなど、抽象的に書けることが面白かったです。あとはJavaでもできたんでしょうがリフレクションを多用して簡単に書けたことも面白かったです。
竹内氏:高校2年生から出る言葉ではないなぁ。ところで、Cyanの名前の由来は?
林氏:Cで始まる単語にしたかったんです。理由は、HSPからCに入ったときに、Cが構造化されていることに感動を覚えたからです。Cで始まる4文字がよくて、辞書で探しているうちにCyanという単語に出合いました。これは後付けですが、Cyanをローマ字読みするとシアン。Cyanには「思案」「試案」「私案」という意味があります。
竹内氏:名前を4文字にこだわって辞書で探して見つけて、その後に日本語の言葉を当てはめて考えるというやり方、私と同じなんですよね。私も昔TAOという言語を作ったけど、私の場合3文字。分厚い辞書をバンと開いたら「TAO:宇宙万物の根本原理」が出てきて、「これしかない」と決めた。その後、TAOの本を英語で読んでえらく感動して、「プログラミングとTaoismの関係」について研究会で発表したことがあります。ほとんど冗談みたいな内容だけどね。
| 信条は、視野を広く持つこと。「自分の性格は、悪くいえば飽きっぽいのですが、それでいまのCyanがあります。普通は一緒にできないものを一緒にしてしまおうという感覚を大切にしたいです。固定観念にとらわれないように」(林氏) |
| 林氏の1日のスケジュール/キャリアプラン |
【写真】天才プログラマに聞く10の質問 バックナンバー
- 第1回 Lispの仏さま竹内郁雄の目力
- 第2回 麗しの天才科学者、五十嵐悠紀の「科学って素敵!」
- 第3回 Cyanを設計した高校生、5カ月で5つの言語を習得
| 5分で分かる「10年後も生かせるスキル」習得法 【スキル編:連載最終回】―― スキル習得のコアとなる3つのポイントを再確認しよう! |
| 2009年技術トレンド&求められるスキル ―― 不況に強い=オフショアされない エンジニアを目指せ! 〜第14回:エンジニア・キャリア進化論〜マイナビ転職 |
| 29歳、メーカー勤務。もうひとつの顔は大学院1年生…… デザインも工学も学びたい! 『東京夢工房』でモックアップからはじまる“ものづくりアーキテクト”への夢 |
| 今年の新人は「どう育てたい?」、新人育成の「『ツボ』ってなんだ?」 これから準備しても、まだ間に合う! プロが指南する“実践的2009年度新人研修” |
| キャビンアテンダント出身、現在ビジネス研修企業の社長、私生活では一児の母。 完ぺきと思える経歴の彼女が、さらに社会人大学院へと通うワケは…… |
| 「一見、関係なさそうな授業が仕事に役立っています」 ―― 仕事と両立しながら キャンパスライフを送る、現役学生3人が“社会人大学の魅力”を徹底討論してみた! |
|
|
| 1日1問、模擬試験問題をメールで届けます | |
| ITスキル研修4000件、最新情報の検索できます |
ゼネラルスポンサー
自分戦略研究室スポンサー
|
◆ ―― いよいよ、スキル編、連載最終回。 5分で分かる、10年後も生かせるスキル習得法 ◆ 2009年の技術トレンド&求められるスキル 〜エンジニア・キャリア進化論(第14回)〜
|
お勧め求人情報
| ◆ “iPhone”“路線バス”“N700系新幹線” 身近なものはデザイン次第でこんなにかわる |
||
| ◆ これから準備しても、まだ間に合う! プロが指南する“実践的2009年度新人研修” |
||
| ◆ 仕事をしながらでも、1年間なら頑張れる! 元CA〜現企業社長の在校生インタビュー |
||
| ◆ “社会人大学院って、実際どうなの?” 現役学生が本音で語る「社会人大学の魅力」 |
||
|
**先週の人気講座ランキング**
〜データベース編〜
|
|