私は今Scalaを勉強していて、先月勉強しています。今日(ツイッター経由で)私は非常に似ていると思われる別の言語、ゴスに出くわしました。
最も影響力のある親であるJavaに関して、ScalaとGosuの本質的な類似点と相違点は何ですか?これら2つの言語を比較対照するWebサイトはありますか?
ええ、私たちの言語比較チャートは主に冗談です。特に「NotLisp」行。:)
Stephen Cが私の元の投稿から指摘したように、一般的に、GosuはScalaよりも単純ですが、ScalaはGosuよりも高度な機能を備えています。
ScalaとGosuには多くの類似点があります。
どちらも静的に型付けされていますが、型推論を使用してコードの膨張を減らします
両方ともクロージャとより機能的なスタイルのプログラミングをサポートします
どちらも、特にコレクションの周りで、既存のJavaライブラリに加えて追加機能を提供します。
そして、ここにいくつかの違いがあります:
Gosuは一般的な演算子のオーバーロードをサポートしていません
Gosuはモナドの構文サポートを提供していません
Gosuのジェネリックスは、Javaよりも単純です(正確さを犠牲にして)、Scalaではより複雑です(ただし、Scalaは正確さではるかに優れた仕事をします)。
Gosuは、クロージャでのScalaの暗黙の「_」引数のようなものをサポートしていません。このような場合はより明示的です。
コアJavaライブラリに対するGosuの拡張はそれほど劇的ではありません。新しい型階層を導入するのではなく、既存のJava型に追加のメソッドを追加します。
GosuとScalaの機能面での大きな違いは、Gosuにはオープンタイプシステムと呼ばれるものがあります。これにより、Gosuコンパイラに任意のリソースをプラグインできます。例として:Gosu(0.8.5現在)は、第一級市民としてXSDおよびWSDLファイルをサポートしています。
Open Type Systemは、機能面では、Gosuと他の静的に型付けされたJVM言語との真の差別化要因です。
そうは言っても、現在の不幸な現実は、Scalaが一部の領域、特にツールでGosuよりもはるかに成熟しているということです。すべての主要なIDEでScalaの優れたIDEサポートがあります。Gosu用のEclipseプラグインがありますが、まだ初期段階です。同様に、IntelliJプラグインは非常に新しいものです。
Scalaには、非常に完全なWebフレームワークであるLiftがあります。私は彼らのアプローチの大ファンではありませんが、それは完全であり、多くの人々がそれを気に入っています。
GosuにはWebフレームワークもあります。
私はローニンのアプローチが大好きですが、そうすると思いませんか?Roninは、Gosuをよく知っている人によって構築されているため、言語の多くの機能を活用しています。
お役に立てば幸いです。現実的には、今日プロジェクトを開始する場合、ツールのサポートのために、おそらくScalaを使用するでしょう。ただし、別の方向に攻撃したい場合、特にプロジェクトにWebサービスまたはXSD処理が含まれている場合は、Gosuを使用するとやりがいのある言語になる可能性があります。長期的には、GosuがJVM開発者にとって実用的な選択肢になることを願っていますが、時間だけがわかります。
Gosuの比較表はScalaにとってやや不公平です:Javaからの移行は簡単で(最初にScalaの凝ったものをすべて使用する必要はありません)、洗練されたジェネリックスの場合、Scalaは完璧ではありませんが、マニフェスト。もちろん、Scalaが輝いているカテゴリーはありません(パターンマッチング、より高い種類のタイプ...)
私の知る限り、GosuはGuidewireによって、製品固有の開発と製品構成のために開発されています。したがって、すべてのGuidewireユーザー/開発者はプログラミングにGosuを使用します。これが、Gosuスクリプトに関連する投稿があまり見られない主な理由です。