Está en la página 1de 102

Modelos de lenguajes de programación

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 1 / 28


Modelos de lenguajes de programación

1 Introducción
Principios
Paradigmas
Historia resumida
Planificación de proyecto para diseño de lenguajes
Restricciones en la Planificación de proyecto de lenguajes
Caracteristicas en proyecto de lenguajes
Compiladores y máquinas virtuales
Compiladores
Máquinas virtuales e interpretadores

2 Ejercicios

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 2 / 28


Introducción

Semejante a los lenguajes naturales, los Lenguajes de Programación


(LP) facilitan la expresión y la comunicación de ideas entre las personas.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 3 / 28


Introducción

Semejante a los lenguajes naturales, los Lenguajes de Programación


(LP) facilitan la expresión y la comunicación de ideas entre las personas.

Los LPs difieren de los lenguajes naturales en dos modos importantes:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 3 / 28


Introducción

Semejante a los lenguajes naturales, los Lenguajes de Programación


(LP) facilitan la expresión y la comunicación de ideas entre las personas.

Los LPs difieren de los lenguajes naturales en dos modos importantes:


) Los LPs tambien permiten la comunicación de ideas entre personas y
computadores.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 3 / 28


Introducción

Semejante a los lenguajes naturales, los Lenguajes de Programación


(LP) facilitan la expresión y la comunicación de ideas entre las personas.

Los LPs difieren de los lenguajes naturales en dos modos importantes:


) Los LPs tambien permiten la comunicación de ideas entre personas y
computadores.

) Los LPs poseen un dominio de expresión mas reducido que los lenguajes
naturales, esto significa que ellos facilitan la comunicación de ideas
computacionales.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 3 / 28


Introducción

Semejante a los lenguajes naturales, los Lenguajes de Programación


(LP) facilitan la expresión y la comunicación de ideas entre las personas.

Los LPs difieren de los lenguajes naturales en dos modos importantes:


) Los LPs tambien permiten la comunicación de ideas entre personas y
computadores.

) Los LPs poseen un dominio de expresión mas reducido que los lenguajes
naturales, esto significa que ellos facilitan la comunicación de ideas
computacionales.

Por lo tanto, un LP debe satisfacer requisitos diferentes al del lenguaje


natural. En nuestro curso exploramos los requisitos y las alternativas
para planificar un proyecto de diseño de lenguajes.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 3 / 28


El estudio LPs es importante porque los profesionales de ciencia de la
computación seran los planificadores y usuarios de los LPs del mañana.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 4 / 28


El estudio LPs es importante porque los profesionales de ciencia de la
computación seran los planificadores y usuarios de los LPs del mañana.

Para ser un planificador y usuario de lenguajes bien informado, es


necesario entender los lenguajes de una forma amplia – sus
características, sus puntos fuertes y debiles en una amplia gama de
estilos de programación y sus aplicaciones.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 4 / 28


El estudio LPs es importante porque los profesionales de ciencia de la
computación seran los planificadores y usuarios de los LPs del mañana.

Para ser un planificador y usuario de lenguajes bien informado, es


necesario entender los lenguajes de una forma amplia – sus
características, sus puntos fuertes y debiles en una amplia gama de
estilos de programación y sus aplicaciones.

Conocer un lenguaje y el dominio de su aplicación no garantiza la


amplitud de su conocimiento. Estudiaremos como obtener tal amplitud.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 4 / 28


El estudio LPs es importante porque los profesionales de ciencia de la
computación seran los planificadores y usuarios de los LPs del mañana.

Para ser un planificador y usuario de lenguajes bien informado, es


necesario entender los lenguajes de una forma amplia – sus
características, sus puntos fuertes y debiles en una amplia gama de
estilos de programación y sus aplicaciones.

Conocer un lenguaje y el dominio de su aplicación no garantiza la


amplitud de su conocimiento. Estudiaremos como obtener tal amplitud.

Por lo tanto:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 4 / 28


El estudio LPs es importante porque los profesionales de ciencia de la
computación seran los planificadores y usuarios de los LPs del mañana.

