4 pics 1 word las vegas jackpot
best slot machine fire red
3rd grade bingo games
casino theme party cape town
baccarat game online for money
5050 gambling games
best slot machines to play at beau rivage
astrology gambling
vegas online casino gambling
betsson casino gry
18 plus casinos in florida
1960s slot machines for sale
best sports betting casino in vegas
american slot machine manufacturers
best slot machines oklahoma
akwesasne mohawk casino general manager
bally bingo pinball machines for sale
american eagle slot machine bank
baccarat bebo blackjack
best payout casinos in washington state
casino games online book of ra
anime palace
best time to play slot machines in las vegas
betfair live casino android app
aztec gold casino game
best blackjack card counting strategy
address for mountaineer casino in wv
best canadian online bingo sites
atlantic city blackjack tournament schedule
7 casino games
1980s slot machines for sale
169 poker hand rankings
best offshore casino in goa
500 club casino clovis ca
beating bookies roulette machines
are there any real gambling apps
888 com poker download
absolute bonus deposit download poker
bally slot machine models
ancient riches cashdrop casino slots
bet365 american roulette strategies uk
32red sister casino
3d craps online
best payouts online casinos
50 cent roulette tables vegas
best rival slot games
which online casino uses paypal
blackjack cosh sap
bingo 6 online
baccarat online for android
best online blackjack simulator
5 million dollar promo codes for doubledown casino
casino x app
www casino kajot
best slot machines at hollywood casino columbus
4 pics 1 word roulette table
best casino in santa fe new mexico
europa casino recenze
azure continental slot machine
888 poker 88 bonus
ainsworth poker machines
back gammon online casinoonline slots
bingo hall live play
real money casino play
888 poker download client
online casino spiele kostenlos ohne anmeldung
best casino online for us players
actual casino game
admiral casino online games
24 7 casino eunice la
bast s gaming online casino gaming
best casino slots ios
best casinos in atlantic city for blackjack
advanced basic strategy blackjack
betsson casino besplatne igre
australian pokies online wheres the gold
barcelona casino online
best payout casinos in arizona
acrylic poker chip case
casino android apk
betting on colors in online roulette
accept account card credit casino merchant
5x odds craps
play bingo online in usa
argosi casino
11 5 orange clay poker chips
best australian online casino
best domination slots to play
4 bears casino 8ball classic
book of ra real
ashanti ho chunk casino december 7
blackjack 21 pro apk
age california gambling legal
audio guide charlottenberg palace berlin
best ios casino game
nz online casino paypal
best casinos in biloxi mississippi
aliante casino news
a gambling addiction
5000 royal flush poker chips
alphabet bingo card child printable
online roulette quick spin
bet365 american roulette hints uk
18 million poker payout
live online casinos usa
20p roulette odds
bell fruit slot machine
aristocrat slot machine manuals
blackjack dealer salary louisiana
albuquerque bingo supplies
legal age for casinos in macau
32 red casino wikipedia
alhambra casino aruba dress code
besplatne igrice casino slot
abzorba blackjack 21 hack
big fish casino android download
baccarat bird
72 oval poker table top
angel of the winds casino
best new mobile casinos
a1 bingo bonus code
agua caliente spa resort casino
big casino in oklahoma
antique slot machines las vegas nv
online blackjack live
aristocrat slot machines download
aladdin japanese slot machine
live online casino baccarat
casino web design
blackjack combiner wars
5dimes casino and sportsbook mobile
best casino slots google play
1996 igt slot machine
best paying slot machines in casinos
australia casino chips
mobile casino for android
gambling in the us states
best vegas casinos to work for
are bonus rounds on slot machines predetermined
338a casino games
award lovers online casino games
best slots at greektown casino
21 blackjack quotes
blackjack ballroom 500
belterra casino boat indiana
best casino resort in reno
topless poker dealer
baseball poker games
texas holdem poker game download
all casinos in australia
baccarat verres cristal ancien
baccarat game dragon
18 and over online casino
armor slots jeux gratuit casino jouer
4 pics 1 word slot machine bank loan
balmorial palace
bet 65 casino
antique game table with roulette
888 casino slot machine
best slot machine apps for android
bingo halls in woodbridge va
aria resort casino expedia
online casino bonus bez depozita
21 blackjack espanol latino
baccarat probabilities
best online slots casino
belterra casino resort kentucky
are blackjack automatic shufflers rigged
3d slot machines online
www casino zdarma
argosy casino aurora indiana
atlanta georgia casino resort
online roulette real money for mac
bellco slot machine key
apply online casino license
3 sets of numbers roulette
biggest lottery jackpot ever in vermont
age 18 casinos in ohio
best online poker payout sites
australia online casino roulette
best online poker game app
betfair casino bonus rules
bingo virtual para pc
besplatne igrice casino roulette
best online casino ipad
bingo cards everyone wins
baccarat betting software
best slots to play at riverwind casino

Los lenguajes específicos de dominio

