Lenguaje específico del dominio


De Wikipedia, la enciclopedia libre
  (Redirigido desde idiomas específicos del dominio )
Saltar a navegación Saltar a búsqueda

Un lenguaje específico de dominio ( DSL ) es un lenguaje informático especializado en un dominio de aplicación en particular . Esto contrasta con un lenguaje de propósito general (GPL), que es ampliamente aplicable en todos los dominios. Existe una amplia variedad de DSL, que van desde lenguajes ampliamente utilizados para dominios comunes, como HTML para páginas web, hasta lenguajes utilizados por solo una o unas pocas piezas de software, como el código de software MUSH . DSL se pueden subdividir aún más por el tipo de lenguaje, e incluyen específicos de dominio de marcado idiomas , de dominio específico de modelado de idiomas (en términos más generales,lenguajes de especificación ) y lenguajes de programación específicos del dominio . Los lenguajes informáticos de propósito especial siempre han existido en la era informática, pero el término "lenguaje específico de dominio" se ha vuelto más popular debido al aumento del modelado específico de dominio . Los DSL más simples, en particular los utilizados por una sola aplicación, a veces se denominan informalmente mini-lenguajes .

La línea divisoria entre lenguajes de uso general y lenguajes de dominio específico no siempre es nítida, ya que un lenguaje puede tener características especializadas para un dominio en particular pero ser aplicable de manera más amplia, o por el contrario, puede, en principio, ser capaz de una amplia aplicación pero en la práctica utilizado principalmente para un dominio específico. Por ejemplo, Perl se desarrolló originalmente como un lenguaje de procesamiento de texto y pegamento, para el mismo dominio que AWK y los scripts de shell , pero más adelante se usó principalmente como un lenguaje de programación de propósito general. Por el contrario, PostScript es un lenguaje completo de Turing y, en principio, se puede utilizar para cualquier tarea, pero en la práctica se utiliza de forma limitada como lenguaje de descripción de páginas .

Usar

El diseño y uso de DSL apropiados es una parte clave de la ingeniería de dominio , mediante el uso de un lenguaje adecuado para el dominio en cuestión; esto puede consistir en usar un DSL o GPL existente, o desarrollar un nuevo DSL. Programación orientada al lenguajeconsidera la creación de lenguajes de propósito especial para expresar problemas como parte estándar del proceso de resolución de problemas. Crear un lenguaje específico de dominio (con software que lo soporte), en lugar de reutilizar un lenguaje existente, puede valer la pena si el lenguaje permite que un tipo particular de problema o solución se exprese más claramente de lo que permitiría un lenguaje existente y el tipo de El problema en cuestión reaparece con suficiente frecuencia. De manera pragmática, un DSL puede estar especializado en un dominio de problema particular, una técnica de representación de problema particular, una técnica de solución particular u otros aspectos de un dominio.

Visión general

Un lenguaje de dominio específico se crea específicamente para resolver problemas en un dominio en particular y no está destinado a poder resolver problemas fuera de él (aunque eso puede ser técnicamente posible). Por el contrario, los lenguajes de uso general se crean para resolver problemas en muchos dominios. El dominio también puede ser un área comercial. Algunos ejemplos de áreas comerciales incluyen:

  • pólizas de seguro de vida (desarrolladas internamente por una gran empresa de seguros)
  • simulación de combate
  • cálculo de salario
  • facturación

Un lenguaje de dominio específico se encuentra en algún lugar entre un lenguaje de programación diminuto y un lenguaje de scripting , y a menudo se usa de manera análoga a una biblioteca de programación . Los límites entre estos conceptos son bastante borrosos, al igual que el límite entre los lenguajes de scripting y los lenguajes de propósito general.

En diseño e implementación

Los lenguajes de dominio específico son lenguajes (o, a menudo, sintaxis o gramáticas declaradas) con objetivos muy específicos en el diseño y la implementación. Un lenguaje específico de dominio puede ser un lenguaje de diagramación visual, como los creados por el Sistema de modelado genérico Eclipse , abstracciones programáticas, como el Marco de modelado Eclipse , o lenguajes textuales. Por ejemplo, la utilidad de línea de comandos grep tiene una sintaxis de expresión regular que coincide con patrones en líneas de texto. La utilidad sed define una sintaxis para hacer coincidir y reemplazar expresiones regulares. A menudo, estos pequeños lenguajes se pueden usar juntos dentro de un shell para realizar tareas de programación más complejas.