Para ser un planificador y usuario de lenguajes bien informado, es


necesario entender los lenguajes de una forma amplia – sus
características, sus puntos fuertes y debiles en una amplia gama de
estilos de programación y sus aplicaciones.

Conocer un lenguaje y el dominio de su aplicación no garantiza la


amplitud de su conocimiento. Estudiaremos como obtener tal amplitud.

Por lo tanto:
) Un LP es una herramienta utilizada por el profesional de computación para
escribir programas, es decir, conjuntos de instrucciones a ser seguidas por
el computador para realizar determinado processo.”

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 4 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.
) Sintáxis: Describe lo que constituye un programa estructuralmente correcto.
Responde a:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.
) Sintáxis: Describe lo que constituye un programa estructuralmente correcto.
Responde a:
Ç ¿Cuál es la gramática para escribir programas en ellenguaje?;

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.
) Sintáxis: Describe lo que constituye un programa estructuralmente correcto.
Responde a:
Ç ¿Cuál es la gramática para escribir programas en ellenguaje?;
Ç ¿Cuál es el conjunto básico de palabras y símbolos que los programadores
usan para escribir programas estructuralmente correctos?;

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.
) Sintáxis: Describe lo que constituye un programa estructuralmente correcto.
Responde a:
Ç ¿Cuál es la gramática para escribir programas en ellenguaje?;
Ç ¿Cuál es el conjunto básico de palabras y símbolos que los programadores
usan para escribir programas estructuralmente correctos?;
Ç ¿Cómo un compilador analisa la sintaxis de un programa?;

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


Principios

Los planificadores de lenguajes tienen un vocabulario básico sobre la


estructura, o significado y las preocupaciones pragmáticas de esas
herramientas que los ayudan a entender como los lenguajes funciona.

El vocabulario se divide en tres categorias (principios) para planificar el


diseño de LPs.
) Sintáxis: Describe lo que constituye un programa estructuralmente correcto.
Responde a:
Ç ¿Cuál es la gramática para escribir programas en ellenguaje?;
Ç ¿Cuál es el conjunto básico de palabras y símbolos que los programadores
usan para escribir programas estructuralmente correctos?;
Ç ¿Cómo un compilador analisa la sintaxis de un programa?;
Ç ¿Cómo una gramática libre de contexto facilita el desarrollo de un analisador
sintáctico?

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 5 / 28


El vocabulario se divide en tres categorias (cont.)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


El vocabulario se divide en tres categorias (cont.)
) Nombres y tipos: Nombres de entidades también tienen sus propiedades
durante la vida de un programa, tales como alcance, visibilidad y ligación.
En LPs estudiamos su impacto sobre la sintáxis y la semántica de un
programa.

Los tipos de un lenguaje denotan los tipos de valores que los programas
pueden manipular:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


El vocabulario se divide en tres categorias (cont.)
) Nombres y tipos: Nombres de entidades también tienen sus propiedades
durante la vida de un programa, tales como alcance, visibilidad y ligación.
En LPs estudiamos su impacto sobre la sintáxis y la semántica de un
programa.

Los tipos de un lenguaje denotan los tipos de valores que los programas
pueden manipular:
Ç Tipos simples: Enteros, números decimales, caracteres y booleanos.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


El vocabulario se divide en tres categorias (cont.)
) Nombres y tipos: Nombres de entidades también tienen sus propiedades
durante la vida de un programa, tales como alcance, visibilidad y ligación.
En LPs estudiamos su impacto sobre la sintáxis y la semántica de un
programa.

Los tipos de un lenguaje denotan los tipos de valores que los programas
pueden manipular:
Ç Tipos simples: Enteros, números decimales, caracteres y booleanos.
Ç Tipos estructurados: String de caracteres, listas, árboles y tablas hash.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


El vocabulario se divide en tres categorias (cont.)
) Nombres y tipos: Nombres de entidades también tienen sus propiedades
durante la vida de un programa, tales como alcance, visibilidad y ligación.
En LPs estudiamos su impacto sobre la sintáxis y la semántica de un
programa.

