2011年9月18日日曜日

狙い目の判りにくい言語Opa

知らない間に、またしても新しい言語が出ていたようです。
その名もOpa
http://opalang.org/#slides=1

初見の印象は

ネタもとのmoongiftの記述から解釈するなら
http://moongift.jp/2011/09/20110913/
目的は、WEBサービス実装のバイナリパッケージングが目的なのかと思ったのですが。

コンパイルすると、単一ファイルになってしまうらしい。サーバ側に置いて実行すると、WEBアプリケーション入りWEBサーバとして動作し、HTML及び必要なjavascriptを生成するらしい。これだけ聞くと便利そうに見えます。


http://doc.opalang.org/manual/A-tour-of-Opa
サーバ側実装と、クライアント側実装を混在して記述できるらしい。普通に作るとjQueryやら$_REQUESTやらでどうにかする訳ですが、Opa上ではタダの関数呼び出しとして表現できるというなら、開発効率は確かに上がるかも知れません。

クライアント&サーバで、記述言語を統一する。という意味ではサーバサイドjavascriptが選択肢に入る気はしますが、プロダクトが3つしかないみたいですね。
  • Node.js
    V8エンジン上で実行する環境
  • Rhino
    JavaVM上で実行するJavaScriptの言語処理系
  • Aptana JaxerAptana社によって2008年1月からオープンソースライセンスで配布されている環境
ちょっと興味が沸いたので、言語仕様を眺めてみると、どうも関数型言語の香りがしますね、と思ったらOcaml bindingとか言い出しました。
http://doc.opalang.org/manual/Hello--bindings----Binding-other-languages/Binding-Ocaml-and-Javascript
ひょっとして、「コンパイル」の先はOcamlなのか?

http://opalang.org/see.xmlt
色々、サンプル?実装があるみたいですが、おっとソースを見ることも出来ますね。githubに居ました。
https://github.com/venator/OpaWiki/blob/master/src/min_chat.opa
どうなんだろうコレ。
思ったよりはるかに読みにくいなあ。

moongiftはともかく、日本国内の反応はかなり冷やかですね。
http://developers.slashdot.jp/story/11/08/30/1123203/Web%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E5%B0%82%E7%94%A8%E8%A8%80%E8%AA%9E%E3%80%8COpa%E3%80%8D