ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Lenguajes de programación dinámicos para el desarrollo de lenguajes específicos de dominio interno


Enviado por   •  19 de Febrero de 2016  •  Ensayos  •  4.294 Palabras (18 Páginas)  •  256 Visitas

Página 1 de 18

Lenguajes de programación dinámicos para el desarrollo de lenguajes específicos de dominio interno

RESUMEN: los Lenguajes Específicos de Dominio (DSL) son lenguajes de programación de computadoras diseñados para resolver una clase particular de problemas pertenecientes a un dominio específico. Ofrecen un conjunto restringido de notaciones y abstracciones, en contraposición de los Lenguajes de Propósito General (GPL). A su vez, los Lenguajes Específicos de Domino Internos son una categoría de los DSLs, que se construyen usando un GPL como lenguaje anfitrión para utilizar sus características de análisis sintáctico y semántico. Este trabajo pretende proporcionar una visión general de los DSLs y de los aspectos y propiedades que ofrecen, en particular, los lenguajes de programación dinámicos para ser elegidos como el lenguaje anfitrión, al momento de implementar un DSL Interno, propiciando el uso de algunos patrones de diseño para la construcción de la sintaxis.

  1. INTRODUCCION

Un lenguaje específico de dominio (DSL) es un lenguaje de programación enfocado a un problema de dominio en particular, o una técnica de representación o resolución de problemas específica. Este concepto no es nuevo, ya que desde siempre existieron lenguajes de programación de propósito específico. Como ejemplos de DSL podemos mencionar a las fórmulas y macros de las planillas de cálculo, las expresiones regulares de ciertas utilidades, Csound (un lenguaje para crear archivos de audio), SQL (Lenguaje para consultas en Bases de Datos relaciones), CSS (Hojas de Estilo en Cascada) y más. Notar que esta definición permite que una biblioteca de un lenguaje de propósito general (GPL) sea considerada un lenguaje específico de dominio.

Los DSLs tienen menos alcance, son muchos más expresivos dentro de su dominio, y son construidos usando un lenguaje existente de propósito general. Los GPL se crean para resolver problemas en muchos dominios en contraposición a los DSL. Ejemplos de GPL son:

  • Lenguajes de programación de propósito general, como C o Java.
  • Lenguajes de programación orientados a un propósito especifico como Cobol en negocios y finanzas, Fortran para la computación numérica o Lips para el procesamiento simbólico. Estos lenguajes no son considerados DSL ya que su poder expresivo puede permitirles resolver problemas de otros dominios.
  • Lenguajes de modelado de propósito general, como UML.

Se crea un DSL cuando existe la necesidad de expresar tipos de problemas y soluciones particulares que los lenguajes pre-existentes no pueden modelar tan fácilmente. Es decir que los DSL se diseñan específicamente para resolver problemas dentro de un dominio en particular, y no están pensados para resolver problemas fuera de este dominio (aunque pueda ser técnicamente posible). Un dominio también puede ser un área de negocio específica. Algunos ejemplos de áreas de negocio son:

  • Lenguajes específicos de dominio para políticas de seguros de vida desarrollado internamente en la empresa.
  • Lenguajes específicos de dominio para simulacros de combate.
  • Lenguajes específicos de dominio para cálculos de salarios.
  • Lenguajes específicos de dominio para facturación.

Los lenguajes específicos de dominio, se dividen en 3 categorías principales, DSLs externos, DSLs internos y lenguajes workbenches (Fowler, 2010). A efectos de este trabajo, nos centraremos en los DSL internos, y más específicamente, en la construcción de su sintaxis  mediante el aporte que brindan los lenguajes de programación dinámicos, quienes ofrecen características valiosas, como la meta-programación dinámica o reflexión, para ser elegidos como el lenguaje anfitrión. Para la construcción de la sintaxis del DSL interno propiamente dicha, se buscarán soluciones planteadas por los patrones de diseño (Fowler, 2010): Object Scoping, Literal List y Literal Map, Dynamic Reception, y Textual Poloshing.

  1. LENGUAJES ESPECIFICO DE DOMINIO: CARACTERIZACION Y CLASIFICACION

Una definición para los DSLs es que son lenguajes de programación computacional de expresividad limitada enfocados a un dominio en particular (Fowler, 2010).