Los tipos de un lenguaje denotan los tipos de valores que los programas
pueden manipular:
Ç Tipos simples: Enteros, números decimales, caracteres y booleanos.
Ç Tipos estructurados: String de caracteres, listas, árboles y tablas hash.
Ç Tipos mas complejos: Funciones y clases.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


El vocabulario se divide en tres categorias (cont.)
) Nombres y tipos: Nombres de entidades también tienen sus propiedades
durante la vida de un programa, tales como alcance, visibilidad y ligación.
En LPs estudiamos su impacto sobre la sintáxis y la semántica de un
programa.

Los tipos de un lenguaje denotan los tipos de valores que los programas
pueden manipular:
Ç Tipos simples: Enteros, números decimales, caracteres y booleanos.
Ç Tipos estructurados: String de caracteres, listas, árboles y tablas hash.
Ç Tipos mas complejos: Funciones y clases.

) Semántica: Es el significado del programa, es decir, cuando un programa se


ejecuta, el efecto de cada comando sobre los valores de las variables en el
programa está dado por la semántica del lenguaje.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 6 / 28


Paradigmas

Paradigma: Pensamiento estandar que guia un conjunto de actividades


relacionadas.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 7 / 28


Paradigmas

Paradigma: Pensamiento estandar que guia un conjunto de actividades


relacionadas.

Paradigma de programación: Resolución estandar de los problemas que


se relaciona a un determinado género de programas y lenguajes, es
decir, es un modelo, estandar o estilo de programación soportado por los
lenguajes que agrupan ciertas características comunes.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 7 / 28


Paradigmas de programación: La clasificación de los lenguajes en
paradigmas es una consecuencia de decisiones del proyecto, que
impactan radicalmente la forma en la cual una aplicación real es
modelada del punto de vista computacional.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 8 / 28


Paradigmas de programación: La clasificación de los lenguajes en
paradigmas es una consecuencia de decisiones del proyecto, que
impactan radicalmente la forma en la cual una aplicación real es
modelada del punto de vista computacional.
) Programación imperativa.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 8 / 28


Paradigmas de programación: La clasificación de los lenguajes en
paradigmas es una consecuencia de decisiones del proyecto, que
impactan radicalmente la forma en la cual una aplicación real es
modelada del punto de vista computacional.
) Programación imperativa.

) Programación orientada a objetos (POO).

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 8 / 28


Paradigmas de programación: La clasificación de los lenguajes en
paradigmas es una consecuencia de decisiones del proyecto, que
impactan radicalmente la forma en la cual una aplicación real es
modelada del punto de vista computacional.
) Programación imperativa.

) Programación orientada a objetos (POO).

) Programación funcional.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 8 / 28


Paradigmas de programación: La clasificación de los lenguajes en
paradigmas es una consecuencia de decisiones del proyecto, que
impactan radicalmente la forma en la cual una aplicación real es
modelada del punto de vista computacional.
) Programación imperativa.

) Programación orientada a objetos (POO).

) Programación funcional.

) Programación lógica.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 8 / 28


Programación imperativa.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 9 / 28


Programación imperativa.
) Es el paradigma mas antiguo. Está fundamentado en el modelo
computacional clásico de “von Neumann- Eckert”.

Figura: Modelo computacional clásico de “von Neumann-Eckert”.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 9 / 28


Programación imperativa.
) Es el paradigma mas antiguo. Está fundamentado en el modelo
computacional clásico de “von Neumann- Eckert”.

Figura: Modelo computacional clásico de “von Neumann-Eckert”.

) En este modelo, el programa y sus variables son almacenados juntos, y el


programa contiene diversos comandos para ejecutar cálculos, asignar
valores a las variables, obtener entradas, producir salidas o redireccionar el
control para hacia otro punto.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 9 / 28


Programación imperativa (cont.).

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:
Ç Eficiencia (Modelo de von Neumann).

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:
Ç Eficiencia (Modelo de von Neumann).

Ç Modelamiento "natural"del mundoreal.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:
Ç Eficiencia (Modelo de von Neumann).

