2008年04月24日

最速のプログラミング言語

 モーターレースは馬鹿げた行為だ。特にフォーミュラカーの阿呆らしさときたら大したものだ。
 フォーミュラカーのレースは、車両のトータルな性能など追求しない。経済性はもちろんのこと、サーキットを速く安全に回ることさえ追求しない。たとえば「大馬力のエンジン」という見世物を維持するために、空気抵抗を大きくするレギュレーション(タイヤのカウリング禁止など)を山ほど盛り込んでいる。
 ……で、それが何か?
 すべてのスポーツやゲームは馬鹿げている。人がスポーツやゲームに熱中するのは、それが有用だからではなく、楽しく美しいからだ。レギュレーションが多少おかしくても、F1は楽しく美しい。2007年のサーキット最速のカードライバーはライコネンで、最速のコンストラクターはフェラーリだ。「レギュレーションがおかしい」と言ってみたところで、この認識は覆せない。それに、フェラーリがサーキット最速だからといって、フェラーリの市販車を買う人はごくわずかだ。
 
 さて本題に入る。
 『Beautiful Code』(オライリー・ジャパン)を読んだ。高名なプログラマ33人が、美しいコードについて語ったエッセイ集である。
 広範な美を期待して読んだが、すべて有用性にもとづくものだ。F1や陸上競技のような美しさは省みられていない。(ビットカウントの話題はいくぶんそちら寄りではある)
 考えてみると、プログラミングの世界には、モーターレースにあたるものがない。既存のプログラミングコンテストはみな技能選手権のたぐいで、実行速度を採点せず、有用性にべったりひっついている。実行速度だけを競うものは、The Computer Language Benchmarks Game があるが、モーターレースのドライバーに比べて、プログラマという要素の比重が小さすぎる。静的型言語であれば、処理系とコードの最適化に投じた労力を比較しているだけだ。プログラマの能力や、それを引き出すプログラミング言語の力を測れていない。
 プログラミングをスポーツやゲームとして扱う場がない以上、『Beautiful Code』の著者たちがスポーツ的・ゲーム的な美しさを語らないのも当然だ。
 しかし、この状況はよいものなのか? 最速のプログラマと最速のプログラミング言語を決めるイベントが求められているのではないか?
 
 最速のプログラマと最速のプログラミング言語を決めるイベントは、どんなレギュレーションがいいだろう。
 出題に対してコードを書き、テストにかける、というところまでは普通のプログラミングコンテストと同じでいい。ただしそのテストはパフォーマンステストでもある。出題からテスト準備完了までの時間制限は、2時間くらいが見ていて面白いだろう。
 マシンを主催者提供にすると、ハードウェアの自由度が下がってつまらないので、マシンの電力で制限をかける。今なら300Wくらいが知恵を絞るのによさそうだ。
 用いるソフトウェアは一切制限しない。使用言語を決め打ちする必要もない。出題の瞬間、全員が論理型言語で書き始める、というのも面白い。
 このレギュレーションでは、どんなプログラマと言語が有利だろう。歴戦のLispハッカーとC++ハッカーがしのぎを削るか、ML系のアカデミシャンの独壇場か、あるいはレーシングカーのような非実用的な処理系をひっさげたマイナー言語と言語ハッカーが躍り出るか。
 もしこのイベントが大規模なものになり、MS・IBM・Google・Sunが鎬を削るようになれば、おそらくレーシングカー的なマイナー言語が優位に立つだろう。ありとあらゆる最適化技術を乗せた、最速のプログラミング言語だ。
 その言語はきっと、『Beautiful Code』の哲学が夢見ることさえできない美しさを備えている。

Posted by hajime at 2008年04月24日 23:06
Comments

いやぁ、面白そうな話ですね。
最速プログラミング言語の知恵を絞った努力の積み重ねの「美しさ」を見てみたいなと強く思いました。
レギュレーションとしての電力規制なんて発想がすばらしいですね。

多少趣は変わりますが、中里さんの量子コンピュータに対しての意見をぜひ伺いたいと思いました。
欲を言えば、並列処理と絡めて。

Posted by: oka at 2008年05月21日 15:33

どういう仕組みになっているのかわかりませんが、昔のエントリにはコメントを書けないのですね(なのでこちらに書かせていただきました)。

中里さんのサイトには、「妄想型プログラミング言語」のページからやってきました(どうやって「妄想型~」にたどり着いたかは残念ながら忘れてしまいました)。

「百合」が何なのかさえ知らないのでおかど違いかも知れませんが、興味深い話が多くて、アーカイブすべて拝見(少なくともページビュー)させていただきました。

これからも勝手に期待しています。

余談ですが、私の生年月日は1974/9/23です。

Posted by: oka at 2008年05月21日 15:45

こんにちは。

挨拶が遅れてしまいました。ごめんなさい。

大事なことを書き忘れていました。

アーカイブの最初のほうに、以前の中里さんへの日記(以前のBlog?)へのアンカーがあったのですが、リンク切れでした。

差し支えなければ参照させてもらえませんか?
zipファイルか何かでも構いません(お手数がかからない方法で構いません)。Windows環境(+.Netの開発環境)ならあります。

Posted by: oka at 2008年05月21日 16:03

 はじめまして。

 量子コンピューティングは現在のところ実用から程遠い状態で、核融合炉や軌道エレベーターと同じカテゴリーのものだと認識しています。未来技術の本命ではあるけれど、直線的なアプローチでは難しいことが判明しているものです。
 ですから研究対象としては、大穴狙いでしょう。自分が現役のあいだにブレークスルーが起こって新局面が開ける、という可能性に賭けるわけです。
 お尋ねの並列性ですが、これは物理現象よりは人間の思考形態にかかわる問題です。論理にとっては半順序と全順序のあいだに優劣もクソもありませんが、人間の思考にとっては全順序のほうが簡単です。量子コンピューティングは物理現象レベルで止まっているので、並列性の問題とはいまのところ縁がなさそうです。
 もしブレークスルーが起こったら、おそらくその量子コンピューティングは、いま想像できるものとはかけ離れたものになるでしょう。バベッジの時代に現在のプログラミングが想像できなかったように。

 以前の日記は kaoriha.org/nikki.htm に残っています。

Posted by: 中里一 at 2008年05月21日 22:30

以前の日記を読んでからお礼を言おうと思ったのですが、
もうしばらくかかりそうなので。

公開(というより告知?)ありがとうございます。
今、ようやく1999年が終わりそうなところです。
いやぁ、日記というか記録って時事ネタに対する未来予測とか後で
検証できるので面白いですね(中里さんの書いた時事の1/5も
知らない話でしたが)。
ひょっとしたら「春よ、来い」は1, 2巻ぐらいまで読んだことが
あるような気がします(つまらなくて途中で読み進められなくなったのと
読んだのが3年ぐらい前のことなので似たようなタイトルの本だったかも)。


前置きはこのくらいで、量子コンピューティングの話です。
私は、プログラマなんですが、並列処理に本気でアプローチする
機会がなく、量子コンピューティングも立ち読み程度で誤読バンザイぐらい
の理解でして、どちらかを知るきっかけになれば良いぐらいのつもりで
質問しました。

人類はトランザクションを理解できていない話と
複数のアウトプットに対する同時解釈が達成できていない話は
あまり関連性がなく、似ているように感じたけれど、本質は全く異なる話と
理解しておいたほうがよさそうですね。

どこかの翻訳モノの小説で読んだ内容ですが、時空を行き来することが
可能であること(可能、不可能といったレベルではなく、物事の捉え方)
の説得材料として、文章の横書きのみを行う民族にとっては縦書きの文章
を扱う民族が存在する→時空の方向は一方向ではないと説得しているくだりで、
一瞬説得力がありそうだけど、よくよく考えてみると(ちょっと考えてみると)
人間が事物を判断する量に限りがあるというか、単一の事柄しか解釈できない
点はその文脈の中で前提としているので、私の解釈では(昔の?)Windowsの
マルチスレッディングがエセの機構であることと大差ないなぁと思っていたので、
ひょっとしたら並列処理の難しさと量子コンピューティングのコーディング
の難しさは似通った部分が多いのではと思っていました。