La línea entre lenguajes específicos de dominio y lenguajes de scripting es algo borrosa, pero los lenguajes específicos de dominio a menudo carecen de funciones de bajo nivel para el acceso al sistema de archivos, control entre procesos y otras funciones que caracterizan a los lenguajes de programación con todas las funciones, scripting u otros. Muchos lenguajes específicos de dominio no se compilan en código de bytes o código ejecutable, sino en varios tipos de objetos de medios: GraphViz exporta a PostScript , GIF , JPEG , etc., donde Csound se compila en archivos de audio y un dominio de trazado de rayos. lenguaje específico como POV se compila en archivos de gráficos. Un lenguaje informático como SQL presenta un caso interesante: se puede considerar un lenguaje específico de dominio porque es específico de un dominio específico (en el caso de SQL, acceder y administrar bases de datos relacionales), y a menudo se llama desde otra aplicación, pero SQL tiene más palabras clave y funciones que muchos lenguajes de scripting, y a menudo se lo considera un lenguaje por derecho propio, tal vez debido a la prevalencia de la manipulación de bases de datos en la programación y la cantidad de dominio que se requiere para ser un experto en el lenguaje.

Desdibujando aún más esta línea, muchos lenguajes específicos de dominio tienen API expuestas y se puede acceder a ellas desde otros lenguajes de programación sin interrumpir el flujo de ejecución o llamar a un proceso separado, y por lo tanto pueden operar como bibliotecas de programación.

Herramientas de programación

Algunos lenguajes específicos de dominio se expanden con el tiempo para incluir herramientas de programación con todas las funciones, lo que complica aún más la cuestión de si un lenguaje es específico de dominio o no. Un buen ejemplo es el lenguaje funcional XSLT , diseñado específicamente para transformar un gráfico XML en otro, que se ha extendido desde sus inicios para permitir (particularmente en su versión 2.0) varias formas de interacción del sistema de archivos, manipulación de cadenas y fechas, y tipificación de datos. .

En la ingeniería impulsada por modelos , se pueden encontrar muchos ejemplos de lenguajes específicos de dominio como OCL , un lenguaje para decorar modelos con aserciones o QVT , un lenguaje de transformación específico de dominio. Sin embargo, lenguajes como UML suelen ser lenguajes de modelado de propósito general.

Para resumir, una analogía podría ser útil: un lenguaje muy pequeño es como un cuchillo, que se puede usar de miles de formas diferentes, desde cortar alimentos hasta talar árboles. Un lenguaje de dominio específico es como un taladro eléctrico: es una herramienta poderosa con una amplia variedad de usos, pero un contexto específico, es decir, poner agujeros en las cosas. Un lenguaje de propósito general es un banco de trabajo completo, con una variedad de herramientas diseñadas para realizar una variedad de tareas. Los programadores deben utilizar lenguajes específicos de dominio que, al observar su entorno de trabajo actual, se dan cuenta de que necesitan un mejor ejercicio y descubren que un lenguaje específico de dominio en particular proporciona exactamente eso.

Temas de idiomas específicos del dominio

Idiomas específicos de dominio externo e incrustado

Los DSL implementados a través de un intérprete o compilador independiente se conocen como lenguajes específicos de dominio externo . Los ejemplos bien conocidos incluyen LaTeX o AWK. Una categoría separada conocida como Lenguajes específicos de dominio incrustados (o internos) se implementan típicamente dentro de un idioma anfitrión como una biblioteca y tienden a estar limitadas a la sintaxis del idioma anfitrión, aunque esto depende de las capacidades del idioma anfitrión. [1]

Patrones de uso