Ç Modelamiento "natural"del mundoreal.

Ç Paradigma dominante.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:
Ç Eficiencia (Modelo de von Neumann).

Ç Modelamiento "natural"del mundoreal.

Ç Paradigma dominante.

) Ejemplo:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación imperativa (cont.).
) Este tipo de programación también se le llama programación procedimental.
) Ventajas:
Ç Eficiencia (Modelo de von Neumann).

Ç Modelamiento "natural"del mundoreal.

Ç Paradigma dominante.

) Ejemplo:
Ç C++ .

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 10 / 28


Programación orientada a objetos.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 11 / 28


Programación orientada a objetos.
) La POO ofrece un modelo donde un programa es una colección de objetos
que interactuan entre si, pasando mensajes que transforman su estado.

Figura: Modelo computacional de la POO.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 11 / 28


Programación orientada a objetos.
) La POO ofrece un modelo donde un programa es una colección de objetos
que interactuan entre si, pasando mensajes que transforman su estado.

Figura: Modelo computacional de la POO.

) Componentes de POO: Clasificación de objetos, herencia y el paso de


mensajes.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 11 / 28


Programación orientada a objetos.
) La POO ofrece un modelo donde un programa es una colección de objetos
que interactuan entre si, pasando mensajes que transforman su estado.

Figura: Modelo computacional de la POO.

) Componentes de POO: Clasificación de objetos, herencia y el paso de


mensajes.

) Ejemplo: C++; Java; C# .

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 11 / 28


Programación funcional.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 12 / 28


Programación funcional.
) Modela un problema computacional como una colección de funciones
matemáticas, cada una con un espacio de entrada (dominio) y un resultado
(faja).

Figura: Modelo computacional del paradigma funcional.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 12 / 28


Programación funcional.
) Modela un problema computacional como una colección de funciones
matemáticas, cada una con un espacio de entrada (dominio) y un resultado
(faja).

Figura: Modelo computacional del paradigma funcional.

) Las funciones interactuan y se combinan entre si usando composición


funcional, condiciones y recursión.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 12 / 28


Programación funcional.
) Modela un problema computacional como una colección de funciones
matemáticas, cada una con un espacio de entrada (dominio) y un resultado
(faja).

Figura: Modelo computacional del paradigma funcional.

) Las funciones interactuan y se combinan entre si usando composición


funcional, condiciones y recursión.

) Ejemplo: Lisp; Scheme; Haskell y ML.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 12 / 28


Programación lógica.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 13 / 28


Programación lógica.
) La programación lógica (declarativa) permite a un programa modelar un
problema declarando que resultado el programa debe obtener, en vez de
como el debe ser obtenido.

Figura: Modelo computacional del paradigma lógico.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 13 / 28


Programación lógica.
) La programación lógica (declarativa) permite a un programa modelar un
problema declarando que resultado el programa debe obtener, en vez de
como el debe ser obtenido.

Figura: Modelo computacional del paradigma lógico.

) Estos lenguajes son llamados, basadas en reglas, yá que las declaraciones


del programa se parecen mas con un conjunto de reglas o condiciones
sobre el problema, en lugar de una sucesión de comandos a ser ejecutados.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 13 / 28


Programación lógica.
) La programación lógica (declarativa) permite a un programa modelar un
problema declarando que resultado el programa debe obtener, en vez de
como el debe ser obtenido.

Figura: Modelo computacional del paradigma lógico.

) Estos lenguajes son llamados, basadas en reglas, yá que las declaraciones


del programa se parecen mas con un conjunto de reglas o condiciones
sobre el problema, en lugar de una sucesión de comandos a ser ejecutados.

) Ejemplo: Prolog.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 13 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

) Educación.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

) Educación.

) Ciencia e ingenieria.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

) Educación.

) Ciencia e ingenieria.

) Sistemas de información.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

) Educación.

) Ciencia e ingenieria.

) Sistemas de información.

) Sistemas y redes.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


Historia resumida

Los primeiros LPs, lenguajes de máquina y los lenguajes assembly para


los primeros computadores, comenzaron en la década de 1940.

