2013-03-03 12 views
5

私はDのライセンスを見て、フロントエンドはオープンソースだが、バックエンドはそうではないことを確認しています。バックエンドは何ですか?D言語には「独自の」荷物がありますか?

なぜGNUはgdcを作ったのですか?それはライセンスに関連していますか?

+3

私はこの問題を、プログラミングやソフトウェア開発ではなく、ライセンスや法的問題に関するものであるため、議論の対象外としています。 [ここをクリック](http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964)および[ここ](http://meta.stackexchange.com/questions/139804/can-トピックについてのライセンス供与に関する質問)、詳細については[ヘルプ]を参照してください。 – JasonMArcher

答えて

11

異なる目標を持つコンパイラがあります。フロントエンドはソースコードを分析しますが、バックエンドは実際のコンパイルを行います。フロントエンドはオープンソースなので、複数のコンパイラで使用できます。

DMDは、Dのクローズドソースのデフォルトの実装です。これは機能が完備されていますが、パフォーマンスに最も優れたコンパイラではありません。

GDCは、成熟したGNU compiler collectionをバックエンドとして使用します。同じバックエンドは、CまたはC++コンパイルで広く使用され、高度な最適化が可能です。

LDCは、LLVMプラットフォームを対象としています。これにより、高速コンパイル、ポータブルバイトコード、ジッタなどの面白いことが可能になります。

フロントエンドはすべてのコンパイラで共有されるため、1つのソースファイルはすべてのコンパイラで同じ方法で解析されます。これをCやC++の方言と比較してください。

6

DMDはDコンパイラの単なる参考実装です。たとえば、GlassfishはエンタープライズJavaアプリケーションサーバーのリファレンス実装です。 DMMのバックエンドにはDigitalMars C/C++コンパイラがあります。元のD作成者がDigitalMars C/C++コンパイラの作者であるので意味があります。それは少数の愛好家によって作られた、そして、できれば - ウォルターはそれの一部は、シマンテックの手の中にあった...

第二に、GNU ないはGDCを作ったなされている可能性がない、法的に完全にオープンソースのバックエンドので、間もなくGCCツリーにマージされます。 GDCはGPLであり、それは単純です。

LDCも言及されています - LLVMをバックエンドとして使用しています。

本当に重要なのは、Dフロントエンドがオープンソースだということです。非常に多くの選択肢があるので、DMDのバックエンドはそうではないという事実は無関係です。いずれにしても、GCCバックエンドとLLVMバックエンドの両方がDMDバックエンドより優れています。

コンパイラ/インタプリタの設計をしている場合は、SDC、MCI、およびDILプロジェクトをご覧ください。 http://wiki.dlang.orgに詳しい情報があると思います。

+0

価値がある(数ヵ月後)には、D for .NETコンパイラもあります。 [link](http://dnet.codeplex.com/) – nerdenator

+0

私はD.NETについての何年ものニュースを聞いたことがありません...多くの人々がそれを死んだプロジェクトとして語ります。残念、それは興味深いプロジェクト、IMHOでした。 – DejanLekic

関連する問題