DSLs

Los lenguajes específicos de dominio (Domain-Specific Languages – DSLs) son lenguajes de programación diseñados para definir, de una manera más precisa y expresiva, áreas particulares, bien sean técnicas o de negocio.

Se denominan así en contraposición a los lenguajes de propósito general (General Purpose Languages – GPLs – Java, C#, C++, etc), ofreciendo un enfoque menos amplio pero más preciso, es decir, su objetivo es cubrir únicamente el área o dominio para el que se diseñan pero hacerlo con las estructuras gramaticales y/o abstracciones gráficas que mejor le definen.

Para entender estos lenguajes vamos a verlos desde dos puntos de vista: como una evolución a partir de la generación de código y como una evolución desde los GPLs.

DSLs desde la generación de código
Existen diferentes formas, más o menos sofisticadas, para generar código: macros, datos estructurados en tablas, generación dinámica, parseo de estructuras simples, modelados tipo CASE, etc, pero siempre que hablemos de un nivel elevado hablaremos de lenguajes (de tipo texto o gráfico), donde se define de manera formal las estructuras lingüísticas, su representación y su interpretación.

De este modo, entendemos que los DSLs son la vía más sofisticada en la generación de código.

DSLs desde los GPLs
Los GPLs son potentes porque permiten definir todos los problemas (Turing completo) pero en muchos casos son expresivamente pobres debido al salto entre la definición del problema (mundo real) y su solución (código fuente). Esto hace muy complicada la programación y el mantenimiento porque se hace difícil entender lo que se pretende solucionar.Pongamos por ejemplo la definición de una interfaz de usuario web y su representación en HTML: el salto expresivo es enorme.

En base a esta necesidad surgen los DSLs.

Características y ventajas de los DSLs

  • Mayor nivel de abstracción. Definen conceptos más complejos, más abstractos y por tanto más expresivos.
  • Tienen menos grados de libertad. Normalmente no son Turing completos. Permiten definir el dominio, nada más que el dominio y con las reglas que rigen el dominio, lo cual les dota de una enorme potencia (en ese dominio, claro).
  • Aumentan la productividad ya que permiten programar de una manera más rápida y eficiente.
  • Mejoran la calidad del software. Abstraen de la complejidad técnica, generalmente resuelta por el generador de código, evitando errores.
  • Soporte IDE (entorno de desarrollo integrado). Validaciones, comprobación de tipos, autocompletar, etc. Esto es una gran diferencia respecto a la definición del dominio mediante APIs o Frameworks.
  • Independientes de la plataforma.
  • En general todos las ventajas de la generación de código.
Los DSLs son comunes en el mundo real, a lo largo de la historia han sido creados en matemáticas, ciencia, medicina… Es el momento de usarlos en el desarrollo de software.
 

Ver todos los posts Teórico.
 

Acerca de bheudek

Doing Business Programming

Publicado el junio 25, 2014 en Bheudek, Teórico y etiquetado en , , . Guarda el enlace permanente. 5 comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: