DSL Domain Specific Language (Lenguaje Especifico del Dominio)

21
DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Transcript of DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Page 1: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

DSL

Domain Specific Language

(Lenguaje Especifico del Dominio)

Page 2: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Definicion:

Es un lenguaje de programación diseñado para dar solución a unas tareas especificas.

Diferente a lenguajes de propósito general como C o Java.

Diseñados para resolver problemas difíciles y muy comunes.

Page 3: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Otros Nombres:

También son conocidos como:

Little Languages

Application Languages

Very High Level Languages

Page 4: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

DSL

Aunque parezca algo nuevo los DSL surgieron hace mucho (Cobol,Fortran…)

Los DSL se han ido formando con el tiempo ha medida que se han ido haciendo necesarios.

Page 5: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Ventajas:

Aumento de la productividad .Son mas precisos con lo que se trabaja mas rápido.

Solución expresada en el idioma y el nivel de abstracción del dominio, con lo que los expertos pueden entender, validar y modificar los programas.

Los programas son auto-documentados y pueden ser reutilizados.

Pueden ser usados por gente que no son programadores.

Page 6: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

Desventajas:

Funcionamiento pobre ya que los lenguajes de alto nivel pueden ser ineficientes.

Gastos de producción pueden ser elevados. Gastos de educación de los usuarios. Duración del desarrollo muy largo(2 a 5 años) A veces es difícil o imposible eliminar errores Perdida de eficacia vs software codificado a

mano.

Page 7: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

EJEMPLOS:SQL

Lenguaje de acceso a base de datos relaciónales.

Aúna álgebra y calculo relacional para lanzar consultas con fin de recuperar información.

Sencillo de usar y de aprender.

Page 8: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

SQL:Lenguaje

CREATE: crea un objeto en la base de datos (tabla , vista, trigger…)

CREATE TABLE TABLA_NOMBRE (my_field1 INT UNSIGNED,my_field2 VARCHAR (50),my_field3 DATE NOT NULL,PRIMARY KEY (my_field1, my_field2))

Page 9: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

SQL:Lenguaje

ALTER: Modifica la estructura de un objeto

(agregar columna a una tabla):

ALTER TABLE TABLA_NOMBRE (ADD NUEVO_CAMPO INT UNSIGNED)

Page 10: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

SQL:Lenguaje

DROP: Elimina un objeto de la base de datos.

DROP TABLE TABLA_NOMBRE

ALTER TABLE TABLA_NOMBRE(DROP COLUMN CAMPO_NOMBRE1)

Page 11: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

SQL:Programas

Algunos programas basados en SQL son : DB2, Oracle, SQL Server, Sybase ASE,

MySQL, PostgreSQL, Firebird...

Page 12: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

EJEMPLOS:MAPLE

Maple es un lenguaje de programación capaz de realizar cálculos simbólicos, algebraicos y de álgebra computacional.

Page 13: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

MAPLE:Lenguaje

Page 14: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

MAPLE:Lenguaje

Page 15: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

MAPLE:Lenguaje

Page 16: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

EJEMPLO:VHDL

Lenguaje para diseñar circuitos digitales

VHDL es el acrónimo que representa la combinación de VHSIC y HDL, donde

VHSIC es el acrónimo de Very High Speed Integrated Circuit y HDL es a su vez el

acrónimo de Hardware Description Language.

Page 17: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

VHDL:Lenguaje

Puede usarse de tres maneras:

Funcional: como se comporta el circuito

Estructural: por componentes

Mixta: combiando las 2 anteriores

Page 18: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

VHDL:Lenguaje

library ieee; use ieee.std_logic_1164.all;

entity rfc isport(clk_i : IN std_logic; -- control inputsreset_i : IN std_logic;enable_w_i : IN std_logic;enable_r1_i : IN std_logic;enable_r0_i : IN std_logic;din_w_i : IN std_logic;dout_r1_o : OUT std_logic;dout_r0_o : OUT std_logic);end rfc;architecture funcional of rfc issignal d:std_logic;beginprocess (clk_i,reset_i)

beginif reset_i = '1' then d <= '0';

elsif clk_i'event and (clk_i = '1') then if enable_w_i = '1' thend<= din_w_i;end if;

end if;end process;process (enable_r0_i,enable_r1_i,d)begin

if enable_r0_i = '1' then dout_r0_o <= d;else dout_r0_o <= 'Z';end if;if enable_r1_i = '1' then dout_r1_o<= d;else dout_r1_o <= 'Z';end if;

end process;end funcional;

RFC:funcional

Page 19: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

VHDL:Lenguaje

library ieee; use ieee.std_logic_1164.all;ENTITY Register8 ISgeneric (retardo: time := 1 ns);port(clk_i : IN std_logic; -- control inputsreset_i : IN std_logic;enable_w_i : IN std_logic;enable_r1_i : IN std_logic;enable_r0_i : IN std_logic;din_w_i : IN std_logic_vector (7

DOWNTO 0);dout_r1_o : OUT std_logic_vector (7

DOWNTO 0); -- data outputsdout_r0_o : OUT std_logic_vector (7

DOWNTO 0));END Register8 ;architecture estructura of Register8 iscomponent rfc

port(clk_i : IN std_logic; -- control inputsreset_i : IN std_logic;enable_w_i : IN std_logic;enable_r1_i : IN std_logic;enable_r0_i : IN std_logic;din_w_i : IN std_logic;dout_r1_o : OUT std_logic; -- data

outputsdout_r0_o : OUT std_logic);end component;beginrfcs: for i in 0 to 7 generatepuertas: rfc port map

(clk_i,reset_i ,enable_w_i ,enable_r1_i ,enable_r0_i ,din_w_i(i) ,dout_r1_o(i) ,dout_r0_o(i));

end generate;end estructura

REGISTRO 8 BITS

Page 20: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

VHDL:Lenguaje

Un ejemplo de programa que usa VHDL es ModelSim

Page 21: DSL Domain Specific Language (Lenguaje Especifico del Dominio)

OTROS DSL’s

HTML: HyperText Markup Language (lenguaje de marcas hipertextuales).

Open GL (graficos 3D).

Csound(crear, editar, analizar y componer música y sonido )basado en C.