知人の家で流しそうめんをやるということで、お誘いを受ける。 本当は8月9日の予定で、LL Saturdayと重なるので無理だと思っていたのだが、 例の台風のおかげで今日に延期になっていたのだ。 あの台風にはひどい目にあわされたが、いいこともあるのだな。
あいにく天気はあまり良くなく、小雨混じりの天気であったが、決行。
竹を割って樋のようなものをつくり、器を作り、箸を作り、水とそうめんを流す。 途中から水遊びを始める子供たちもいたし、庭の家庭菜園を探検するものもいた。
後には、泥だらけの靴、びしょぬれの服、虫さされの痕。
大人も子供も楽しんだ。
ささださんが松江に来た。
未踏ユースに通ったので、その打ち合わせ、というのが口実で(あれ?)、 実際には『Rubyist Magazine』の第1回インタビューのためである。
栄えある第1回に選ばれたのはうれしいが、なんかなかなか調子が出なくて、 あまり気の利いた答えが出来たようには思えない。 期待している人がいるとしたら悪いけど。
後半はYARVの報告と調整。とりあえず動きはじめているようだ。 このまま待っていれば、労せずしてRiteが手に入るということなのだろうか。 なんか最初に公言していた完全書き直しという感じじゃなくなっちゃったけど。
夕飯を食べようか、という話になったのだが、そうすると明日〆切の論文がパンクしちゃうので、 泣く泣くあきらめた。
Paul Grahamが「新しいLisp」を作るのは大変だと語った話。
You don't have to be independently wealthy to make a new language. Larry Wall and Guido van Rossum and Matz weren't.
(「『新しいLisp』を作る人がたくさんいないのは 皆がPaul Grahamほど金持ちではないからだ」というコメントに対して) 新しい言語を作るために金持ちである必要はない。 Larry WallもGuido van RossumもMatzも金持ちじゃない。
The advantage they had over us in the Lisp world was that they started from a lower point. Larry Wall, for example, started out trying to make a better awk. That's not hard. Awk is missing a lot. Whereas we in the Lisp world are bumpimg up against the asymptote. Among other things, we can't avail ourselves of the one of the richest sources of features for new languages: taking stuff from Lisp. We have to invent genuinely new things. Things, moreover, that people like John McCarthy, Gerry Sussman, and Guy Steele didn't think of. That's not so easy.
彼らが新しい言語を作るのに成功したのは、「低いところ」から始めたせいだ。 たとえば、Larry Wallは「より良いawk」を作ろうとした。それはそんなに難しくない。 Awkには欠けたところがたくさんあるから。 ところが我々には新言語を作るときに使える一番上手い手が使えない。 それはLispから機能をとってくることだから。我々が 新しい言語を作ろうとしたら、まったく新しいものを発明しなくちゃならない。 John McCarthyやGerry SussmanやGuy Steeleが思い付かなかったようなものを。
それは簡単じゃない。
金持ちじゃなくて悪かったな(笑)。たしかにPaulの百分の一くらいしか資産はなさそうだ(泣)。
それは、ともかく、Lispは確かに機能の宝庫で、Rubyもたくさんのものを頂いた。 「Rubyの良さ」の多くはLispのおかげである。それは事実だ。
だけれど、世の中には「Lispが持ってないもの」もいっぱいあるはずなんだな。 それが見えないってのは、ある意味幸せなことかもしれない。
でも、言語デザイナーとしてのPaul Grahamの限界も意味してそうだ。
StringってのはRuby全体のあちこちで利用されているので ごくわずかな問題が悲惨な状況を引き起こす。 もっとも、Rubyに関していえば、世界中のユーザが予想もしない使い方をしてくれるんで、 Stringじゃなくてもほぼあらゆるバグが悲惨な状況になるんだけど。
再現しないものも多いしね。
で、日がな一日テスト実行してはバグとり。繰り返し。
なんて幸せな日だ。
ささだくんのところの場所を借りてM17Nミーティング。 今までの議論を忘れてたりして落ち込む。
結局、今回いろいろ話してて、新たに具体的に決まったのは、Rubyのリテラル強化。
ただし、以下の場合には事前に専用のライブラリをrequireする必要がある。
そのこころは、
である。\Nなどに専用ライブラリを必要とする点はPerl譲りである。 ただし、useのないRubyでは「事前にライブラリをrequireする」仕組みから 用意しないといけない。
あと、-Kの扱いや統一内部コードの問題もあるのだが、 結論を出せなかった。「文字」の問題(Unicode結合文字とか)に 時間を取りすぎたか。
なんだかんだ言って、M17Nが足を引っ張りそうだなあ。 「今月中に仕様をFIXせよ」との、ありがたい「ささだ指令」をいただく。
泣きそう。
「Erlang七つの大罪」とかいうからどんなんかなと思って読んだら、 ほとんどいいがかり。なんなんだよ「It is a computer language (based on English).」とか。
どうやら、COSAという「言語?」のファン(自分が作ってるんではないらしい)で そちらをほめたいから他の言語をけなすという行為に出てるようなんだが、 逆効果でないかな。
xorとbit shiftだけを作った(擬似)乱数生成器。
私は算数弱いんでよく理解できないんだけど、こんなにコンパクトなコードで 質の高い乱数が生成できるって言うんなら、それはすごいことではないだろうか。
なかのZEROという会場で。
思ったよりもスムーズに移動できたので、Larry Wallのキーノートに間に合った。 もっとも、内容は先日Google Tech Talkでのものとあまり変わらなかったので、 予習できてて、理解しやすかった。予習は大事だよ。
パネル。「100年の言語」というのは難しすぎると思う。
なにしろプログラミング言語が誕生してからまだ60年ほどしか経っていないのだから。 もちろん、誕生直後の方が変化が大きいので、これからプログラミング言語に 60年代から80年代にかけて発生したような変化が同じペースで発生するとは思えないけれど、 安易な予想は当たりそうにないと言う点ではこの点は重要ではない。
個人的には、100年後のコンピュータはもうプログラムされるものでさえないと思っている。 たとえば、ホーガンの「未来の二つの顔」に出てきたヤヌスをイメージしてもらえればよい。 基本的な「本能」以外は学習によって獲得するのだろう。
そういう点では、「100年後になってもノイマンアーキテクチャなら」という 吉岡さんの質問は、前提が満たされないと感じている。 そもそもプログラミングが不要なのにプログラミング言語もないもないよね。
とはいえ、100年ではなく、もっと短期(10年とか)のスパンで未来を予測すれば、 誰かに命令を簡潔に伝えたいというニーズと、 そのためのDSLを組み立てるための、「メタDSL」としての言語の役割は どんどん増すと思う。
問題は、適切な変化幅のメタDSLを選ばないと、 人の数だけまったく違うDSLが発生してしまい、 バベルの塔(このDSLの知識が別のDSLに適用できない)になってしまう。
Lispは世界最初のメタDSLではあるが、個人的には自由度が高すぎると思う。
高橋会長から「1.9のキラー」ってなんでしょうね、と問われる。
こまごまとしたのは1.8.7で取り込まれちゃったので、
になるのではないか、と答えた。どれもぱっとしないけど。
性能については、現時点で1.8でそれほど困っていない人がほとんどと言うのがある。
M17Nはある意味当然だし。Unicodeに統一できるなら、もともとそれほど困らない。
ファイバーは面白い応用が登場し始めていて、
などが興味深い。
Revactorはいってみれば、ErlangのRuby実装。アクターモデルを実装しているが、 個別のアクターはファイバーを使って実装されている(らしい、実装はまだ読んでない)。
NeverBlockの方はノンブロッキングIOを実現するライブラリ。 こちらはEventMachineと組み合わせることで IO性能を劇的に改善できる可能性があるとか。
たとえば、Railsを12倍高速化するとか。