プログラミング言語Noopのコンセプトに「そうそう。そういうのがあってもいい」と感じる人も多いのでは?
Alex Eagle氏、Jeremie Lenfant-Engelmann氏(2人ともGoogleの所属だそうだ)がJVM Language Summitで発表されたプログラミング言語Noopの説明をいくつか読んだ。詳細は@ITのニュース記事やpublickey新野氏の記事等を参照いただきたい。
Noopの目指すところとして、メンテナンス容易性(2人以上で開発するための言語)、テスト容易性が挙げられている。この2つをプログラミング言語に求めている開発者の層は厚いのではないかと思うが、この層の人たちがプログラミング言語を作るということはそれほど多くないように思う。通常は既存のソフトウェアの移行を考え、あきらめてしまいそうだ。。
プログラミング言語の目的、コンセプトというと思想的なぼんやりしたものが多いという印象が私にはある。たとえば、言語設計が「美しい」、「シンプル」、「一貫性がある」、「多様な書き方ができる」という話を聞くと確かに、よりよいプログラミング言語だと思うことはあれど、それが今困っていることをどのように解決してくれるのか?という疑問は残されたままになることが多い。
多くの方は、プログラミング言語に不満があったとしても、実際に困っている部分はコーディングルール等で対応しているのではないだろうか。これらのルールでは、記述の自由度が高すぎて、不具合が入りこみやすい部分、自分以外の開発メンバの可読性を下げてしまう書き方を抑制していることが多い。
以下の点で、Noopがこれまでの言語にはなかった新しい世代のものと感じた(新しいだけでは、すぐにNoopを使うということにはならないと思うが)。ここを読まれている方々はどう感じられただろうか。
- Dependency injectionを言語仕様として持つ。
- テスト自動化のための機構を言語仕様として持つ。
- サブクラスは作れない/オブジェクトはデフォルトではイミュータブル
- ドキュメントはコード中に書くことができ、構文に一定の制約を持たせる。