Hay varios patrones de uso para idiomas específicos de dominio: [2] [3]

  • Procesamiento con herramientas independientes, invocadas mediante la operación directa del usuario, a menudo en la línea de comandos o desde un Makefile (por ejemplo, grep para la coincidencia de expresiones regulares, sed, lex, yacc, el conjunto de herramientas GraphViz , etc.)
  • Lenguajes específicos de dominio que se implementan utilizando sistemas de macros de lenguaje de programación y que se convierten o expanden a un lenguaje anfitrión de propósito general en tiempo de compilación o en tiempo real.
  • lenguaje específico de dominio integrado ( eDSL ), [4] implementado como bibliotecas que explotan la sintaxis de su lenguaje de propósito general anfitrión o un subconjunto del mismo mientras agregan elementos de lenguaje específicos de dominio (tipos de datos, rutinas, métodos, macros, etc.). (por ejemplo , jQuery , React , Embedded SQL , LINQ )
  • Lenguajes específicos de dominio que se llaman (en tiempo de ejecución) desde programas escritos en lenguajes de propósito general como C o Perl , para realizar una función específica, a menudo devolviendo los resultados de la operación al lenguaje de programación "host" para su posterior procesamiento; generalmente, un intérprete o máquina virtual para el lenguaje específico del dominio está integrado en la aplicación de host (por ejemplo , cadenas de formato , un motor de expresión regular )
  • Lenguajes específicos de dominio que están integrados en aplicaciones de usuario (por ejemplo, lenguajes macro dentro de hojas de cálculo) y que (1) se utilizan para ejecutar código escrito por los usuarios de la aplicación, (2) generado dinámicamente por la aplicación, o (3) ambos.

Muchos lenguajes de dominios específicos se pueden utilizar de más de una forma. [ cita requerida ] El código DSL incrustado en un lenguaje anfitrión puede tener soporte de sintaxis especial, como expresiones regulares en sed, AWK, Perl o JavaScript, o puede pasarse como cadenas.

Objetivos de diseño

Adoptar un enfoque de lenguaje específico de dominio para la ingeniería de software implica tanto riesgos como oportunidades. El lenguaje específico de dominio bien diseñado logra encontrar el equilibrio adecuado entre estos.

Los lenguajes de dominio específico tienen importantes objetivos de diseño que contrastan con los de los lenguajes de uso general:

  • Los lenguajes específicos de dominio son menos completos.
  • Los lenguajes específicos de dominio son mucho más expresivos en su dominio.
  • Los lenguajes específicos de dominio deben exhibir una redundancia mínima .

Modismos

En programación, los modismos son métodos impuestos por los programadores para manejar tareas de desarrollo comunes, por ejemplo:

  • Asegúrese de que los datos se guarden antes de que se cierre la ventana.
  • Edite el código siempre que cambien los parámetros de la línea de comandos porque afectan el comportamiento del programa.

Los lenguajes de programación de propósito general rara vez admiten tales modismos, pero los lenguajes específicos de dominio pueden describirlos, por ejemplo:

  • Un script puede guardar datos automáticamente.
  • Un lenguaje específico de dominio puede parametrizar la entrada de la línea de comandos.

Ejemplos de

Ejemplos de lenguajes específicos de dominio incluyen HTML , Logo para dibujo a lápiz, lenguajes de descripción de hardware Verilog y VHDL , MATLAB y GNU Octave para programación matricial, Mathematica , Maple y Maxima para matemáticas simbólicas , lenguaje de especificación y descripción para sistemas reactivos y distribuidos, fórmulas y macros de hojas de cálculo , SQL para consultas de bases de datos relacionales , gramáticas YACC para crear analizadores ,expresiones regulares para especificar lexers , el Sistema de Modelado Eclipse genérico para crear lenguajes de creación de diagramas, CSound para los idiomas de entrada de sonido y la síntesis de la música, y GraphViz y GrGen , paquetes de software utilizados para el diseño gráfico y el gráfico de la reescritura , Hashicorp de configuración del idioma utilizado para Terraform y otra Herramientas Hashicorp , Puppet también tiene su propio lenguaje de configuración .

Idioma de GameMaker

El lenguaje de secuencias de comandos GML utilizado por GameMaker Studio es un lenguaje específico de dominio dirigido a programadores novatos para que puedan aprender a programar fácilmente. Si bien el lenguaje sirve como una combinación de múltiples lenguajes, incluidos Delphi , C ++ y BASIC , faltan estructuras, tipos de datos y otras características de un lenguaje de programación completo. Muchas de las funciones integradas están en espacio aislado con el fin de facilitar la portabilidad. El idioma sirve principalmente para facilitar que cualquiera pueda aprender el idioma y desarrollar un juego.

Lenguaje de marcado ColdFusion

