Essays.club - Ensayos gratis, notas de cursos, notas de libros, tareas, monografías y trabajos de investigación
Buscar

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

Enviado por   •  29 de Noviembre de 2017  •  4.007 Palabras (17 Páginas)  •  491 Visitas

Página 1 de 17

...

- Procesamiento de DSLs con herramientas independientes, convocados por operación directa del usuario, comúnmente, desde línea de comandos o desde un Makefile (por ejemplo, el conjunto de herramientas GraphViz)

- Lenguajes específicos de dominio que se implementan usando lenguajes de programación de sistemas macro y se convierten o se expanden dentro de un lenguaje de propósito general anfitrión en tiempo de compilación o tiempo de lectura.

- DSLs embebidos (o internos), implementados como librerías que explotan la sintaxis del lenguaje de propósito general anfitrión o un subconjunto de los mismos, mientras se agregan elementos del lenguaje especifico de dominio (tipos de datos, rutinas, métodos, macros, etc.). La distinción entre un DSL interno y una Interfaz de Programación de Aplicaciones (API) es difusa: la mayoría de las API están diseñadas para exponer sus funciones de una manera directa y transparente, en lugar de crear un lenguaje útil y característico. (Domain Specific Languages) (Fluent Interfaces)

- Lenguajes específicos de dominio que se convocan (en tiempo de ejecución) desde programas escritos en lenguajes de propósito general como C o Perl, para llevar a cabo una función específica, retornando los resultados de la operación al lenguaje de programación “anfitrión” para su posterior procesamiento; por lo general, un intérprete o máquina virtual para el lenguaje especifico de dominio es embebido en la aplicación anfitriona.

- Lenguajes específicos de dominio integrados en las aplicaciones de usuario (por ejemplo, lenguajes de macros en las hojas de cálculo) y que son: usados para ejecutar el código escrito por los usuarios de la aplicación, ó generados dinámicamente por la aplicación, ó ambos.

Muchos DSLs se pueden utilizar en más de una manera.

- Ventajas y Desventajas de los DSL

Existen riesgos y oportunidades al adoptar un DSL en una aplicación. Un DSL bien diseñado logrará el balance apropiado entre ambas.

Como ventajas de los DSL podemos citar las siguientes (Mernik, 2005) (Spinellis, 2001):

- Los DSL permiten expresar soluciones usando los términos y el nivel de abstracción apropiado para el dominio del problema. En consecuencia, los mismos expertos de dominio pueden comprender, validar, modificar y a menudo desarrollar programas de DSL.

- Es código auto-documentado.

- Los DSL mejoran la calidad, productividad, confianza, mantenibilidad, portabilidad y reusabilidad de las aplicaciones.

- Los DSL permiten validaciones a nivel del dominio. Mientras las construcciones del lenguaje estén correctas, cualquier sentencia escrita puede considerarse correcta.

Algunas desventajas de los DSL son:

- El costo de aprender un nuevo lenguaje contrapuesto con su aplicación limitada.

- El costo de diseñar, implementar y mantener un DSL así como también las herramientas para trabajar con él (IDE).

- Encontrar, establecer y mantener el alcance adecuado.

- Dificultad para balancear las ventajas y desventajas entre las construcciones de los DSL y de los lenguajes de propósito general.

- Potencial pérdida de eficiencia y rendimiento en comparación con el software escrito "a mano".

- Proliferación de lenguajes específicos de dominio no estándar similares, es decir, un DSL usado dentro de una compañía de seguros A frente a un DSL utilizado dentro de la compañía de seguros B (On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering).

- A Expertos del dominio no técnicos les puede resultar difícil escribir o modificar programas DSL por si mismos (Freudenthal, 2010).

- Aumento de la dificultad de integración de los DSL con otros componentes del sistema informático (con respecto a la integración con un lenguaje de propósito general).

- Resulta más difícil encontrar ejemplos de códigos en DSL.

- Lenguajes específicos de dominio internos

Los lenguajes específicos de dominio internos, o también llamados embebidos, son lenguajes que están construidos usando las características propias del lenguaje anfitrión y toma como ventaja las capacidades de meta-programación que éste lenguaje le provee. Por lo tanto un DSL interno está limitado por la sintaxis y estructura del lenguaje anfitrión.

En los DSLs internos, en cuestión de límites, existe una sutil diferencia entre un DSL interno y un API (Interfaz de Programación de Aplicaciones). En muchos aspectos, un DSL interno no es más que un típico API. Algunos autores sugieren que un API define el vocabulario de la abstracción, mientras un DSL interno agrega una gramática.

Una manera común de documentar una clase con un API es listar todos los métodos que posee, donde cada uno tiene sentido por si mismo. Los métodos de un DSL interno, a menudo sólo tienen sentido en el contexto de una expresión mayor en el DSL.

Como resultado de esto, un DSL interno debe poder construir sentencias completas, en lugar de una secuencia de comandos desconectados. Esta es la base para llamar a este tipo de APIs, interfaces fluidas. En este sentido, se consideran a los DSLs internos sinónimos con el termino “interfaces fluidas”.

La expresividad limitada para un DSL interno, obviamente no es una propiedad central del lenguaje, ya que el lenguaje de un DSL interno es un lenguaje de propósito general. En este caso, la expresividad limitada proviene de la forma que se utilice el lenguaje. Cuando se forma una expresión DSL, uno se limita a un subconjunto de las características del lenguaje general. Esto es común para evitar condiciones, construcciones de bucles y variables.

- LENGUAJES DINAMICOS

Los lenguajes dinámicos son lenguajes de programación de alto nivel que resuelven ciertos aspectos en tiempo de ejecución en contraposición de los demás lenguajes que lo resuelven en tiempo de compilación.

Uno de los aspectos a los que nos referimos es la posibilidad de extensión de la funcionalidad del programa añadiendo nuevo código mediante la ampliación de objetos y definiciones, o modificando el sistema de tipos, lo que también se denominada tipado dinámico. Esto se traduce

...

Descargar como  txt (27.3 Kb)   pdf (150.5 Kb)   docx (580.4 Kb)  
Leer 16 páginas más »
Disponible sólo en Essays.club