Groovy 1.x ( http://groovy.codehaus.orgから) と Groovy++ ( http://code.google.com/p/groovypptestから)は2 つの別個の言語ですか、それとも1 つの言語の 2 つの部分ですか? なぜですか、そうでないのですか?
3 に答える
ご質問への回答は、Groovy++ Web サイトで提供されています。リンク先のページの 2 番目の文です。
Groovy++ は、Groovy プログラミング言語の静的型付け拡張です。
Groovy++ は Groovy の拡張機能です。これは Groovy の上に構築され、一部またはすべてのクラスに真の静的型付けを追加します。目標は、パフォーマンスとその他の改善です。繰り返しますが、リンク先のページには完全な説明があります。
最近、Groovy はそのパフォーマンスを大幅に改善しました。Java 7 の追加によりinvokeDynamic
、パフォーマンスはすぐに Groovy++/Java とほぼ同じくらい速くなる可能性があります (違いはほとんど無視できます)。
ソフトウェア アーキテクチャの観点では、Groovy++ は Groovy の拡張機能である可能性があります。
しかし、言語レベルを見ると、動的メソッド呼び出しを使用し、そのクラスに で注釈を付けるとどうなり@Typed
ますか? コンパイラは、不明なメソッドについて文句を言います。
@Typed
アノテーションが付けられた Groovy クラスは、アノテーションが付けられていない Groovy クラスのような動的呼び出しを許可しないため、Groovy++ は新しい言語だと思います。コードのセマティックを変更します。
Groovy++ は Groovy のサブセットです。
正式には Groovy++ は単なる Groovy ライブラリです。Groovy++ には特別な構文はなく、Java アノテーションを使用します。
しかし実際には、Groovy++ は Groovy 方言 (もちろん新しい言語ではありません) です。
@Peter Groovy++ は、いくつかの Groovy の自由を禁止しています (私が理解しているように、優れたコード スタイルの理由により)。
しかし、Groovy++ は、非常に複雑な型推論システム、トレイト、拡張メソッド、関数型プログラミング ライブラリなど、多くのセマンティック拡張を提供します。
このため、Groovy++ は、おっしゃる「Groovy のサブセット」だけではないと思います。