Desde los años 40, el desarrollo de LPs han sido motivado gracias a la
demanda del poder computacional y las nuevas aplicaciones por parte
de las comunidades:
) Inteligencia artificial.

) Educación.

) Ciencia e ingenieria.

) Sistemas de información.

) Sistemas y redes.

) World Wide Web.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 14 / 28


José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 15 / 28
José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 16 / 28
Figura: Evolución de los paradigmas de programación.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 17 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

Los planificadores son personas que crean un medio de lenguaje que


permita a los programadores resolver problemas complejos.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

Los planificadores son personas que crean un medio de lenguaje que


permita a los programadores resolver problemas complejos.

Para tal efecto los planificadores trabajan dentro de diversas


restricciones y adoptan objetivos específicos.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

Los planificadores son personas que crean un medio de lenguaje que


permita a los programadores resolver problemas complejos.

Para tal efecto los planificadores trabajan dentro de diversas


restricciones y adoptan objetivos específicos.

Discutiremos brevemente:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

Los planificadores son personas que crean un medio de lenguaje que


permita a los programadores resolver problemas complejos.

Para tal efecto los planificadores trabajan dentro de diversas


restricciones y adoptan objetivos específicos.

Discutiremos brevemente:
) Restricciones en la Planificación de proyecto de lenguajes.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Planificación de proyecto para diseño de lenguajes

Proyectar el diseño de LPs es un desafio.

Los planificadores son personas que crean un medio de lenguaje que


permita a los programadores resolver problemas complejos.

Para tal efecto los planificadores trabajan dentro de diversas


restricciones y adoptan objetivos específicos.

Discutiremos brevemente:
) Restricciones en la Planificación de proyecto de lenguajes.
) Resultados y objetivos.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 18 / 28


Restricciones en la Planificación de proyecto de lenguajes

Elementos de configuraciones computacionales que imponen


condiciones a los planificadores de LP:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 19 / 28


Restricciones en la Planificación de proyecto de lenguajes

Elementos de configuraciones computacionales que imponen


condiciones a los planificadores de LP:
) Arquitectura: Los LPs son planificados para usarlos en computadores, es
decir, restricción por los límites de las arquitecturas.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 19 / 28


Restricciones en la Planificación de proyecto de lenguajes

Elementos de configuraciones computacionales que imponen


condiciones a los planificadores de LP:
) Arquitectura: Los LPs son planificados para usarlos en computadores, es
decir, restricción por los límites de las arquitecturas.

) Configuración técnica: Los LPs también estan restringidos a las


configuraciones impuestas por las configuraciones técnicas en las cuales
son usadas: Área de aplicación, sistema operativo, IDE (Integrated
Development Environment), la red y otras.
La visión del escenario complejo para la planificación de lenguajes se
resumen en la sgte. figura.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 19 / 28


Figura: Niveles de abstracción en computación.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 20 / 28


Elementos de configuraciones computacionales (cont.):

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)
Ç ANSI/ISO C (1999)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)
Ç ANSI/ISO C (1999)
Ç ANSI/ISO C++(2003)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)
Ç ANSI/ISO C (1999)
Ç ANSI/ISO C++(2003)
Ç ISO Fortran(2004)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)
Ç ANSI/ISO C (1999)
Ç ANSI/ISO C++(2003)
Ç ISO Fortran(2004)
Ç ANSI/ISO Ada (2005)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Elementos de configuraciones computacionales (cont.):
) Estandares: Se refiere a la definición de un estandar independiente de la
máquina del lenguaje a la cual todos los programadores se deben adherir.
La estandarización del lenguaje la estabiliza para diferentes plataformas y
grupos de programación, viavilizando la portabilidad de los programas.
Ç ISO Prolog(2000)
Ç ANSI/ISO C (1999)
Ç ANSI/ISO C++(2003)
Ç ISO Fortran(2004)
Ç ANSI/ISO Ada (2005)
Ç ANSI/ISO Cobol(2002)

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 21 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

) Eficiencia.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

) Eficiencia.

) Facilidad de aprendizaje.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

) Eficiencia.

) Facilidad de aprendizaje.

) Modificabilidad.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

) Eficiencia.

) Facilidad de aprendizaje.

) Modificabilidad.

) Portabilidad.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Caracteristicas en proyecto de lenguajes