El lenguaje de secuencias de comandos asociado de ColdFusion es otro ejemplo de un lenguaje específico de dominio para sitios web basados ​​en datos. Este lenguaje de secuencias de comandos se utiliza para unir idiomas y servicios como Java, .NET, C ++, SMS, correo electrónico, servidores de correo electrónico, http, ftp, intercambio, servicios de directorio y sistemas de archivos para su uso en sitios web.

El lenguaje de marcado de ColdFusion (CFML) incluye un conjunto de etiquetas que se pueden utilizar en las páginas de ColdFusion para interactuar con fuentes de datos, manipular datos y mostrar la salida. La sintaxis de la etiqueta CFML es similar a la sintaxis de los elementos HTML.

Erlang OTP

La plataforma Erlang Open Telecom se diseñó originalmente para su uso dentro de Ericsson como un lenguaje específico de dominio. El lenguaje en sí ofrece una plataforma de bibliotecas para crear máquinas de estado finito, servidores genéricos y administradores de eventos que permiten rápidamente a un ingeniero implementar aplicaciones o bibliotecas de soporte, que se han demostrado en los puntos de referencia de la industria para superar a otros lenguajes destinados a un conjunto mixto de dominios. , como C y C ++. El idioma ahora es oficialmente de código abierto y se puede descargar desde su sitio web.

FilterMeister

FilterMeister es un entorno de programación, con un lenguaje de programación basado en C, con el propósito específico de crear complementos de filtro de procesamiento de imágenes compatibles con Photoshop ; FilterMeister se ejecuta como un complemento de Photoshop y puede cargar y ejecutar scripts o compilarlos y exportarlos como complementos independientes. Aunque el lenguaje FilterMeister reproduce una parte significativa del lenguaje C y la biblioteca de funciones, contiene solo aquellas características que se pueden usar dentro del contexto de los complementos de Photoshop y agrega una serie de características específicas que solo son útiles en este dominio específico.

Plantillas de MediaWiki

La función Plantilla de MediaWiki es un lenguaje específico de dominio integrado cuyo propósito fundamental es apoyar la creación de plantillas de página y la transclusión (inclusión por referencia) de páginas de MediaWiki en otras páginas de MediaWiki.

Usos de la ingeniería de software

Ha habido mucho interés en los lenguajes de dominios específicos para mejorar la productividad y la calidad de la ingeniería de software . El lenguaje específico del dominio posiblemente podría proporcionar un conjunto sólido de herramientas para una ingeniería de software eficiente. Estas herramientas están comenzando a abrirse camino en el desarrollo de sistemas de software críticos.

El Kit de herramientas de reducción de costos de software [5] es un ejemplo de esto. El kit de herramientas es un conjunto de utilidades que incluye un editor de especificaciones para crear una especificación de requisitos , un navegador de gráficos de dependencia para mostrar dependencias de variables, un verificador de consistencia para detectar casos faltantes en fórmulas bien formadas en la especificación, un verificador de modelos y un probador de teoremas para comparar las propiedades del programa con la especificación y un generador de invariantes que construye automáticamente invariantes en función de los requisitos.

Un desarrollo más reciente es la programación orientada al lenguaje , una metodología de ingeniería de software integrada basada principalmente en la creación, optimización y uso de lenguajes específicos de dominio.

Metacompiladores

Complementando la programación orientada al lenguaje , así como todas las otras formas de lenguajes específicos de dominio, se encuentra la clase de herramientas de escritura de compiladores llamadas metacompiladores . Un metacompilador no solo es útil para generar analizadores sintácticos y generadores de código para lenguajes específicos de dominio, sino que un metacompilador en sí mismo compila un metalenguaje específico de dominio diseñado específicamente para el dominio de la metaprogramación .

Además de analizar lenguajes específicos de dominio, los metacompiladores son útiles para generar una amplia gama de herramientas de análisis e ingeniería de software. La metodología del metacompilador se encuentra a menudo en los sistemas de transformación de programas .

Los metacompiladores que jugaron un papel importante tanto en la informática como en la industria informática incluyen Meta-II , [6] y su descendiente TreeMeta . [7]

Unreal Engine antes de la versión 4 y otros juegos

Unreal and Unreal Tournament dio a conocer un lenguaje llamado UnrealScript . Esto permitió un rápido desarrollo de modificaciones en comparación con el competidor Quake (utilizando el motor Id Tech 2 ). El motor Id Tech usaba código C estándar , lo que significa que C tenía que ser aprendido y aplicado correctamente, mientras que UnrealScript estaba optimizado para facilitar su uso y eficiencia. De manera similar, el desarrollo de juegos más recientes introdujo sus propios lenguajes específicos, un ejemplo más común es Lua para scripting. [ cita requerida ]

