Você está na página 1de 2

Lenguajes de Especificacin de

Dominio(DSL)
Los lenguajes de programacin intentan resolver problemas , sin embargo
hay una distincin que vale la pena resolver , tenemos los lenguajes de
programacin generalistas(Java,Python,C,C++,Cobol,Pascal,etc,etc) , y
lenguajes mas especializados llamados DSL cuyo foco es resolver problemas
especficos, y este conjunto de problemas especficos es llamado dominio de
la aplicacin o negocio.
No es de extraarse que en determinados lenguajes sea ms fcil
implementar una caractersticas ,y en otros un poco mas difcil , as que
cuando surge el debate que lenguaje de programacin es mejor? , las
opiniones son sesgadas pues solo se ve compara lo mejor de cada lenguaje
y no se ve lo peor,asi las implementaciones de pilas y colas en lisp ,es mas
sencillo que en java o pascal por ejemplo.
Asi que la problemtica de los lenguajes generalistas es que tratan de ser
muy ambiciosos ,tanto que no terminan siendo bueno en casi nada,asi naci
el enfoque DSL , que trata de usar varios lenguajes de propsito especifico
para resolver los diferentes problemas de una aplicacin.
Entre los diferentes recursos de apoyo donde se necesitan DSL tenemos:

Interfaces de Usuario(HTML,CSS,JS)
Seguridad.
Gestion transaccional(XML,JSON,REST)
Persistencia.(XML,JSON)
Queries.(SQL,GraphQL)
Validacion.
Testing.(TDD,BDD)
Analisis Lexico y sintctico de lenguaje.

Vale la pena mencionar que el flujo de como se crea un DSL es el


siguiente ,tenemos buenas practicas o recetas , luego tenemos las libreras
que se crean con estas buenas practicas, los patrones de diseo , los
frameworks y finalmente la evolucin final es en un DSL.
Desde el punto de vista del problema que resuelven,tenemos 2 tipos de
DSL,DSL de negocios y tcnicos,sin embargo a la hora de implementacin
tenemos 2 tipos:
DSL externos:Son un lenguaje en si mismo , independiente de otro
lenguaje , un ejemplo es SQL o ANTR.
DSL internos:Se aprovecha un lenguaje existente para construir el DLS ,un
ejemplo es jMock ,en la que se implementa los patrones method chaining y
builder para construir tu DLS desde un framework que crees ,los DSL
internos tambin son llamados fluent interface o fluent API.
Entre los problemas de porque no se construyen mas DSL tenemos al coste ,
pues un programador de empresa no esta en la facultad de crear su DSL ,se
necesita muchos conocimientos desde anlisis lxico ,compiladores,cdigo
AST,etc.
Tambien esta el tema del IDE , pues no todos darn soporte para nuestro
DSL , desde errores de compilacin,refactorizacin,ni ayuda contextural.
Como vemos a nivel de DSL externos es muy complicado , sin embargo los
DSL han resurgido pues con el tema de DSL interno es mucho mas fcil
construir DSL de este tipo , sin embargo la facilidad se extiende mientras el
lenguaje no sea de tipo fuertemente tipado.

Você também pode gostar