2009-06-18 8 views
11

Estoy interesado en el diseño e implementación de Idiomas Específicos de Dominio. Gran parte de las DSL que conozco provienen del mundo académico.Idiomas con dominio específico? ¿Cuál usas?

¿Puede darme algunos consejos para las DSL que realmente se usan en la industria? y que se utiliza en un diario-base ... que son realmente conveniente ..

(estoy interesado en lenguajes declarativos también, pero en realidad no los basados ​​en XML ...) ...

Me gustaría establecer una lista (no exhaustiva) de idiomas implementados en la industria ... sé que esto es enorme ...

A veces, estoy implementando usando un lenguaje de propósito general cosas que podrían hacerse trivialmente usando una DSL.

EDIT Estoy interesado principalmente en las DSL dirigidas a la aplicación, no en los lenguajes pequeños integrados. Por ejemplo, SQL coincide con lo que estoy buscando pero SQL incrustado en Java no me interesa. Otro ejemplo de la clase de lenguaje que estoy buscando es X #

+0

He oído hablar de Lua, Boo. Pero no he probado esos. –

+0

¿quieres una DSL interna o una DSL externa? sin embargo, Martin Fowler está escribiendo un libro (descargable libremente) sobre DSLs – dfa

+0

. Conozco este trabajo de Martin Fowler ... La pregunta surge de X # que descubrí ayer. Estoy buscando este tipo de DSL – LB40

Respuesta

0

Puede escribir un lenguaje específico de dominio de idiomas como Boo, pero pienso que la propia definición de dominio específico indica que la mayoría de las veces lo hará estar en una industria específica o incluso en una sola empresa ...

Wikipedia tiene un buen artículo introductorio sobre esto.

Este overview tiene una sección de ejemplos con algunos buenos enlaces.

+0

Estoy de acuerdo ... Implementar una DSL no es algo tan difícil, pero el problema es cómo apunte a la comunidad correcta y responda sus preguntas, de la manera correcta. – LB40

0

Hay partes de ruby ​​on rails que se pueden considerar idiomas específicos del dominio. En particular, su lenguaje para especificar tablas relacionales.

12

Un DSL que es tan exitoso que tiene su propia etiqueta SO es el lenguaje regex. Específico para el dominio de la coincidencia de patrones de cuerdas, por supuesto.

Otra popular, pero con la que no tengo experiencia es VHDL. La popularidad de VHDL se debe al hecho de que se puede convertir fácilmente para usar en un FPGA.

[editar] Aunque ciertamente no es Turing completo, el especificador de formato printf() de C se puede considerar como otro lenguaje específico de dominio.

+0

Gástame por 7 minutos ... Y, sí, diría que la expresión regular es probablemente la DSL más exitosa/ampliamente utilizada que existe. –

+0

VHDL es un buen ejemplo. – LB40

+2

aceptado, regex pwns bastante difícil –

6

EBNF es probablemente el lenguaje específico de dominio más utilizado en su dominio, un lenguaje para describir idiomas.

3

Wikipedia suggests que las fórmulas de hoja de cálculo y las secuencias de comandos de shell son idiomas específicos de dominio. Esto los haría probablemente los ejemplos más extendidos.

+1

Interesante .. Me gusta cómo en Excel tiene que utilizar básicamente notación funcional como: if (not (and (isblank (A $ 1), isblank (B $ 2)))) –

+1

Spreadsheet formulas I ' Estoy contigo (y Wikipedia) 100%. No estaría de acuerdo con las secuencias de comandos de shell, son esencialmente un lenguaje de propósito general, en el sentido de que son bastante trivialmente capaces de cualquier cosa. – Novelocrat

+0

No estoy de acuerdo en que los scripts de shell no sean DSL. Algunos de ellos están completos, pero siguen siendo específicos del dominio de la ejecución del programa de encadenamiento de una manera significativa. Bash es un excelente ejemplo. Ni siquiera tiene aritmética, llama a otras herramientas (prueba, expr) para hacer cosas muy básicas –

2

Awk proporciona es un lenguaje específico de dominio para el procesamiento de datos textuales semiestructurados.
Muchas de las más poderosas herramientas de línea de comandos de Unix en amplio uso como encontrar y grep podría ser clasificado como tener un lenguaje específico de dominio (incluso cuando se limita únicamente a los argumentos de línea de comandos) el lenguaje de

