LL PlanetsあるいはJS Planetsに行ってきた/node.jsやCoffeeScriptはなぜ生まれたか/プラットフォームとしてのJavaScript

午前中のメタプログラミング話とLTを除いてはほぼJavaScriptの話だという、時代を象徴するようなLLイベントであった。


面白かったのが、nodeがjsである理由のひとつに「I/Oについての標準的ライブラリがなかったから」というのが挙げられていたこと。スタンダードがないため、イベント駆動&ノンブロッキングを前提とするI/Oインタフェースを一から構築することができたのだという。たしかにJSはそう意味で特殊な言語だ。汎用性のある言語でI/Oライブラリが標準で付いてない言語なんてそうそうない。機能がまるごと欠けているゆえに、その空白地帯が新しいパラダイムの土壌となるというのはおもしろい(進化論にもそんな話があったような)。


CoffeeScriptというのも、JavaScriptの特異性を象徴するプロダクトだ。
ある言語のいけてない場所を直したいとき、処理系ごと作り直すというのはやりすぎだ。大抵の場合、ちょっとしたシンタクスシュガーで解決できる。マクロが発達してない言語の場合、トランスレータを作ることでローコストに幸福が実現する…… はずなのだが、そういったアプローチはほとんどメジャーになってない。トランスレータでできることは限られているし、新しく処理系作ったほうがやりたいことができるという判断なのだろうか。
CoffeeScriptが成功したのは、その設計のうまさ(高機能でありながら、JavaScriptのラッパーであることを忘れさせないバランス)のほかにも、JavaScriptがWebにおける機械語となっていることにも原因があるだろう。Webブラウザで動く言語を書くということは、結局何らかの形でJavaScriptを書くということなのだ。


今日のイベントではクライアントサイドもサーバサイドもJavaScriptで統一する未来が来るみたいな勢いであったが、そういう時代が来たら面白いなと思う。JavaScriptの絶妙なイモさは、すべてが一様化して終了することはないことを示唆する。複雑なアプリケーションを書くには、それはおそらく非力すぎる。仮想マシン環境としての、高度に最適化されたJavaScript処理系上で動く、さまざまな言語処理系が登場することだろう。そうあってほしいなと思う。