6

私が収集したものから、GosuはJVMの単純なC#です(これは良いことです)。それは本当ですか?GosuとC#の違いは何ですか(クラスライブラリとそれがJVMで実行されるという事実を除いて)?

4

2 に答える 2

21

GosuをJVMのいずれかの言語として構築しませんでした。むしろ、JVMに役立つ言語としてGosuを構築しました。さらに、Gosuは、命令型のオブジェクト指向モデルに最も慣れている多数の既存のプログラマーに精通している必要があることを認識しました。これを実現するために、Java、C#、EcmaScript、Rubyなどのいくつかの言語から多額の借用を行いました。その結果、JVM上で独自に配置された言語になると思います。

しかし、ゴスのユニークな点は、オープンタイプのシステムです。

Gosuの型システムは、構成可能な数の型ローダーで構成されています。タイプローダーの主な責任は、ドメイン内のタイプ名を解決し、GosuのITypeインターフェイスの実装を返すことです。これがGosuの最もユニークな点です。その型システムは他のドメインに公開されており、ファーストクラスの表現に参加できます。私はこのアイデアを理解するために、DST(ドメイン固有タイプ)という用語を頻繁に使用します。たとえば、Gosuは、GosuクラスとJavaクラスまたはXMLタイプ、あるいはあなたが持っているものを区別しません。それらはすべてGosuのコンパイラへの単なるタイプです。DynamicTypeの例を​​確認してくださいダウンロードで、オープンタイプシステムが提供するパワーと幅を垣間見ることができます。基本的に、この例は、C#の「必要に応じて動的型」がGosuの新しい型ローダードメインになり得ることを示しています。または、Roninフレームワークをチェックして、WebドメインとデータベースドメインをGosuにシームレスにマッピングする方法を確認してください。

Gosuのすべてのタイプローダードメインがバイトコードを生成する必要があるわけではないことを理解することが重要です。対応するJavaクラスを取得するためのインターフェースを実装しているもの。リフレクティブMethodInfoおよびPropertyInfo評価用のコールハンドラーとプロパティアクセサーをそれぞれ提供しないもの。すべてのタイプがTypeInfoを提供することに注意してください。IType.getTypeInfo()を参照してください。たとえば、パーサーは、TypeInfo、MethodInfoなどの抽象化に対して、異種のタイプ間の公平な競争の場の手段として機能します。ただし、実行時に、型がJavaバイトコードクラスを提供しない限り、MethodInfosとPropertyInfosも呼び出しの処理を担当します。

于 2010-11-14T20:33:48.480 に答える
9

いいえ。「顕著な違い」ページ(JavaとGosuの違い)を見ると、 C#のようなものだけでなく、大文字と小文字を区別しない、セミコロンを作成するなど、C#にないものもたくさんあります。オプションのコロン。確かに言及されていないが、C#の一部であるものもあります:

  • カスタム値タイプ
  • 演算子のオーバーロード
  • LINQ
  • 必要に応じて動的型付け

Gosuを「Javaのビット、C#のビット、および他の言語のビットも混合するJVM言語」ではなく、「JVMのC#」と見なすのは間違いだと思います。

于 2010-11-09T08:26:15.227 に答える