言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

ことしやる事。

気がつけば C5 まであと二週間少々となってしまったにも関わらず、ここんとこずーっとぼんやりしてしまっているので目を覚ますべく去年今年のまとめを書く。

私はロサンゼルスの Viewpoints Research Institute という小さな研究グループで働いている。5年プロジェクトなので、あと3年はこの仕事をする。短期的な目標は複雑化したコンピュータ技術の全体をいかに人の手に負えるサイズにするか、長期的な目標は、コンピュータを使って出版文化と科学の発明と同じくらいの大きな変革を生み出す事だ。

目標は大きいが一歩一歩は小さな努力の繰り返しだ。私は唯一学歴の無い開発者として、オマケみたいな立場で頑張ってデモや開発ツールと作っている。例えばイアンさんの作った新しい言語とツールキットの上でワープロや画像作成ツールを作り、プロジェクトのドキュメントを新しいシステム自体で作るのが直近の目標だ。猛烈な車輪の再発明をやってるわけだが、それはそれで楽しい。これが今年やる事その1。

C5 で見せるのはちょっと違ってて、プログラミング言語が日本語や英語のように自然に日常生活で使われるようになると、どんな事が可能になるか、夏に作った chalkboard http://tinlizzie.org/chalkboard/ja.html のデモを中心に話をする。仕組みは Javascript を有効にしただけの Wiki なのでたいした事は無いが、私はこの小さな工夫にとても大きな可能性があると思っている。これが今年やることその2。

未来のコンピュータを発明するためには、言語のデザインがとても重要だと思うけど、このプロジェクトでは大変謙虚な姿勢を取っていて、言語を後でデザイン出来るようになっている。どんな言語をその上に作るべきかは面白い問題だ。私に言語のデザインは難しいけど、色々な言語で遊んで分かった事。

ハードウェア記述言語が熱い。

プログラミング言語は基になるハードウェア設計に大きな影響を受けているので、コンピュータが技術的妥協の産物である以上プログラム言語もその妥協の制限を受けている。たちが悪いのが、言語というのは私たちがものを考える基礎なので、本質的ではない制限に気がつかないまま、言語がものの考え方を制約してしまう http://d.hatena.ne.jp/propella/20080526/p1。たとえば、プログラミング言語に慣れると逐次的処理的にものを考えるようになって並列処理が扱いづらい物に思えてくる。

ここでハードウェア記述言語を知ると自分の思っていた言語の全体像がいかに狭い物だったか思い知らされる。ハードウェア記述言語ではなんでも並列で、逆に逐次処理が出来ない(LCD の初期化だけでこんなに大変 http://d.hatena.ne.jp/propella/20080601/p1)。私にはまるで平面国の平面人がはじめて立体国の立体人に出会ったような衝撃だった。

実はちょっとまえに内輪の会議で、FPGA 本気でやりましょうよーという提案があったのだが、きっと FPGA が必須になるのは 50 年も後の事だろうから今やるべきではないという結論になった。しかし去年は奇しくも LISP 生誕 50 年。現在の LISP の影響の大きさを考えると、決して遠い未来の話では無い。しかも私の当たらない勘によると、50 年を待つ事無く、ここ 10 年のうちに、ハードウェア記述言語と FPGAC言語インテルプロセッサ並みの影響力を持つかもしれない。いや、私たちがそうするのです。未来は発明する物ですから。

と思って Spartan-3A のキット買ったんだけど最近遊んでなくて、そのかわり Arduino ばかりやってる軟派な私。最大の理由はメインマシンが Mac になった事です。。。しかし Arduino は大変勉強になって、特にビデオ信号や A/D 変換器の実験をする事でパソコンの苦手分野、組み込みの得意得意について感覚がつかめた。

今、Arduino みたいな感じの FPGA キットがあったらいいなーと思っている。つまり、Mac でも使える IDE があって、USB 経由で簡単にダウンロード出来て。電池でも動く。これが今年やる事その3。かな?