title: Lenguaje específico de dominio
text: # Lenguaje específico de dominio
  
  En desarrollo de software e ingeniería de dominio, un lenguaje específico de dominio, o "lenguaje específico del dominio", (en inglés domain-specific language, DSL) es un lenguaje de programación o especificación dedicado a resolver un problema en particular, representar un problema específico y proveer una técnica para solucionar una situación particular. El concepto no es nuevo pero se ha vuelto más popular debido al aumento del uso de modelaje específico del dominio.
  Ejemplos de lenguajes específicos del dominio incluyen, Logo para niños, Verilog y VHSIC, R y S para estadísticas, Mata para programación matricial, Mathematica y Maxima para matemáticas, fórmulas de hojas de cálculo y macros, SQL para consultas a bases de datos relacionales, Yacc para crear parseadores, expresiones regulares para crear análisis léxico, Generic Eclipse Modeling System para crear lenguajes con el objetivo de diagramar, Csound un lenguaje para síntesis digital, y los lenguajes de entrada de GraphViz y GrGen, paquetes de software usados para graficar y reescribir gráficas.
  Lo opuesto es:
  * un lenguaje de programación de propósito general, como por ejemplo C o Java.
  * o un lenguaje de modelaje de propósito general como UML.
  Crear un lenguaje específico del dominio (con software que lo soporte) vale la pena cuando permite que un tipo particular de problemas o soluciones puedan ser expresadas más claramente que con otros lenguajes existentes, y el tipo de problema en cuestión reaparece lo suficiente. La programación orientada a lenguajes considera la creación de lenguajes específicos para expresar problemas una parte estándar para el proceso de solucionar el problema.
  En los DSL, la semántica del lenguaje está muy cercana al dominio del problema para el cual se diseña. Tienen un alto nivel de abstracción al usuario, por tanto, están dirigidos a expertos en el dominio.
  
  # Lenguaje específico de dominio
  ## Diseño del metamodelo
  
  Metamodelado es el análisis, diseño y construcción de los metamodelos necesarios para cubrir un determinado tipo de problemas, así como las reglas y restricciones aplicables.
  Metamodelo: conjunto de conceptos del dominio a modelar (metaclases) y las relaciones entre ellos (metasociaciones).
  
  # Lenguaje específico de dominio
  ## Desarrollo del modelo de presentación
  
  Tendremos que elegir, según el problema a resolver, cuál es el formato de representación más adecuado para nuestro DSL. ¿Cuál es el tipo de problema que queremos modelar? ¿Quiénes serán los usuarios del lenguaje?
  Dos tipos de DSL:
  * Textuales: más expresivos, están basados en una gramática.
  * Visuales: más fáciles de interpretar, está basado en el mapping entre elementos gráficos y elementos de nuestro metamodelo.
  
  # Lenguaje específico de dominio
  ## Generación de transformaciones
  
  Existen varios tipos de transformaciones:
  * Modelo a modelo (M2M).
  * Modelo a texto (M2T).
  
  # Lenguaje específico de dominio
  ## Entorno tecnológico
  
  El Eclipse Modeling Project centra la evolución y promoción del desarrollo de tecnologías basadas en modelos dentro de la comunidad Eclipse, proveyendo un conjunto unificado de frameworks para el modelaje, herramientas e implementación de estándares.