2013-03-03 8 views
5

Ich suche D Lizenzierung und sehen, dass das Frontend Open Source ist, aber das Backend ist nicht; Was ist das Backend?Hat die Sprache D "proprietäres" Gepäck?

Warum hat GNU gdc gemacht? Handelt es sich um Lizenzierung?

+3

Ich stimme ab, diese Frage als off-topic zu schließen, weil es um Lizenzierung oder rechtliche Probleme geht, nicht um Programmierung oder Softwareentwicklung. [Siehe hier] (http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) und [hier] (http://meta.stackexchange.com/questions/139804/cani- Lizenzierungsfragen-immer-am-Thema sein für Details und die [Hilfe] für mehr. – JasonMArcher

Antwort

11

Es gibt verschiedene Compiler mit unterschiedlichen Zielen. Das Frontend analysiert den Quellcode, während das Backend die eigentliche Kompilierung durchführt. Da das Frontend Open Source ist, kann es für mehrere Compiler verwendet werden.

DMD ist die geschlossene Quellstandardimplementierung von D. Es ist Feature-Complete, aber möglicherweise nicht der beste Compiler leistungsmäßig.

GDC verwendet das ausgereifte GNU compiler collection als Backend. Dasselbe Backend wird häufig in der C- oder C++ - Kompilierung und in der Lage zur erweiterten Optimierung verwendet.

LDC zielt auf die Plattform LLVM ab. Dies ermöglicht einige interessante Dinge wie High-Speed-Compilierung, portable Bytecode und Jitting.

Da das Frontend über alle Compiler verteilt ist, wird eine Quelldatei auf jedem Compiler auf die gleiche Weise analysiert. Vergleichen Sie das mit C oder C++ - Dialekten.

6

DMD ist nur eine Referenzimplementierung des D-Compilers, genau wie Glassfish die Referenzimplementierung des Enterprise-Java-Anwendungsservers ist. Das Backend von DMD basiert auf dem DigitalMars C/C++ - Compiler. Macht Sinn, da der ursprüngliche D-Ersteller der Autor des DigitalMars C/C++ - Compilers ist, richtig? Walter konnte das Backend nicht legal vollständig quellen, weil ein Teil davon gemacht wurde, während es in Händen von Symantec war ...

Zweitens, GNU nicht machen GDC - es wurde von einigen Enthusiasten gemacht, und hoffentlich wird bald in den GCC-Baum zusammengeführt werden. GDC ist GPL, einfach so.

LDC wurde auch erwähnt - es verwendet LLVM als Backend.

Was wirklich wichtig ist, ist, dass D-Frontend Open-Source ist. Die Tatsache, dass das Backend von DMD nicht ist, ist irrelevant, da es so viele Alternativen gibt. Sowohl GCC- als auch LLVM-Backends sind dem DMD-Backend ohnehin überlegen.

Wenn Sie in Compiler/Interpreter-Design sind, schlage ich Ihnen vor, schauen Sie sich die SDC, MCI und DIL-Projekte. Ich denke, Sie haben mehr Informationen über sie auf http://wiki.dlang.org.

+0

Für was es wert ist (ein paar Monate später), gibt es auch einen D für .NET-Compiler. [link] (http://dnet.codeplex.com/) – nerdenator

+0

Ich habe seit Jahren keine Neuigkeiten über D.NET gehört ... Viele Leute sprechen darüber als totes Projekt. Schade, es war ein interessantes Projekt, IMHO. – DejanLekic

Verwandte Themen