なかの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倍高速化するとか。