Lenguaje de dominio específico
Los ejemplos de lenguajes de dominio específico incluyen HTML, Logo para el dibujo a lápiz, los lenguajes de descripción de hardware Verilog y VHDL, MATLAB y GNU Octave para la programación de matrices, Mathematica, Maple y Maxima para la matemática simbólica, Specification and Description Language 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 la creación de analizadores sintácticos, expresiones regulares para especificar léxicos, el Sistema Genérico de Modelado Eclipse para la creación de lenguajes de diagramación, Csound para la síntesis de sonido y música, y los lenguajes de entrada de GraphViz y GrGen, paquetes de software utilizados para el trazado de grafos y la reescritura de grafos, Hashicorp Configuration Language utilizado para Terraform y otras herramientas de Hashicorp, Puppet también tiene su propio lenguaje de configuración.
GameMaker LanguageEdit
El lenguaje de scripting GML utilizado por GameMaker Studio es un lenguaje de dominio específico dirigido a los programadores novatos para que puedan aprender fácilmente a programar. Mientras que el lenguaje sirve como una mezcla de múltiples lenguajes incluyendo Delphi, C++ y BASIC, hay una falta de estructuras, tipos de datos y otras características de un lenguaje de programación completo. Muchas de las funciones incorporadas están aisladas con el fin de facilitar la portabilidad. El lenguaje sirve principalmente para que cualquiera pueda coger el lenguaje y desarrollar un juego.
Lenguaje de Marcado ColdFusionEdit
El lenguaje de scripting asociado a ColdFusion es otro ejemplo de lenguaje específico para sitios web basados en datos.Este lenguaje de scripting se utiliza para entrelazar lenguajes y servicios como Java, .NET, C++, SMS, correo electrónico, servidores de correo electrónico, http, ftp, exchange, 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 pueden utilizarse en las páginas de ColdFusion para interactuar con fuentes de datos, manipular datos y mostrar resultados. La sintaxis de las etiquetas CFML es similar a la sintaxis de los elementos HTML.
Erlang OTPEdit
La plataforma abierta de telecomunicaciones Erlang fue diseñada originalmente para su uso dentro de Ericsson como un lenguaje específico de dominio. El lenguaje en sí ofrece una plataforma de librerías para crear máquinas de estado finito, servidores genéricos y gestores de eventos que permiten rápidamente a un ingeniero desplegar aplicaciones, o librerías de apoyo, que han demostrado en los benchmarks de la industria que superan a otros lenguajes destinados a un conjunto mixto de dominios, como C y C++. El lenguaje es ahora oficialmente de código abierto y puede descargarse desde su página web.
FilterMeisterEdit
FilterMeister es un entorno de programación, con un lenguaje de programación que se basa en C, con el propósito específico de crear plug-ins de filtros de procesamiento de imágenes compatibles con Photoshop; FilterMeister se ejecuta como un plug-in de Photoshop en sí mismo y puede cargar y ejecutar scripts o compilarlos y exportarlos como plug-ins independientes.Aunque el lenguaje de FilterMeister reproduce una parte importante del lenguaje C y de la biblioteca de funciones, sólo contiene aquellas características que pueden utilizarse en el contexto de los plug-ins de Photoshop y añade una serie de características específicas que sólo son útiles en este ámbito concreto.
Plantillas de MediaWikiEditar
La función de Plantillas de MediaWiki es un lenguaje específico de dominio incrustado cuyo propósito fundamental es soportar la creación de plantillas de páginas y la transclusión (inclusión por referencia) de páginas de MediaWiki en otras páginas de MediaWiki.
Usos en ingeniería de softwareEditar
Ha habido mucho interés en los lenguajes específicos de dominio para mejorar la productividad y la calidad de la ingeniería de software. Los lenguajes específicos de dominio podrían proporcionar un conjunto robusto de herramientas para la ingeniería de software eficiente. Tales herramientas están empezando a abrirse camino en el desarrollo de sistemas de software críticos.
El kit de herramientas de reducción de costes de software es un ejemplo de ello. 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 las dependencias de las variables, un verificador de consistencia para detectar los casos que faltan en las fórmulas bien formadas de la especificación, un verificador de modelos y un probador de teoremas para comprobar las propiedades del programa con respecto a la especificación, y un generador de invariantes que construye automáticamente invariantes basados en 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 del dominio.
MetacompiladoresEditar
Complementando la programación orientada a lenguajes, así como todas las demás formas de lenguajes específicos de dominio, están la clase de herramientas de escritura de compiladores llamados metacompiladores. Un metacompilador no sólo es útil para generar analizadores sintácticos y generadores de código para lenguajes específicos del dominio, sino que un metacompilador compila por sí mismo un metalenguaje específico del dominio diseñado específicamente para el dominio de la metaprogramación.
Además de analizar lenguajes específicos del dominio, los metacompiladores son útiles para generar una amplia gama de herramientas de ingeniería y análisis de software. La metodología del metacompilador se encuentra a menudo en los sistemas de transformación de programas.
Los metacompiladores que desempeñaron un papel importante tanto en la ciencia de la computación como en la industria informática incluyen Meta-II, y su descendiente TreeMeta.
Unreal Engine antes de la versión 4 y otros juegosEdit
Unreal y Unreal Tournament estrenaron un lenguaje llamado UnrealScript. Esto permitió un rápido desarrollo de modificaciones en comparación con el competidor Quake (que utilizaba el motor Id Tech 2). El motor Id Tech utilizaba código C estándar, lo que significaba que había que aprender C y aplicarlo correctamente, mientras que UnrealScript estaba optimizado para facilitar el uso y la eficiencia. Del mismo modo, el desarrollo de juegos más recientes introdujo sus propios lenguajes específicos, un ejemplo más común es Lua para el scripting.
Motores de Reglas para la Automatización de PolíticasEditar
Se han desarrollado varios Motores de Reglas de Negocio para la automatización de políticas y reglas de negocio utilizados tanto en el gobierno como en la industria privada. ILOG, Oracle Policy Automation, DTRules, Drools y otros proporcionan soporte para DSLs destinados a soportar varios dominios de problemas. DTRules llega a definir una interfaz para el uso de múltiples DSLs dentro de un Conjunto de Reglas.
El propósito de los Motores de Reglas de Negocio es definir una representación de la lógica de negocio de la forma más legible posible para los humanos. Esto permite que tanto los expertos en la materia como los desarrolladores trabajen y entiendan la misma representación de la lógica de negocio. La mayoría de los Motores de Reglas proporcionan tanto un enfoque para simplificar las estructuras de control para la lógica de negocio (por ejemplo, utilizando Reglas Declarativas o Tablas de Decisión) junto con alternativas a la sintaxis de programación en favor de DSLs.
Lenguajes de modelado estadísticoEditar
Los modeladores estadísticos han desarrollado lenguajes específicos del 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.
Generar modelo y servicios a múltiples Lenguajes de programaciónEditar
Generar manejo de objetos y servicios basados en un Lenguaje de Descripción de Interfaces para un lenguaje específico del dominio como JavaScript para aplicaciones web, HTML para documentación, C++ para código de alto rendimiento, etc. Esto se hace mediante frameworks de lenguaje cruzado como Apache Thrift o Google Protocol Buffers.
GherkinEdit
Gherkin es un lenguaje diseñado para definir casos de prueba para comprobar el comportamiento del software, sin especificar cómo se implementa ese comportamiento. Está pensado para ser leído y utilizado por usuarios no técnicos utilizando una sintaxis de lenguaje natural y un diseño orientado a la línea. Las pruebas definidas con Gherkin deben ser implementadas en un lenguaje de programación general. Entonces, los pasos de un programa Gherkin actúan como una sintaxis de invocación de métodos accesible a los no desarrolladores.
Otros ejemplosEditar
Otros ejemplos destacados de lenguajes específicos de dominio incluyen:
- Emacs Lisp
- Lenguaje de descripción de juegos
- Lenguaje de sombreado OpenGL
- Gradle
- ActionScript
.