Existen 4 elementos claves en esta definición

  • Leguaje de programación de computadoras: Un DSL es usado por humanos para instruir a la computadora sobre lo que debe hacer. Al igual que con cualquier lenguaje moderno de computadoras, esta estructura es diseñada para que los humanos la entiendan fácilmente, pero aun debe ser ejecutable en alguna computadora. Los DSLs son usualmente declarativos, lo que significa que pueden ser vistos como lenguajes de  programación tanto como de especificación para la construcción de modelos, por ejemplo: Redes de Petri para la especificación de sistemas discretos paralelos o distribuidos.
  • Esencia del Lenguaje: un DSL es un lenguaje de programación, y como tal debe tener un sentido de fluidez donde la expresividad proviene no sólo de las expresiones individuales, sino también de la forma en que se compone el conjunto.
  • Expresividad limitada: un lenguaje de propósito general proporciona muchas capacidades: soporte a datos variados, control y estructuras abstractas. Estas características son muy útiles, pero hacen que sea más difícil aprender y usar un lenguaje de programación. Un DSL admite el mínimo de características necesarias para dar soporte al dominio. No se puede construir todo un sistema software en un DSL, mas bien, se diseña un DSL para un aspecto particular de dicho sistema.
  • Enfoque de dominio: un lenguaje limitado, sólo es útil si tiene un claro enfoque sobre un dominio pequeño. El enfoque de dominio es lo que hace que un lenguaje limitado valga la pena.

Los DSL, se dividen en 3 categorías principales, DSLs externos, DSLs internos y lenguajes workbenches (Fowler, 2010):

  • Un DLS externo es un lenguaje separado y diferente del lenguaje principal con el que funciona la aplicación. Generalmente, un DSL externo tiene una sintaxis personalizada, aunque también es común usar la sintaxis de otro lenguaje (por ejemplo XML). La construcción de un DSL externo  implica desarrollar su propia gramática, analizador sintáctico y analizador léxico para poder procesar el lenguaje. Existen herramientas que nos ayudan en esta tarea, como Lex, programa para generar analizadores léxicos (Lex - A Lexical Analyzer Generador) y Yacc, programa para generar analizadores sintácticos (Yacc: Yet Another Compiler-Compiler). Los DSLs externos pueden ser implementados para ser interpretados o generar código. Ejemplos muy usados de DSL externos son las expresiones regulares, SQL, Awk y archivos de configuración XML para sistemas como Struts e Hibernate.
  • Un DSL interno es una manera particular de usar un lenguaje de propósito general. Un script en un DLS interno es un código valido en su lenguaje de propósito general, pero solo usa un subconjunto de características del lenguaje, con un estilo en particular, para manejar un aspecto pequeño del sistema general, son también llamados DSL embebidos. Los DSL internos dependen de la sintaxis del lenguaje anfitrión y de las capacidades de meta-programación que éste lenguaje le ofrece. Como ejemplo podemos citar a la comunidad del lenguaje Ruby, donde muchas de sus librerías se crearon al estilo DSL, en particular Ruby on Rails, quien es a menudo visto como una colección de DSLs.
  • Un lenguaje workbench es un IDE (Entorno de Desarrollo Integrado) especializado para definir y construir DSLs. En particular, un lenguaje workbench es usado no solo para determinar la estructura de un DSL sino también como un entorno de edición para la escritura de los scripts DSL. Los scripts resultantes combinan estrechamente el entorno de edición y el lenguaje.

Otra clasificación es que los DSL pueden ser visuales o textuales:

  • Los DSL visuales son aquellos que son representados graficamente (Microsoft DSL Tools). Permiten a expertos del dominio (médicos, agrónomos, etc.) validar los diagramas o modelos realizados sin necesidad de aprender o entender un lenguaje ajeno a su realidad.
  • Los DSL textuales son aquellos que se representan utilizando una sintaxis particular en un archivo de texto (SQL, HTML, LaTeX, etc.). Están más orientados a programadores, donde se les ofrece construcciones concretas del dominio de la aplicación, generalmente disminuyendo la cantidad de líneas de código a escribir.
  1. Formas de implementación de los DSL

Existen diferentes maneras de implementar un Lenguaje Específico de Dominio, entre las que podemos encontrar (Mernik, 2005) (Spinellis, 2001):

...

Descargar como (para miembros actualizados)  txt (27.7 Kb)   pdf (267 Kb)   docx (579.9 Kb)  
Leer 17 páginas más »
Disponible sólo en Clubensayos.com