先日、GoogleがJava関連のカンファレンスで新しい言語「Noop」を発表しました。発音はヌープで、「何も意味しない」の「Nop(ノップ)」と等価な名前みたいです。
また、新言語というものの基本的にはJava言語をベースとしており、Javaでは問題となっていた点を克服した言語という事みたいです。
主なNoopの特徴は以下の通り。
- コードの読みやすさを重視
- 依存性の設定が可能
- テストが可能
- 仕様に追従できるドキュメンテーション
- Javaソースへの変換機能
- Noopコードの評価が可能
- Java VM用の実行コードのコンパイル出力
日本人的には「Noop」という名前がちょっとエレガントに聞こえず、ちょっと流行らなさそうな気がしますが(笑)、Javaを踏襲しつつ面倒なところが改善されているのは良い感じです。
■noop - Project Hosting on Google Code
米Googleの開発者らが中心となって、Java仮想マシンで動く新しい言語「Noop」が、Google Code上で公開された。新・旧の開発言語の良い点をブレンドし、可読性の高いコードが書きやすい文法を備えているという。
以下、早速Noopを使ってHallo Worldしてみた方のブログ記事です。なかなか面白そうですですが、Eclipseで使えるようになったら試してみようかな。
■NoopでHello World! - SH2の日記
以下、HalloWorld.noopソース。import noop.Application; import noop.Console; class HelloWorld(Console console) implements Application { Int main(List args) { String s = "Hello World!"; console.println(s); return 0; } }
良く思うのですが、ソフトウェアの生産性というのはそのソースを手にする人間がどれだけ素早くその言語を理解して手を加えられるかが重要で、その言語が一般にどれだけ広まっているか、どれだけの人が熟知しているかに掛かっていると思います。また、その言語自身が例えば10年後もメンテナンスされ続けているかどうかも心配。(C言語は消える事はないと思いますが、Delphiはボーランド社次第だったりとかね)
というわけで、Noopはどれだけ浸透するのかが気になるところです。NoopソースをJavaソースに変換するなんていう事も出来そうで逃げ道はあるみたいですけどもね。
余談ですが、最近iPhone絡みでObjective-Cを勉強してみましたがあれはどうなんでしょ。
実際の話として本の解説を見ながら読解しても理解するのにかなり手間取りました。Objective-Cから始めれば造作もない事かも知れませんが、C/C++を熟知していた人にとってはかなり理解が苦しいのは事実。
以下、Wikiから抜粋ですが……自分にとってはよもや暗号です(笑)。
// メッセージの送信 // 単項メッセージ [receiver msg]; // 引数付きメッセージ。この場合「msg:with:」でセレクタ一つ val = [receiver msg: arg1 with: arg2]; // メッセージの入れ子 val = [obj1 msg: [obj2 msg]];
Objective-Cは歴史的に言うと「C言語にオブジェクト指向を融合ではなくオプションで別途取り付け、あとからC++を使えるようにした」ものだったりします。リフレクションなどを先進的に取り入れており高機能なのですが「超言語的技法」と揶揄される事もあったりして、バランスはあまりよろしくないと思う次第です。