Motores de reglas para la automatización de políticas

Se han desarrollado varios motores de reglas comerciales para automatizar las políticas y las reglas comerciales que se utilizan tanto en el gobierno como en la industria privada. ILOG , Oracle Policy Automation , DTRules , Drools y otros brindan soporte para DSL destinados a admitir varios dominios de problemas. DTRules va tan lejos como para definir una interfaz para el uso de múltiples DSL dentro de un conjunto de reglas.

El propósito de Business Rules Engines es definir una representación de la lógica empresarial de la manera más legible posible. Esto permite que tanto los expertos en la materia como los desarrolladores trabajen y comprendan la misma representación de la lógica empresarial. La mayoría de los motores de reglas proporcionan un enfoque para simplificar las estructuras de control de la lógica empresarial (por ejemplo, utilizando reglas declarativas o tablas de decisión ) junto con alternativas a la sintaxis de programación a favor de los DSL.

Lenguajes de modelado estadístico

Los modeladores estadísticos han desarrollado lenguajes específicos de dominio como R (una implementación del lenguaje S ), Bugs , Jags y Stan . Estos lenguajes proporcionan una sintaxis para describir un modelo bayesiano y generan un método para resolverlo mediante simulación.

Genere modelos y servicios para múltiples lenguajes de programación

Genere manejo de objetos y servicios basados ​​en un lenguaje de descripción de interfaz para un lenguaje específico de dominio, como JavaScript para aplicaciones web, HTML para documentación, C ++ para código de alto rendimiento, etc. Esto se realiza mediante marcos de idiomas cruzados como Apache Thrift o Búferes de protocolo de Google .

Pepinillo

Gherkin es un lenguaje diseñado para definir casos de prueba para verificar el comportamiento del software, sin especificar cómo se implementa ese comportamiento. Está destinado a ser leído y utilizado por usuarios no técnicos utilizando una sintaxis de lenguaje natural y un diseño orientado a líneas . Las pruebas definidas con Gherkin deben implementarse en un lenguaje de programación general. Luego, los pasos en un programa Gherkin actúan como una sintaxis para la invocación de métodos accesible a los no desarrolladores.

Otros ejemplos

Otros ejemplos destacados de lenguajes específicos de dominio incluyen:

  • Emacs Lisp
  • Idioma de descripción del juego
  • Lenguaje de sombreado OpenGL
  • Gradle
  • ActionScript

Ventajas y desventajas

Algunas de las ventajas: [2] [3]

  • Los lenguajes específicos del dominio permiten que las soluciones se expresen en el idioma y al nivel de abstracción del dominio del problema. La idea es que los propios expertos en el dominio puedan comprender, validar, modificar y, a menudo, incluso desarrollar programas de lenguaje específicos del dominio. Sin embargo, este rara vez es el caso. [8]
  • Los lenguajes específicos de dominio permiten la validación a nivel de dominio. Siempre que las construcciones del lenguaje sean seguras, cualquier oración escrita con ellas puede considerarse segura. [ cita requerida ]
  • Los lenguajes específicos del dominio pueden ayudar a cambiar el desarrollo de los sistemas de información empresarial de los desarrolladores de software tradicionales al grupo normalmente más grande de expertos en el dominio que (a pesar de tener menos experiencia técnica) tienen un conocimiento más profundo del dominio. [9]
  • Los lenguajes de dominios específicos son más fáciles de aprender, dado su alcance limitado.

Algunas de las desventajas:

  • Costo de aprender un nuevo idioma frente a su aplicabilidad limitada
  • Costo de diseñar, implementar y mantener un lenguaje específico de dominio, así como las herramientas necesarias para desarrollar con él ( IDE )
  • Encontrar, establecer y mantener el alcance adecuado.
  • Dificultad para equilibrar las compensaciones entre la especificidad del dominio y las construcciones del lenguaje de programación de propósito general.
  • Pérdida potencial de eficiencia del procesador en comparación con el software codificado a mano.
  • Proliferación de lenguajes específicos de dominio no estándar similares, por ejemplo, un DSL usado dentro de una compañía de seguros versus un DSL usado dentro de otra compañía de seguros. [10]
  • Los expertos en dominios no técnicos pueden tener dificultades para escribir o modificar programas DSL por sí mismos. [8]
  • Mayor dificultad para integrar el DSL con otros componentes del sistema de TI (en comparación con la integración con un lenguaje de propósito general).
  • La escasa oferta de expertos en un DSL en particular tiende a elevar los costos laborales.
  • Es más difícil encontrar ejemplos de código.