Como el estudio de los LPs tiene como objetivo preparar para evaluar y
comparar los LPs de modo general, es importante tener algunas
caracteristicas en LP:
) Simplicidad y legibilidad.

) Confiabilidad.

) Eficiencia.

) Facilidad de aprendizaje.

) Modificabilidad.

) Portabilidad.

) Reusabilidad.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 22 / 28


Compiladores y máquinas virtuales

Cualquier implementación de un LP requiere que los programas en ese


lenguaje sea analizado y traducido en un formato que puede ser:

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 23 / 28


Compiladores y máquinas virtuales

Cualquier implementación de un LP requiere que los programas en ese


lenguaje sea analizado y traducido en un formato que puede ser:
) Ejecutado por un computador.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 23 / 28


Compiladores y máquinas virtuales

Cualquier implementación de un LP requiere que los programas en ese


lenguaje sea analizado y traducido en un formato que puede ser:
) Ejecutado por un computador.
Ç Ejemplo: Una “máquina real” o

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 23 / 28


Compiladores y máquinas virtuales

Cualquier implementación de un LP requiere que los programas en ese


lenguaje sea analizado y traducido en un formato que puede ser:
) Ejecutado por un computador.
Ç Ejemplo: Una “máquina real” o

) Ejecutado por un interprete.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 23 / 28


Compiladores y máquinas virtuales

Cualquier implementación de un LP requiere que los programas en ese


lenguaje sea analizado y traducido en un formato que puede ser:
) Ejecutado por un computador.
Ç Ejemplo: Una “máquina real” o

) Ejecutado por un interprete.


Ç Ejemplo: Un software que simule una “máquina virtual” y sea ejecutado en una
máquina real.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 23 / 28


Compiladores

Figura: Proceso de compilación y ejecución.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 24 / 28


Máquinas virtuales e interpretadores

Figura: Proceso en máquinas virtuales e interpretadores.

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 25 / 28


Modelos de lenguajes de programación

1 Introducción
Principios
Paradigmas
Historia resumida
Planificación de proyecto para diseño de lenguajes
Restricciones en la Planificación de proyecto de lenguajes
Caracteristicas en proyecto de lenguajes
Compiladores y máquinas virtuales
Compiladores
Máquinas virtuales e interpretadores

2 Ejercicios

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 26 / 28


Ejercicios

(1) Una investigación on-line sobre “lenguajes de programación” producirá


links para fuentes de información confiables de todas los LPs
importantes del pasado y del presente. Para cada uno de los siguientes
lenguajes, use la Internet para aprender algo sobre ellos. Escribir, con
sus propias palabras, un resumen de sus características, así como su
relación histórica con otros lenguajes que la precedieron o seguiran.
(1.1) Eiffel
(1.2) Perl
(1.3) Python

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 27 / 28


(2) El trabajo de estandarización para el lenguaje C comenzó en 1982 con el
grupo de trabajo ANSI, y el primer estandar C se concluyo en 1989. Este
trabajo posteriormente fue aceptado como un estandar ISO en 1990 y
continua siendo hasta hoy. Lea lo suficiente en Internet para determinar
que alteraciones significativas se hicieron en el estandar C desde 1990.

(3) Después de aprender lo suficiente en el site de Java (java.sun.com) y en


otras fuentes, ¿ que podria ud. decir sobre la situación del trabajo de
estandarización de Java por ANSI y por la ISO en este momento?.
(4) Encontrar la versión Python 2.4 na Internet. ¿ Cuáles son las nuevas
caracteristicas que esta versión adiciona a Python 2.3?. ¿Qué
características antiguas de Python fueron eliminadas por la versión mas
nueva, se hubiera alguna?

José A. Rodríguez Melquiades Modelos de lenguajes de programación 5 de febrero de 2018 28 / 28

También podría gustarte