+0

Además, el shell en sí mismo: es un lenguaje de flujo de datos específico para el dominio de gestión de archivos y procesos. –

+0

de hecho, solo sentí que eran suficientes en sí mismos – ShuggyCoUk

0
  1. Mak invisible para mejorar la programación comportamientos charcter (no creo que tiene un nombre)
  2. argot - lenguaje de Goldman Sachs (he oído de él, pero nunca lo utilizaron)
  3. CMS-2 Armada lenguaje de programación
+0

CMS-2 no es específico de un dominio. Es solo una versión temprana de un lenguaje para programación incrustada, como C. A menos que creas que C es un lenguaje específico de dominio. –

0

fiador web de Google ch admite algunos increasingly sophisticated parametrization

Se podría argumentar que este es uno de los DSL más utilizados si incluso una pequeña fracción de su base de usuarios alguna vez utiliza uno de ellos en comparación con la lista estándar de palabras.

11

nmake, MSBuild, lex, yacc, bisontes, flexión, TeX, PostScript, XAML, SSIS, Wix

+9

make, sh, cmd.exe, HTML, CSS, PHP (originalmente), Perl (originalmente), Regexp, LINQ, SQL, XQuery, XPath, XSLT, XML Schema, DTD, JavaDoc. Además, el lenguaje de restricción utilizado en genéricos .NET (así como el de Java). Excel, podría decirse. Macros de Excel definitivamente. Diablos, incluso C: es un lenguaje específico de dominio para escribir kernels Unix en máquinas DEC PDP. (Desafortunadamente, algunas personas lo confundieron con un lenguaje de propósito general ...) La lista sigue y sigue y sigue y sigue –

1

MEL (Maya Expression Language) es un lenguaje de línea al estilo comando que Autodesk Maya utiliza en todo su diseño . El formato de archivo Maya Ascii en el que se pueden guardar escenas utiliza MEL para componer sus escenas. La interfaz de usuario se construye y controla en gran medida mediante scripts MEL. Las expresiones que puede usar para conducir canales y atributos en objetos son MEL.

Supongo que podría ser técnicamente ser considerado un lenguaje incrustado en los casos en que solo está escribiendo scripts para él. Sin embargo, sin MEL, Maya básicamente no existiría. Sin formato de archivo ASCII, sin interfaz de usuario, etc.

2

No sé si también se deben tener en cuenta las DSL gráficas. Me incluyo

  • NORMA, una conexión DSL para el modelado de dominio conceptual, basado en la notación de modelado de objetos en roles (ORM2)
  • Web Service Software Factory, que utiliza tres DSL para modelar servicios web

Ambos los anteriores fueron creados usando el DSL Toolkit.

+0

Debería volver a mirar las herramientas DSL ... No lo vi desde que JM Prieur me dio una demostración cuando estaba haciendo mi Ph.D. Eso parece ser realmente maduro ahora – LB40

+0

Extremadamente maduro. La versión beta de 2010 incluso tiene tecnología para permitir que los modelos se refieran entre sí. Vea tres videos cortos en http://code.msdn.microsoft.com/DslTools. Además, si no ha mirado desde las versiones de 2005, la versión 2008 resolvió la fealdad con las rutas de entrada. Ahora obtienes un buen Intellisense. –

0

Erlang era originalmente un lenguaje específico de telecomunicaciones, aunque ahora (ocasionalmente) se usa como un lenguaje de propósito general.

0

Los dos (no ya mencionado) que me han impresionado más son: (!)

Soy un gran ventilador de DSL declarativas. Las DSL operativas (como Maple, Mathematica y R también son agradables, pero no tan diferentes de los lenguajes convencionales).

0

Tcl es un lenguaje que fue originalmente diseñado para construir DSL, proporcionando funcionalidades básicas como programabilidad y E/S mientras las partes específicas del dominio se crearon para cada aplicación, y que creció hasta convertirse en un scripting genérico idioma.Una de las DSL basadas en Tcl más conocidas es Expect.

0

Para los procesos comerciales que tenemos, p.

  • BPEL que se expresa en XML y es ejecutable
  • BPMN que es un lenguaje visual y se utiliza para modelar
Cuestiones relacionadas