(知識はおろか、筆力もなくてスイマセン。)


Posted by: oka at 2008年05月23日 15:58

こんにちは。okaです。

000315[汝のコンパイラを愛せよ]
に関してです。

Joelの「間違ったコードは間違って見えるようにする」
を見たとき、クラスで解決する話だろって私も思いました。
というか、Excelですら、rowとcolがクラスになっていない
なんてありえないと思いました。
おそらくパフォーマンスのためとかなんとか言い訳するのかな
と思いますが、そもそも、クラス化するとパフォーマンスが
劣化するようなつくり(言語、コンパイラ?)の方が問題な気がします。
MS以外のプログラマが表計算を作りきれないのもごもっとも
という気がします(言い切ると語弊がありますが)。

ここから余談です。というか私の文章余談ですが、
ブログというかドキュメントのファイル名が数字6桁なところに共感が持てました。
私のサイトでは5桁です。ここら辺が心意気の差なのでしょうね。
ひょっとして、Movable Typeが6桁であるがゆえだったら、とても間抜けな話です。

日記のどこかで見かけた「偽悪」という言葉ですが、パタリロの「偽悪者」という話が
私は好きです。為政者(権力者)が「偽悪」って素敵です。

Posted by: oka at 2008年05月23日 16:29

 私の過去の日記には明らかな間違いが散見されます。未来の日記も同様でしょう。お気をつけください。

 ブログのURLはお察しのとおりMovable Typeそのままです。
 心意気でいえば、カウンタがないのが一番でしょう。大手ブログサービスには128ビット乱数らしきURLを使うものがあります。

Posted by: 中里一 at 2008年05月26日 22:03

こんにちは。okaです。

ふくさの包み方や、技術情報を丁寧にまとめ上げたいわゆる品行方正なサイトも
それはそれでありがたいのですが、中里さんのサイトのように脳への刺激となる
ようなサイトも読んでいて楽しいです。書かれていることそのものというよりは
発想、視点の洗練された奇抜さを楽しませてもらっています。

調子に乗ってもう一件。

ユビキタスについてどのような意見をお持ちですか?

わたしは、RDBMSの主キーの概念すらないお粗末な機構ぐらいの認識なのですが、
中里さんの一家言を伺えたらなぁと思いまして。
自動販売機でお金の換わりに携帯で払えるのがユビキタスだなんて言われていま
すが(古い?)、全然うれしくないし。
せめて(それがいいとは言いませんが)、自販機の飲みたい飲み物に携帯をかざ
したらその飲み物が出てくるぐらいのUIが欲しかったです。
それでもパラダイムシフトとは呼ぶべくもありませんが。

Posted by: oka at 2008年05月29日 15:03

 ヒマな中高生のなかには、携帯ですさまじい数のメールをやりとりする人がいるそうです。携帯という手段により、授業中のメモのやりとりが学校の外まで広がってしまったわけです。
 Suicaの乗り降りや買い物の履歴が記録されていることはご存知でしょうか。公安警察にしょっぴかれた人は、Suicaの履歴をチェックされていることでしょう。
 こうした具体例を「ユビキタス授業中メモ回し」「ユビキタス行動記録」と呼んでみたところで、事態が明確になるわけでもなく、新しい何かを予想できるわけでもありません。単に「ユビキタス」と言ってみただけ、なのです。
 しかしその「言ってみただけ」がすべて、という仕事もあります。扇動系のコンサルや電通です。彼らはなにしろ扇動が仕事なので、マスメディア上で目立つのがうまく、いらない知識を売り込んでくれますが、こういう知識にはかかわるだけ時間の無駄です。
 「ユビキタス」という言葉は、「言ってみただけ」の仕事にとっては非常に便利なものです。上の例にみたように、いろんなものについて「言ってみただけ」を実行できます。が、それ以外の役には立ちません。

Posted by: 中里一 at 2008年05月31日 23:01