DIやテストを言語機能に取り込み
JavaVM上の新言語「Noop」が話題に
2009/09/18
JavaVM上のJavaライクなプログラミング言語「Noop」が話題を呼んでいる。2009年9月16日から3日間の予定で米国サンタ・クララのサン・マイクロシステムズ内で行われた「JVM Language Summit」で、グーグルの社員らがサイドプロジェクトとして提案する発表を行った。プロジェクトのWebサイト自体は8月中旬から公開されていて、すでに動くコードもあるが、公の場での披露はJVMサミットが初めてだった。
NoopのソースコードはJavaバイトコードにコンパイルできるほか、Javaのソースコードへ変換したり、コマンドラインインターフェイスが実現できるようインタープリタとしても稼働する。
NoopはJavaVM向けの実験的言語で、これまでNoopの開発者らが感じていたプログラミング上の良い作法(ベストプラクティス)と、逆にこうあるべきではないと感じていた悪い作法を明確にし、前者を推奨し、後者を禁じるという“生意気な”(Noop's got an attitude)言語だという。
最大の特徴は依存性注入(DI)やテスト機能を言語仕様に取り入れたこと。これまで、Javaに限らず多くの言語では、DIやテストはフレームワークやライブラリの機能として提供されてきた。Noopは、言語レベルでこうした機能を実現する試み。DIには独自の文法を提案している。単体テストや結合テストは「test」キーワードを使ってクラス定義と同じファイルに書ける。
APIのドキュメントの維持・管理についても、ベストプラクティスとして、コード中への説明文の埋め込みをサポートする。PythonにあるDocstringsをさらに押し進め、コンパイラで処理可能な構文を用意する。
Noopの設計では、コードは書かれるよりも読まれることのほうがはるかに多い、という前提から可読性を最優先した文法を意識しているという。可読性向上のために言語の制約上省略できない繰り返しなど“ボイラープレート”と呼ばれる冗長なコードをできるだけ排除するよう心がけたという。
このほか、プリミティブ型の排除(すべてはオブジェクト)、実装の継承(サブクラスの作成)の禁止、オブジェクトはデフォルトがイミュータブル(final)で、新キーワードとして「mutable」を導入するなど、Java言語に比べると大きく異なる点が見られる。ビルトインでフィルタを用意するなど関数型プログラミングのスタイルも取り入れているという。
関連リンク
情報をお寄せください:
TechTargetジャパン
- 並列分散処理の常識をHadoopファミリから学ぶ (2012/2/8)
並列分散処理の課題やHadoopの長所/短所、そして短所を補うHadoop関連プロジェクトの構成や概要などを簡単に紹介 - WebLogicサーバ最新版「12c」の気になる4つの特徴 (2012/1/31)
久々にメジャーアップグレードしたJavaアプリケーションサーバについて、製品担当者に軽量インストーラなどの特徴を聞いた - GitHubをもっとソーシャルに使いこなすための7つ道具 (2012/1/23)
ソースコードホスティングのGitHub周辺で便利な新サービスが続々登場しているので、まとめて紹介しよう。特に連動クラウド「fluxflex」が注目だ - 新キャラ登場!スクラムやるならRedmineとALMinium (2011/12/26)
「黒板を“かんばん”にしてたら先生に怒られた(T_T)」「管理はPC内でやればいいのよ」「承知しました」
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
