2013-03-03 15 views
5

Sto osservando le licenze di D's e vedo che il frontend è open source ma il backend no; qual è il back-end?Il linguaggio D ha un bagaglio "proprietario"?

Perché GNU ha creato gdc? È legato alle licenze?

+3

Sto votando per chiudere questa domanda come off-topic perché si tratta di licenze o problemi legali, non di programmazione o sviluppo di software. [Vedi qui] (http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) e [qui] (http://meta.stackexchange.com/questions/139804/can- domande di licenza-sempre-sul-argomento) per i dettagli e [aiuto] per ulteriori informazioni. – JasonMArcher

risposta

11

Ci sono diversi compilatori con obiettivi diversi. Il frontend analizza il codice sorgente, mentre il backend esegue la compilazione attuale. Essendo il frontend open source, può essere utilizzato per più compilatori.

DMD è l'implementazione predefinita di origine chiusa di D. È completa di funzionalità, ma potrebbe non essere il miglior compilatore in termini di prestazioni.

GDC utilizza il GNU compiler collection maturo come backend. Lo stesso backend è ampiamente utilizzato nella compilazione C o C++ e in grado di ottimizzazione avanzata.

LDC indirizza la piattaforma LLVM. Ciò consente alcune cose interessanti come la compilazione ad alta velocità, il bytecode portatile e il jitting.

Poiché il frontend è condiviso su tutti i compilatori, un file di origine analizzerà allo stesso modo su ogni compilatore. Confrontalo con i dialetti C o C++.

6

DMD è solo un'implementazione di riferimento del compilatore D, proprio come, ad esempio, Glassfish è l'implementazione di riferimento del server di applicazioni Java enterprise. Il backend di DMD ha radici nel compilatore C/C++ di DigitalMars. Ha senso dal momento che il creatore originale di D è l'autore del compilatore C/C++ di DigitalMars, giusto? Walter non poteva legalmente completamente open-source il backend, perché parte di essa è stato fatto mentre era nelle mani di Symantec ...

In secondo luogo, GNU non ha rendere GDC - è stata fatta da pochi appassionati, e, si spera sarà presto unito alla struttura GCC. GDC è GPL, semplice.

LDC è stato anche menzionato - utilizza LLVM come backend.

Ciò che importa è che D frontend è open-source. Il fatto che il backend della DMD non sia è irrilevante in quanto vi sono così tante alternative. Entrambi i backend GCC e LLVM sono comunque superiori al back-end DMD.

Se sei interessato alla progettazione di compilatori/interpreti, ti suggerisco di dare un'occhiata ai progetti SDC, MCI e DIL. Penso che tu abbia più informazioni su di loro su http://wiki.dlang.org.

+0

Per quello che vale (pochi mesi dopo), c'è anche un compilatore D for .NET. [collegamento] (http://dnet.codeplex.com/) – nerdenator

+0

Non ho mai sentito notizie su D.NET da anni ... Molte persone ne parlano come un progetto morto. Peccato, è stato un progetto interessante, IMHO. – DejanLekic