Herramientas para diseñar lenguajes específicos de dominio

  • JetBrains MPS es una herramienta para diseñar lenguajes específicos de dominio. Utiliza la edición por proyección que permite superar los límites de los analizadores de idiomas y crear editores DSL, como los que tienen tablas y diagramas. Implementa programación orientada al lenguaje. MPS combina un entorno para la definición de lenguajes, un banco de trabajo de lenguajes y un Entorno de desarrollo integrado (IDE) para dichos lenguajes. [11]
  • Xtext es un marco de software de código abierto para desarrollar lenguajes de programación y lenguajes específicos de dominio (DSL). A diferencia de los generadores de analizadores sintácticos estándar, Xtext genera no solo un analizador, sino también un modelo de clase para el árbol de sintaxis abstracta. Además, proporciona un IDE basado en Eclipse totalmente personalizable y con todas las funciones. [12]
  • Racket es una cadena de herramientas de lenguaje multiplataforma que incluye compilador, compilador JIT, IDE y herramientas de línea de comandos diseñadas para adaptarse a la creación de lenguajes específicos de dominio y lenguajes completamente nuevos. [13] [14]

Ver también

  • Banco de trabajo de idiomas
  • Lenguaje de descripción de arquitectura
  • Lenguaje de entretenimiento específico del dominio
  • Idioma para fines específicos
  • Jerga
  • Abstracción metalingüística
  • Dominio de programación

Referencias

  1. ^ Fowler, Martin; Parsons, Rebecca. "Idiomas específicos del dominio" . Consultado el 6 de julio de 2019 .
  2. ↑ a b Marjan Mernik, Jan Heering y Anthony M. Sloane. Cuándo y cómo desarrollar lenguajes específicos de dominio. Encuestas de computación de ACM , 37 (4): 316–344, 2005. doi : 10.1145 / 1118890.1118892
  3. ^ a b Diomidis Spinellis. Patrones de diseño notables para lenguajes específicos de dominio . Journal of Systems and Software , 56 (1): 91–99, febrero de 2001. doi : 10.1016 / S0164-1212 (00) 00089-3
  4. ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (marzo de 2018). "Un lenguaje de programación programable" . Comunicaciones de la ACM . 61 (3): 62–71. doi : 10.1145 / 3127323 . S2CID 3887010 . Consultado el 15 de mayo de 2019 . 
  5. ^ Heitmeyer, C. (1998). "Uso del conjunto de herramientas SCR * para especificar los requisitos de software" (PDF) . Actas. 2do Taller IEEE sobre Técnicas de Especificación Formal de Resistencia Industrial . IEEE. págs. 12-13. doi : 10.1109 / WIFT.1998.766290 . ISBN  0-7695-0081-1. S2CID  16079058 . Archivado desde el original (PDF) el 19 de julio de 2004.
  6. ^ Shorre, DV (1964). "META II un lenguaje de escritura de compiladores orientado a la sintaxis". Actas de la 19ª Conferencia Nacional ACM de 1964 : 41.301–41.3011. doi : 10.1145 / 800257.808896 . S2CID 43144779 . 
  7. ^ Carr, C. Stephen; Lutero, David A .; Erdmann, Sherian (1969). "El sistema compilador-compilador TREE-META: un sistema meta compilador para el Univac 1108 y General Electric 645" . Informe técnico de la Universidad de Utah RADC-TR-69-83 .
  8. ↑ a b Freudenthal, Margus (1 de enero de 2009). "Idiomas específicos de dominio en un sistema de información aduanero". Software IEEE : 1. doi : 10.1109 / MS.2009.152 .
  9. ^ Aram, Michael; Neumann, Gustaf (1 de julio de 2015). "Análisis multicapa del codesarrollo de sistemas de información empresarial" (PDF) . Revista de aplicaciones y servicios de Internet . 6 (1). doi : 10.1186 / s13174-015-0030-8 . S2CID 16502371 .  
  10. ^ Miotto, Eric. "Sobre la integración de conocimientos científicos y de dominio específico en la ingeniería dirigida por modelos" (PDF) . Archivado desde el original (PDF) el 24 de julio de 2011 . Consultado el 22 de noviembre de 2010 .
  11. ^ "JetBrains MPS: creador de lenguaje específico de dominio" .
  12. ^ "Xtext" .
  13. Tobin-Hochstadt, S .; St-Amour, V .; Culpepper, R .; Flatt, M ​​.; Felleisen, M. (2011). "Idiomas como bibliotecas" (PDF) . Diseño e implementación de lenguajes de programación .
  14. ^ Flatt, Matthew (2012). "Creando lenguajes en la raqueta" . Comunicaciones de la ACM . Consultado el 8 de abril de 2012 .

