2009-08-12 6 views

risposta

21

La parte più difficile sarà la progettazione di un linguaggio di programmazione efficace. Molte persone hanno dedicato la loro intera carriera al compito. Poiché ci sono state molte domande qui sulla progettazione del linguaggio e sulle domande generali di analisi, mi concentrerò specificamente sull'aspetto del targeting del CLR.

Vantaggi

  • Generazione byte di codice in forma binaria è piuttosto semplice utilizzando il System.Reflection.Emit spazio dei nomi e le impressionanti nuovi System.Linq.Expressions abilità in .NET 4.0. Questa impostazione è uno dei principali motivatori nel mio desiderio personale di indirizzare il CLR.
  • Il tuo codice trarrà vantaggio da molte delle ottimizzazioni integrate nel JIT di CLR e nel gestore di memoria.
  • In generale, sarà possibile creare un compilatore di lavoro per la propria lingua in meno tempo se si sceglie di indirizzare il CLR rispetto alla creazione del proprio codice nativo.

Svantaggi

  • sarà eseguito solo su piattaforme che il framework .NET gira su. Se si evitano le chiamate P/Invoke, quindi con l'aiuto del progetto Mono questo non dovrebbe essere il problema.
  • È necessario inferiore i costrutti semantici nella propria lingua in una forma rappresentabile nelle istruzioni CIL e nel modello di oggetto CLI. Per linguaggi procedurali, fortemente tipizzati, opzionalmente orientati agli oggetti, questo è piuttosto semplice. Per le lingue funzionali o dinamicamente tipizzate, questa può essere una vera sfida, ma potresti ottenere aiuto dal DLR se hai bisogno di quelle funzionalità.
  • In generale, non è possibile accedere facilmente alle funzioni intrinseche della macchina, quindi per un linguaggio che mira al calcolo scientifico ad alte prestazioni/vettorializzato, è possibile che si verifichino problemi di prestazioni con le attuali implementazioni. Mono sta lavorando attivamente al problema, ma né Mono né .NET Framework lo hanno definito "una tecnologia consolidata".

Difficoltà (senza contare il linguaggio e compilatore front-end)

  • L'aspetto più "interessante" è il layout del metodo di esprimere costrutti semantici del linguaggio con le restrizioni del CLR.
  • Non c'è molto altro da dire qui. Rispetto ad altri target, è abbastanza facile indirizzare il CLR.

Sommario

La CLI è una grande opzione per le persone che lavorano su nuove implementazioni del linguaggio. Ti consente di distogliere la mente dal comune back-end del compilatore e di concentrarti sulla semantica del linguaggio stesso. Potrei non consigliare qualcuno crea una nuova lingua, ma se lo decidi, la CLI sarà un buon amico nel tuo viaggio.

+0

Wow, questa è una buona risposta! – RCIX

Problemi correlati