JRuby の Chrles Nutter のセッション。
なぜ Babel なのかというと、もちろん聖書の創世記からの引用です。
Babel というのを悪い意味でとらえるかもしれませんが、そんなに悪い意味ではないです。
人間が神の領域に届くようなバベルの塔を作り出した時に、神がそれを見て行なったのが、今まで 1 つの言語しか話していなかった人類に、多くの言語を与えたのです。言語が異なってしまったため、コミュニケーションがとれなくなり、バベルの塔は完成しなかったという逸話です。
重要なのが、この時点をきっかけに人類が多言語化されたということ。
このため、Road to Babel (バベルに至る道) というのは「多言語化に至る道」ということを示していると櫻庭は思うのですが、違うかなぁ。
間違っても、コンピュータに守られたバベルの塔に住んでいる少年の話ではありません。
さて、セッションの前半では主な Java VM 上で実装された言語の特徴とステータスを示し、後半は Java VM 上で言語処理系を実装するためのチップスなどを紹介したものでした。
前半に紹介された言語は以下の 6 種類です。
- OCaml-Java
- Scala
- Groovy
- JRuby
- Jython
- Rhino (JavaScript)
Ocaml が入っているところなんか、いかにも Charles Nutter だなぁという感じがしますね。
この中で、たとえば、Ruby (JRuby) は以下のような特徴を持ちます。
- 動的型付け、オペレータオーバーローディング、メタプログラミング
- Rails on Rubyなどのアプリケーションが動作可
- 他の実装に比較してパフォーマンス、スケーラビリティが優れている
この他にも、Scala なら trail や mixin が提供されており、関数型言語であるということなどを列挙したわけです。
後半では、RubyをJVM上で実装することの難しさなどが紹介されました。たとえば、次に示すような項目が述べられました。
- 動的型付けの最適化
- Ruby独自の型システムの移行
- C Extensionの依存
- "eval"、Continuation、バイトを基にした文字列
Ruby を Java VM に移植したのは、以下のような理由があるようです。
- Ruby が美しく、エレガントな言語であること
- Javaの世界に新たな血、新たな考え方を導入するため
- 優れたランタイム
- JVMの限界を超えるため
確かに JRuby によって、クロージャなどが注目されるようになりましたね。
また、言語の実装におけるチップスとして、
- 軽量なコード生成とローディング
- リフレクションよりもメソッドオブジェクトを生成する
- パース、インタプリター、コンパイル用のtoolchain
などが紹介されました。特にリフレクションは避けて、クラス生成および動的コンパイルおよびローディングをした方がいいようです。動的なクラス生成とコンパイル、ローディングは一番はじめにメソッドコールしたときのコストが大きいのですが、全体的なパフォーマンスはこの方が上がるのでしょう。
また、複数言語用のVMとして開発されているDa Vinci Machineプロジェクトを紹介がされました。
このプロジェクトはOpenJDKのサブプロジェクトであり、複数の言語を実装しやすくするための機能を持ちます。また、JSR 292 Supporting Dynamically Typed Languages on the Java Platformのリファレンス実装でもあります。
最後に、CommunityOne ということもあり、ぜひコミュニティに参加しようというメッセージを示してました。
0 件のコメント:
コメントを投稿