Dynamic Language RuntimeとC#4.0の関係は何ですか?


11

現在の.NETプラットフォーム上に、おそらくSchemeインタープリターである動的言語コンパイラー/インタープリターを作成したいとしましょう。Dynamic Language Runtime(DLR)を使用するか、C#4.0を使用して言語の動的機能を実装する方が良いでしょうか?または、両方が必要ですか?

特にIronSchemeIronPython に関して、この分野で他の作業が行われたことを知っています。これらの言語は両方ともDLRを使用します。IronPythonはDLRの最新バージョン(約1年前)を使用し、IronSchemeは初期バージョンのDLRの大幅に修正された初期のフォークを使用すると考えています。しかし、これらのコンパイラが作成されたとき、C#4.0は利用できませんでした。

C#4.0の動的な機能を使用したRob ConeryのMassiveでの作業を見てきました。とても印象的です。しかし、C#は動的言語コンパイラ/インタープリターの本格的な努力に耐えるでしょうか?C#にない機能がDLRにありますか、それともDLRは本質的にC#4.0に組み込まれましたか?C#4.0のみを使用した場合、DLRの重要な機能が失われますか?


.Net 4.0 Dynamic機能もDLRに基づいていると思います。
デイブネイ


@Dave:.NET 4.0ランタイムとDLRの関係を詳細に説明している記事への最新の信頼できるリンクに満足しています。これにより、C#4.0の動的型システムが十分に堅牢であり、DLRに.NET 4.0ランタイムから省略された重要な機能があるかどうかがわかります。私はいくつかの記事を見つけましたが、それらはすべてDLRが形になっていた日に書かれており、それらの多くは投機的です。
ロバートハーヴェイ

回答:


3

これは私が読んだことを覚えている記事です。msdn.microsoft.com/en-us/magazine/gg598922.aspx

その後、DLRは.NET Framework 4にも含まれ、C#およびVisual Basicの動的機能をサポートしました。C#4で動的キーワードのみが必要な場合は、.NET Frameworkを使用するだけでよく、ほとんどの場合、DLRとのすべての対話を単独で処理します。しかし、新しい動的言語を.NETに実装または移植する場合は、言語実装者向けのより多くの機能とサービスを備えたオープンソースプロジェクトの追加のヘルパークラスを活用できます。


3

から:jimmysch

ロバート、

事実:IronRubyとIronPythonは両方ともDLRを使用しています。実際、DLRの機能のほとんどはIronPythonの以前の実装から派生しています。どのバージョンのDLR IronSchemeがどのように使用されているのか私はよく知りません。DLR(Microsoft.Scripting.Core.dll)の一部は.NET 4.0のSystem.Core.dllに同梱されており、その部分はC#4.0が「動的」キーワードサポートに使用するものです。 DLRの.NET 4.0ビルドに存在します。

DLRの残りのコードベース(Microsoft.Scripting.dll、Microsoft.Dynamic.dllが最も重要です)は、このCodePlexプロジェクト、またはIronLanguages GitHubプロジェクトからダウンロードできます。.NET 4.0のAPIは、実際にメソッドの動的ディスパッチを行うためのものですが、ホスティング言語のコンシューマーとプロデューサーにAPIを提供します。

.NET 4.0用の動的言語コンパイラを作成するには、実装言語としてC#を使用し、一般的なコンパイラタスクを簡素化するためのライブラリとしてDLRを使用します。DLRの簡単な例の言語については、Symplをご覧ください。

〜ジミー

http://dlr.codeplex.com/discussions/268746#post656778

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.