Domanda

Un DSL non potrebbe essere semplice come un'API e quindi non necessita di un parser? O sto fraintendendo che cos'è veramente una lingua specifica del dominio? Ho pensato che si riferisse a qualsiasi insieme organizzato di regole per risolvere un particolare problema di dominio. Un'API sembrerebbe adattarsi a quella definizione, giusto?

È stato utile?

Soluzione

È possibile incorporare un DSL in un linguaggio di programmazione più generale. Questa è spesso una buona soluzione. (Si potrebbe dire che questo DSL assume la forma di una particolare API.)

Puoi anche creare una lingua separata, con un suo interprete, per rappresentare i concetti del tuo dominio. Questa tende ad essere un'impresa più grande e spesso non è necessaria.

Altri suggerimenti

Stai confondendo il concetto con l'implementazione. Un linguaggio specifico del dominio è una rappresentazione di un'idea considerata & Quot; chiudi & Quot; al dominio del problema, piuttosto che essere una lingua generale per la descrizione della risoluzione dei problemi in generale.

Sì, una DSL potrebbe essere implementata come API, che forniva funzioni che si riferivano a concetti particolari nel dominio problematico, ma una DSL è ugualmente valida se rappresentata come un file di testo.

Il programmatore pragmatico: da Journeyman a Master contiene una buona descrizione dei DSL e delle circostanze in cui sono utili, con esempi. Altamente raccomandato.

Avresti ancora solo la semantica della lingua host.

Esempio: la programmazione funzionale in un linguaggio imperativo non funziona. Quindi hai un DSL funzionale aggiunto a questo linguaggio imperativo ...

Sì, assolutamente: un'API mere funzionerà perfettamente come DSL se la lingua host ha una flessibilità sufficiente per supportarla.

Ruby è un ottimo linguaggio per questo, in particolare date le parentesi opzionali e altre flessibilità.

  • Le rotaie vengono spesso denominate DSL per la scrittura di web basato su database applicazioni.

  • Rake è un sistema di generazione con un DSL per scrivere makefile (più intelligenti).

Il mio OOFILE è un framework che puoi considerare un DSL per la scrittura di database applicazioni in C ++ - è stato ispirato da dBase e fa un uso molto pesante del sovraccarico dell'operatore C ++, degli oggetti locali e dei linguaggi di flusso.

Forth è classicamente un linguaggio che confonde la linea tra DSL e API poiché un programma Forth è costituito da poco più di una serie di parole separate da spazi. Probabilmente l'esempio più impressionante di un DSL Forth è Abbondanza - L'abbondanza è un Forth- linguaggio di programmazione aziendale basato, scritto in BBL Forth. BBL è un compilatore FORTH DOS a 32 bit. Distribuito così com'è. Vedi gli avvisi. Questo non è per i deboli di cuore. Sarebbe interessante soprattutto per chi sviluppa software per il terzo mondo in cui è necessaria una rapida esecuzione su vecchi computer klunker XT e AT. È possibile scrivere con esso alcuni programmi di immissione di dati molto sofisticati che eseguiranno cerchi attorno ai moderni programmi di immissione di dati.

E, naturalmente, un DSL grafico non richiederebbe affatto l'analisi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top