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.
Otros Nombres:
También son conocidos como:
Little Languages
Application Languages
Very High Level Languages
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.
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.
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.
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.
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))
SQL:Lenguaje
ALTER: Modifica la estructura de un objeto
(agregar columna a una tabla):
ALTER TABLE TABLA_NOMBRE (ADD NUEVO_CAMPO INT UNSIGNED)
SQL:Lenguaje
DROP: Elimina un objeto de la base de datos.
DROP TABLE TABLA_NOMBRE
ALTER TABLE TABLA_NOMBRE(DROP COLUMN CAMPO_NOMBRE1)
SQL:Programas
Algunos programas basados en SQL son : DB2, Oracle, SQL Server, Sybase ASE,
MySQL, PostgreSQL, Firebird...
EJEMPLOS:MAPLE
Maple es un lenguaje de programación capaz de realizar cálculos simbólicos, algebraicos y de álgebra computacional.
MAPLE:Lenguaje
MAPLE:Lenguaje
MAPLE:Lenguaje
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.
VHDL:Lenguaje
Puede usarse de tres maneras:
Funcional: como se comporta el circuito
Estructural: por componentes
Mixta: combiando las 2 anteriores
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
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
VHDL:Lenguaje
Un ejemplo de programa que usa VHDL es ModelSim
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.