2009-06-18 8 views
11

Sono interessato alla progettazione e implementazione specifiche del dominio Languagess. Gran parte dei DSL che conosco derivano dal mondo accademico.Lingue specifiche per il dominio riuscite? Quale usi?

Potete darmi alcuni suggerimenti per le DSL effettivamente utilizzate nel settore? e che si utilizza su base giornaliera-base ... che sono davvero conveniente ..

(Mi interessa linguaggi dichiarativi troppo, ma non proprio quelli basati su XML ...) ...

Mi piacerebbe stabilire un elenco (non esaustivo) di lingue distribuite nell'industria ... so che questo è enorme ...

A volte, sto implementando usando un linguaggio di uso generale cose che potrebbero essere banalmente fatte usando un DSL.

EDIT Sono principalmente interessato a DSL application-diretto, non lingue piccole-embedded. Ad esempio, SQL corrisponde a quello che sto cercando, ma SQL incorporato in Java non mi interessa. Un altro esempio del tipo di linguaggio che sto cercando è X #

+0

Ho sentito parlare di Lua, Boo. Ma non ho provato quelli. –

+0

vuoi un DSL interno o un DSL esterno? tuttavia Martin Fowler sta scrivendo un libro (liberamente scaricabile) sulle DSL – dfa

+0

Conosco questo lavoro di Martin Fowler ... La domanda nasce da X # che ho scoperto ieri. Sto cercando questo tipo di DSL – LB40

risposta

0

È possibile scrivere un linguaggio specifico del dominio in linguaggi come Boo, ma penso che la definizione stessa di dominio specifico indica che la maggior parte del tempo lo farà essere in un settore specifico o anche solo una singola società ...

Wikipedia ha un buon articolo introduttivo su questo.

Questo overview ha una sezione di esempi con alcuni buoni collegamenti.

+0

Accetto ... L'implementazione di un DSL non è qualcosa di difficile, ma il problema è come indirizzare la comunità giusta e rispondere alle loro domande, nel modo giusto. – LB40

0

Ci sono parti di ruby ​​su binari che possono essere considerate lingue specifiche del dominio. In particolare il suo linguaggio per specificare tabelle relazionali.

12

Un DSL che ha così tanto successo da avere il proprio tag SO è il linguaggio regex. Specifico per il dominio della corrispondenza delle stringhe, ovviamente.

Un altro popolare, ma con cui non ho esperienza è VHDL. La popolarità del VHDL deriva dal fatto che è facilmente convertibile per l'uso in un FPGA.

[modifica] Sebbene non sia certamente Turing completo, l'identificatore di formato printf() di C può essere considerato come un altro linguaggio specifico del dominio.

+0

Batti da 7 minuti ... E, sì, direi che l'espressione regolare è probabilmente la DSL di maggior successo/ampiamente utilizzata là fuori. –

+0

VHDL è un buon esempio. – LB40

+2

d'accordo, regex pwns piuttosto difficile –

6

EBNF è probabilmente la lingua di dominio più utilizzata nel suo dominio, una lingua per descrivere le lingue.

3

Wikipedia suggests che le formule del foglio di calcolo e gli script di shell sono entrambe lingue specifiche del dominio. Ciò li renderebbe probabilmente gli esempi più diffusi.

+1

Interessante .. Mi piace come in excel devi usare fondamentalmente funzionale come notazione: if (non (e (isblank (A $ 1), isblank (B $ 2)))) –

+1

formule del foglio di calcolo I ' m con te (e Wikipedia) al 100%. Non sono d'accordo sugli script di shell - sono essenzialmente un linguaggio generico, nel senso che sono abbastanza banalmente capaci di qualsiasi cosa. – Novelocrat

+0

Non sono d'accordo sugli script di shell che non sono DSL. Alcuni di essi sono completi di Turing, ma sono ancora specifici per il dominio del concatenamento dell'esecuzione del programma in modo significativo. Bash è un ottimo esempio. Non ha nemmeno aritmetica, chiama altri strumenti (test, expr) per fare cose molto semplici –

2

Awk fornisce è un linguaggio di dominio specifico per l'elaborazione di dati testuali semi strutturati.
Molti dei più potenti strumenti a linea di comando UNIX in uso diffuso, come trovare e grep potrebbe essere classificato come avere un linguaggio specifico dominio (anche se limitata ai soli argomenti della riga di comando) il linguaggio di