diccionarioCon el surgimiento de la metodología de Modelado Específico de Dominio (Domain-specific modelling) para el desarrollo de sistemas, cada vez se utiliza más el término de Lenguaje Específico de Dominio (o DSL).

En este artículo veremos exactamente qué es un Lenguaje Específico de Dominio, cuál es su uso, que ejemplos existen que usamos a diario, y las ventajas y desventajas de su aplicación.

¿Qué es un DSL?

En el desarrollo de software, un lenguajes específico de dominio (domain-specific language - DSL) es un lenguaje de programación dedicado 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.

Lo opuesto a un lenguaje específico de dominio son:

  • los lenguajes de programación de propósito general, como C o Java.
  • los lenguajes de modelado de propósito general, como UML.

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), y más.

Crear un DSL (con el software que lo soporte) puede valer la pena si el lenguaje permite expresar tipos de problemas y soluciones particulares que los lenguajes pre-existentes no pueden modelar tan fácilmente.

La creación de un DSL

Los DSL se crean específicamente para resolver problemas dentro de un dominio en particular, y no están pensandos para resolver problemas fuera de este dominio (aunque pueda ser técnicamente posible). En cambio, los lenguajes de propósito general se crean para resolver probelmas en muchos dominios. 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.

Implementaciones

Los DSL son lenguajes con objetivos muy específicos, tanto en su diseño como en su implementación. Un DSL puede ser tanto un lenguajes de diagramación visual (como el creado por Generic Eclipse Modeling System), o lenguajes textuales. Por ejemplo, la utilidad de línea de comandos grep tiene una sintáxis de expresiones regulares para buscar líneas de texto.

La línea que divide a los DSL y a los lenguajes de scripting es bastante borrosa, pero en general los DSL no tienen funciones de bajo nivel para acceder al sistema de archivos, ni control de interprocesos ni otras características que caracterizan a los lenguajes completos. Muchos DSL no se compilan a código ejecutable, sino a diferentes objetos: por ejemplo, GraphViz exporta a PostCript, GIF, JPEG, etc., Csound compila a archivos de audio, y el lenguaje POV compila hacia archivos gráficos.

El lenguaje SQL es un caso interesante: podría considerarse un DSL porque es específico para un dominio (en este caso, acceder a las bases de datos relacionales), y se suele utilizar dentro de otra aplicación; pero SQL tiene más palabras clave y funciones que muchos lenguajes de scripting, y se suele pensar en SQL como en un lenguaje completo (quizás por la enorme presencia de manipulación de bases de datos en los programas, y por la gran cantidad de experiencia que se necesita para ser experto en este lenguaje).

Para resumir, la siguiente analogía podría ser útil: un Lenguaje Muy Chiquito es como un cuchillo, el cual puede usarse en cientos de formas diferentes, desde cortar comida hasta talar árboles. Un Lenguaje Específico de Dominio es como un taladro eléctrico: es una herramienta poderosa que varios usos, pero dentro de un contexto específico, como ser hacer agujeros (aunque podría usarse también para mezclar pintura o quitar tornillos). Un Lenguaje de Propósito General es como un taller completo, con muchas herramientas para hacer varias tareas. Los DSL deben usarse cuando un programador que está trabajando en su taller se da cuenta que necesita un taladro mejor, y encuentra que ese DSL se ajusta perfectamente a su tarea.

¿Y porqué usar un DSL?

Existen riesgos y oportunidades al adoptar un DSL a nuestras aplicaciones. Un DSL bien diseñado va a lograr el balance apropiado entre ambas.

Los DSL tienen metas de diseño importantes que contrastan con aquellas de los lenguajes de propósito general:

  • los DLS tienen menos alcance.
  • los DSL son muchos más expresivos dentro de su dominio.

Ventajas de los DSL

  • 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 en 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 contrucciones del lenguaje estén correctas, cualquier sentencia escrita puede considerarse correcta.

Desventajas de los DSL

  • El costo de aprender un nuevo lenguaje vs. su aplicación limitada.
  • El costo de diseñar, implementar y mantener un DSL y las herramientas para trabajar con él.
  • Encontrar, establecer y mantener el alcance adecuado.
  • Dificultad para balancer las ventajas y desventajas entre las construcciones de los DSL y de los lenguajes de propósito general.
  • Potencial périda de eficiencia y rendimiento en comparación con el software escrito "a mano".

Leer más

Pueden leer más sobre los Lenguajes específicos de dominio en la Wikipedia.

Compartir

Deja tus comentarios

Post comment as a guest

0

El nuevo Dos Ideas.

Nuevo logo, nuevo buscador, nueva portada, podcast mensual... ¡y muchas novedades más!

Más novedades en Dos Ideas

Los Comentarios.

amazon
i have found a right place to get free amazon gift card code . these code are real and working .
Diego
Estimado amigo, desde el punto de vista que lo pones toda prueba es una farsa, ( y en el sentido que...
I am so happy to read this. This is the kind of manual that needs to be given and not the random mis...
Know aadhar card status by name Aadhar card status by name
This article is very informative and useful.

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw