20

Charles Nutterによると、Duby

Ruby の構文と Java の型システムを持つ静的型付け言語。Duby はすべての Ruby のリテラルをサポートし、ローカル型推論 (引数の型のみを宣言する必要があります) を使用し、Java と同じくらい高速に実行されます (ほぼ同一のバイトコードを生成するため)。しかし、invokedynamic の登場により、Duby には遊び相手が必要になりました。

1. インボークダイナミックとは何ですか? また、なぜ Duby は「プレイメイトが必要」なのですか?

一方、ジュビー

Java の型と Ruby の構文を使用するという点で、基本的に Duby に似ていることを意図しています。ただし、新しい invokedynamic オペコードを利用して 100% 動的にします。Juby は動的な Duby であるか、おそらく Ruby 構文を使用した動的な Java です。理解するのは難しくありません。

実はわかりにくい。

2. 誰かがこの違いについてもう少し詳しく説明してもらえますか?

3. なぜ別の Ruby 関連言語が必要なのか (必要なのか! )? それとも、Ruby 関連の言語が 2 つありますか?

4

5 に答える 5

6

Mirah(以前のDuby)が存在するのは、静的型付けによってJava/Hotspotのパフォーマンスが劇的に向上する可能性があるためです。Surinx(以前のJuby)も同じですが、JDK7に搭載されている新しいパフォーマンス機能を利用して、パフォーマンスをさらに向上させる点が異なります。

パフォーマンス機能は一般に「invokedynamic」と呼ばれ、Nutterのブログにも適切な説明があります。

于 2009-08-26T20:09:09.693 に答える
4

チャールズ自身から直接、これに出くわしました。これは、質問に部分的に対処しています(re:それらの違い):

それは私をスリンクスの未来へと導きます。それは Duby の将来よりもさらに単純です: 2 つが合併します。私は Surinx と Duby の両方に取り組んできたので、それらは本質的に同じ言語であり、ディスパッチ メカニズムと型宣言の要件が異なることが明らかになりました。また、Duby は、型指定されていない式や動的に型付けされた式を動的呼び出しを必要とするものとして簡単に扱うことができるため、Surinx を Duby の機能として同化してはならない理由はありません。

于 2009-11-17T06:53:34.790 に答える
3

言語と同様に、私たちはそれらを「必要とする」のでそれらを作成しません。人々は何らかの理由でそれらを作成し、私たちがそれらを必要としない限り、それらはあいまいなままです。

世の中にはあいまいな言語がたくさんあります。遊ぶのは楽しいですが、実際のプロジェクトでやりたいことではないでしょう。

于 2009-08-26T20:10:56.603 に答える
2

ある時点で、Plain Ol' Dynamic Ruby でコードの一部のプロトタイプを作成し、それが機能するが大幅に高速化する必要がある場合は、比較的軽いレベルの苦痛で、近い関係に移植できるのではないかと考えています。最適化された JITted Java バイトコードにコンパイルします。あるいは、IronRuby#.NET、Sapphireなどの可能性が高いでしょう。

グラフィック操作、重い数学、AI など。そうすれば少しは楽になれると思いますが…

于 2009-08-26T20:23:54.127 に答える