2009-08-12 8 views

答えて

21

最も難しい部分は、効果的なプログラミング言語を設計することです。多くの人が仕事全体に専念しています。ここでは、言語設計と一般的な解析の質問について多くの質問がありましたので、CLRを対象とした側面について具体的に取り上げます。バイナリ形式で

利点

  • 生成バイトコードSystem.Reflection.Emit名前空間および.NET 4.0で驚くばかりの新しいSystem.Linq.Expressions能力を使用して非常に簡単です。この設定は、CLRを目標とする私の個人的な要望の主な動機の1つです。
  • あなたのコードは、CLRのJITとメモリマネージャに組み込まれている多くの最適化の恩恵を受けるでしょう。
  • 一般に、CLRをターゲットに設定して独自のネイティブコードを作成する場合は、短い時間で言語用のコンパイラを構築できます。

デメリット

  • それが唯一の.NETフレームワークが稼働プラットフォーム上で実行されます。 P/Invokeコールを避ける場合、Monoプロジェクトの助けを借りて、これは問題ではありません。
  • 言語の意味構造を、CIL命令で表現可能な形式とCLIオブジェクトモデルにする必要があります。手続き型、強く型付けされた、オプションでオブジェクト指向言語の場合、これはむしろ単純です。機能型または動的型言語の場合、これはかなり難しいことですが、それらの機能が必要な場合はDLRから助けを得ることができます。
  • 一般に、機械固有の機能には簡単にアクセスできないため、高性能/ベクトル化された科学計算を対象とする言語では、現在の実装でのパフォーマンス上の問題が発生する可能性があります。 Monoはこの問題に積極的に取り組んでいますが、Monoや.NET Frameworkでは、これを「確立された技術」として位置付けていません。

難し(言語およびコンパイラのフロントエンドを数えない)

  • 最も「面白い」の側面は、CLRの制約の下であなたの言語のセマンティック構築物を発現するあなたの方法をレイアウトされます。
  • ここであまりにも多くのことを言う必要はありません。他のターゲットと比較して、CLRをターゲットにするのは簡単です。

概要

CLIは、新しい言語の実装で働く人々のための素晴らしい選択肢です。これは、共通のコンパイラのバックエンドを意識し、言語そのものの意味に焦点を当てることを可能にします。私はそうではないかもしれない誰かが新しい言語を作成することをお勧めしますが、あなたが決めた場合、CLIはあなたの旅の良い友達になります。

+0

うわーは良い答えです! – RCIX