+0

Inoltre, la shell stessa: è un linguaggio di flusso di dati specifico per il dominio di gestione dei file e dei processi. –

+0

- Ho appena sentito che erano sufficienti di per sé – ShuggyCoUk

0
  1. Mak Stealth per la programmazione comportamenti charcter (non penso che ha un nome)
  2. Slang - lingua Goldman Sachs (ho sentito di esso, ma mai usata)
  3. CMS-2 Navy linguaggio di programmazione
+0

CMS-2 non è specifico del dominio. È solo una versione anticipata di una lingua per la programmazione incorporata, come C. A meno che tu non pensi che C sia un linguaggio specifico del dominio. –

0

di Google Sear web ch supporta alcuni increasingly sophisticated parametrization

Si potrebbe sostenere che questo è uno dei DSL più utilizzati se anche una piccola parte della loro base utente utilizza mai uno di essi in contrasto con l'elenco standard di parole.

11

NMake, MSBuild, lex, yacc, bisonti, flex, TeX, PostScript, XAML, SSIS, Wix

+9

make, sh, cmd.exe, HTML, CSS, PHP (in origine), Perl (in origine), Regexp, LINQ, SQL, XQuery, XPath, XSLT, XML Schema, DTD, JavaDoc. Inoltre, il linguaggio dei vincoli utilizzato nei generici di .NET (come pure in Java). Excel, probabilmente. I macro di Excel sicuramente. Diamine, anche C: è un linguaggio specifico per la scrittura di kernel Unix su macchine DEC PDP. (Alcune persone sfortunatamente lo scambiarono per un linguaggio generico, però ...) L'elenco potrebbe continuare all'infinito nello –

1

MEL (Maya Expression Language) è un linguaggio di line-esque di comando che Autodesk Maya utilizza tutta la sua progettazione . Il formato di file Maya Ascii che le scene possono essere salvate utilizza MEL per comporre le sue scene. L'interfaccia utente è in gran parte costruita e controllata usando gli script MEL. Le espressioni che puoi usare per guidare canali e attributi sugli oggetti sono MEL.

Suppongo che potrebbe tecnicamente essere considerato un linguaggio incorporato nei casi in cui si sta solo scrivendo script per esso. Tuttavia, senza MEL, Maya fondamentalmente non esisterebbe. Nessun formato di file ascii, nessuna interfaccia utente, ecc.

2

Non so se si desidera prendere in considerazione anche i DSL grafici. Mi piacerebbe includere

  • NORMA, un modem DSL per la modellazione di dominio concettuale, sulla base di Object-Role Modeling Notation (ORM2)
  • Web Service Software Factory, che utilizza tre DSL per modellare servizi web

Entrambi i precedenti sono stati creati utilizzando lo DSL Toolkit.

+0

Dovrei guardare ancora gli strumenti DSL ... Non l'ho visto da quando JM Prieur ha dato una demo quando ho stava facendo il mio dottorato Sembra essere davvero maturo ora – LB40

+0

Estremamente maturo. La versione beta 1 2010 ha persino la tecnologia per consentire ai modelli di fare riferimento l'un l'altro. Guarda tre brevi video su http://code.msdn.microsoft.com/DslTools. Inoltre, se non hai guardato dalle versioni del 2005, la versione 2008 ha risolto la bruttezza con l'inserimento di percorsi. Ottieni una buona Intellisense ora. –

0

Erlang era in origine un linguaggio specifico per le telecomunicazioni, sebbene sia ora (occasionalmente) utilizzato come linguaggio generico.

0

I due (non già menzionate) che mi hanno colpito di più sono: (!)

Sono un grande fan dei DSL dichiarativi. I DSL operativi (come Maple, Mathematica e R sono ugualmente buoni, ma non così diversi da quelli tradizionali).

0

Tcl è un linguaggio che è stato originariamente progettato per essere un quadro di riferimento per la costruzione di DSL - fornire funzionalità di base come la programmabilità e I/O, mentre le parti specifiche del dominio sono stati creati fresco per ogni applicazione - e che sono cresciuti in uno scripting generico linguaggio.Uno dei DSL più conosciuti basati su Tcl è Expect.

0

Per i processi aziendali abbiamo ad es.

  • BPEL che si esprime in XML ed è eseguibile
  • BPMN che è un linguaggio visivo e viene utilizzato per la modellazione