Otras lecturas

  • Dunlavey (1994). Creación de mejores aplicaciones: una teoría del desarrollo de software eficiente . Publicaciones internacionales de Thomson . ISBN 0-442-01740-5.
  • Heitmeyer, Constance (1998). "Uso del conjunto de herramientas SCR para especificar los requisitos de software" (PDF) . Actas, segundo taller del IEEE sobre técnicas de especificación formal de resistencia industrial, Boca Raton, FL, 19 de octubre de 1998 : 12–13. doi : 10.1109 / WIFT.1998.766290 . ISBN 0-7695-0081-1. S2CID  16079058 .
  • Mernik, Marjan; Heering, Jan y Sloane, Anthony M. (2005). "Cuándo y cómo desarrollar lenguajes específicos de dominio" . Encuestas de computación ACM . 37 (4): 316–344. doi : 10.1145 / 1118890.1118892 . S2CID  207158373 .
  • Spinellis, Diomidis (2001). "Patrones de diseño notables para lenguajes específicos de dominio". Revista de sistemas y software . 56 (1): 91–99. doi : 10.1016 / S0164-1212 (00) 00089-3 .
  • Parr, Terence (2007). La referencia definitiva de ANTLR: creación de lenguajes específicos de dominio . ISBN 978-0-9787392-5-6.
  • Larus, James (2009). "Gastar el dividendo de Moore". Comunicaciones de la ACM . 52 (5): 62–69. doi : 10.1145 / 1506409.1506425 . ISSN  0001-0782 . S2CID  2803479 .
  • Werner Schuster (15 de junio de 2007). "¿Qué es un Ruby DSL y qué no?" . C4Media . Consultado el 8 de septiembre de 2009 .
  • Fowler, Martin (2011). Idiomas específicos del dominio . ISBN 978-0-321-71294-3.
  • Brambilla, Marco; Cabot, Jordi; Wimmer, Manuel (2012). Ingeniería de software basada en modelos en la práctica . Conferencias de síntesis sobre ingeniería de software. # 1 . Morgan y Claypool. ISBN 978-1-62705-708-0.

enlaces externos

  • " Minilenguajes ", El arte de la programación Unix , por Eric S. Raymond
  • Martin Fowler sobre lenguajes específicos de dominio y Language Workbenches . También en una presentación de video
  • Idiomas específicos de dominio: una bibliografía anotada
  • Compiladores de un día: creación de un pequeño lenguaje específico de dominio con OCaml
  • Asociación Usenix: Conferencia sobre lenguajes específicos de dominio (DSL '97) y 2a conferencia sobre lenguajes específicos de dominio (DSL '99)
  • Idiomas internos específicos del dominio
  • La guía completa de lenguajes específicos de dominio (externos)
  • Ejemplo de jEQN de lenguaje específico de dominio interno para el modelado y simulación de redes de colas extendidas .
Artículos
  • DSL externos con tecnología Eclipse
  • "Construcción de lenguajes específicos de dominio sobre un marco de lenguaje". 1997. CiteSeerX  10.1.1.50.4685 . Cite journal requiere |journal=( ayuda )
  • Uso de Acceleo con GMF: generación de presentaciones a partir de un modelador DSL de MindMap
  • UML frente a lenguajes específicos de dominio
  • Sagar Sen; et al. (2009). "Poda Metamodelo". CiteSeerX  10.1.1.156.6008 . Cite journal requiere |journal=( ayuda )
Obtenido de " https://en.wikipedia.org/w/index.php?title=Domain-specific_language&oldid=1048426181 "