Esempio di utilizzo che consente di risparmiare tempo nella meta-programmazione in fase di compilazione?

5

La pagina web di Converge afferma che:

Converge has a macro-like facility that can embed domain specific languages with arbitrary syntaxes into source files.

Sono molto incuriosito dalla possibilità di creare linguaggi specifici di dominio. La mia comprensione dello scopo di tali linguaggi è che consentono allo sviluppatore di diventare molto più efficiente quando risolve problemi specifici del dominio.

Quindi, ho continuato a leggere la sezione "" . Esistono due esempi di utilizzo qui, ma nessuno di essi descrive come lo sviluppatore potrebbe risparmiare tempo di sviluppo utilizzando Converge. Qualcuno può venire con un esempio o farmi riferimento ad un esempio? Sono felice di leggere esempi in altre lingue oltre Convergere.

    
posta David 13.01.2012 - 11:03
fonte

2 risposte

2

Non posso parlare specificamente di Converge, ma uso regolarmente il linguaggio di programmazione D che ha caratteristiche di meta-programmazione molto forti.

Ecco un esempio di libreria D per unità di misura . Il programmatore può scrivere:

auto dist1 = Meters(5.2);
auto velocity = dist1 / Seconds(2.1);
auto kmPerSecond = cast(Kilometers)velocity;

Usando il sistema dei tipi per creare una DSL, il programmatore viene liberato dalle conversioni delle unità di giocoleria e garantisce che le operazioni abbiano senso (ad esempio, il tempo + distanza sarebbe un errore).

Un altro (vecchio) esempio D è la libreria Blade . Questa libreria è in grado di analizzare espressioni algebriche in fase di compilazione e di generare assemblaggi molto precisi e veloci. Per una programmazione che ha bisogno di velocità, questo genere di cose è un vero risparmiatore di vita.

Infine, controlla Ruby on Rails se non l'hai già fatto. Il tutto è un DSL gigante, anche se non è in fase di compilazione.

    
risposta data 13.01.2012 - 19:46
fonte
4

Esistono due esempi canonici di lingue specifiche del dominio:

  1. Espressioni regolari. Sono un linguaggio semplice, ma comunque linguaggio e sono compilati per l'effettivo automa di ricerca, quindi sicuramente trarranno beneficio dal compilatore che li gestisce. Altri linguaggi di parsing come BNF sono case simili.
  2. SQL. Anche se questo è normalmente compilato nel server di database e quindi non beneficia dell'elaborazione nel compilatore in questo modo, c'è un enorme vantaggio nel supportarlo dal linguaggio se può legare automaticamente variabili per parametri e risultati.
risposta data 13.01.2012 - 12:17
fonte

Leggi altre domande sui tag