Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Ingeniera en Informtica
Carlos Abaffy
abaffy@gmail.com
Contenido de la Materia
1.
2.
Programacin Funcional
I.
II.
3.
Definicin de Lenguajes
Historia
Caractersticas
Tipos de Lenguajes
Maquinas Virtuales
Tipos de Compiladores
Compiladores
I.
II.
III.
Sintaxis y Semntica
BNF
Funcionamiento de un Compilador
Contenido de la Materia
4.
Programacin Lgica
I.
II.
5.
Bibliografa
1.- Lenguajes de Programacin principios y paradigmas
- Mc Graw Hill 2003
A.Tucker R.Noonan
Herramientas de Software
Conceptos de Lenguajes
Cualquier notacin para la descripcin de algoritmos
y estructuras de datos puede llamarse lenguaje de
programacin, sin embargo, tambin es requerido
que el lenguaje sea implementado en un
computador.
Conceptos de Lenguajes
Definiciones:
Medio de Comunicacin entre el Hombre y la
Mquina.
Lenguaje usado para dar instrucciones a la
mquina . Permite que el programador exprese el
procesamiento de datos de una forma simblica,
sin tener en cuenta los detalle especficos de la
mquina
Conceptos de Lenguajes
Por qu estudiar lenguajes de Programacin:
Terrence Pratt identifica 5 razones:
Para mejorar el conocimiento del lenguaje que se est
usando (Los conceptos se pueden aplicar en cualquier
lenguaje)
Para enriquecer el vocabulario de estructuras de
programacin tiles (El lenguaje sirve como ayuda y
restriccin al momento de pensar)
Para realizar una mejor seleccin del lenguaje de
Programacin (Mayor conocimiento implica una mejor
seleccin)
Para facilitar el aprendizaje de un nuevo lenguaje
(Aprendizaje por asociacin)
Facilita el diseo de un nuevo lenguaje (Reutilizacin
de conceptos en diferentes campos)
Conceptos de Lenguajes
Niveles de Lenguajes
Conceptos de Lenguajes
Historia de los Lenguajes de Programacin:
Los primeros lenguajes de programacin fueron los
lenguajes de cdigo de mquina de las primeras
computadores diseadas en los aos cuarenta
.
Los primeros lenguajes de ato nivel surgen en 1950 y han
evolucionado rpidamente desde su creacin.
La figura siguiente muestra la evolucin e influencia que han
tenido los lenguajes de programacin claves.
Java se considera un lenguaje interesante debido a que
aparece como un lenguaje influenciado por varios paradigmas
de programacin
Conceptos de Lenguajes
Conceptos de Lenguajes
Influencias en la evolucin de los lenguajes:
Hardware y Sistemas Operativos
Hardware ms poderoso y sistemas operativos con
mayores servicios.
Aplicaciones
Mayor uso del computador => mayor demanda de
lenguajes de programacin ms eficientes.
Mtodos de Programacin e Implementacin
Nuevos mtodos => inclusin de nuevas caractersticas
en los lenguajes
Estudios Tericos
Han demostrado las fortalezas y debilidades de las
caractersticas de los lenguajes.
Estandarizacin
Necesidad de lenguajes estndar que puedan
implementados fcilmente en diversas arquitecturas.
Conceptos de Lenguajes
Influencias en la evolucin de los lenguajes:
. Mtodos de Programacin e Implementacin
1960-1970
Programacin Estructurada
(eliminacin de goto)
19701980
1980
Conceptos de Lenguajes
Caractersticas de un Buen Lenguaje:
o Claridad
y Simplicidad
o Unificacin de Conceptos
o Soporte para Abstraccin
o Facilidad de Verificacin
o Ambiente de programacin
o Portabilidad
o Costo de Ejecucin
o Costo de Creacin, Prueba y Uso
Conceptos de Lenguajes
Estructura y Operacin del Computador:
Se identifican 6 componentes principales:
o Data: Archivos, memoria principal, registros, tipos
bsicos y estructurados
o Operaciones Primitivas: Conjunto de operaciones
para manipular data (primitivas aritmeticas, acceso a
memoria, etc)
o Secuencias de Control: Mecanismos para controlar
secuencias de ejecucin (Prxima instruccin a ejecutar)
o Data de Control: Mecanismos para manejo de
operandos que cada instruccin de mquina usa.
oAdministracin
de
Almacenamiento:
Almacenamiento de data y programas
o Sistema Operativo: Mecanismos de administracin y
comunicacin con el ambiente.
Conceptos de Lenguajes
Estructura y Operacin del Computador:
Archivos Externos I/O
Memoria principal
OPERACIN
PRIMITIVA 1
OPERACIN
PRIMITIVA n
Registro Alta
Velocidad
INTERPRETADOR
Registro Data
Registro Direccin
Programa
Elementos
Procesamiento
Activo
Conceptos de Lenguajes
Computador Virtual:
o Computador Corre Cdigo de Mquina.
o Puedo tener diferente hardware para diferentes lenguajes.
Ejm. Mquinas Lisp => Alto Costo
o Computador es un conjunto integrado de algoritmos y
estructuras de datos que pueden almacenar y ejecutar
programas
o Computador Real: Hardware
o Computador Virtual: Simulacin Software
Conceptos de Lenguajes
Computador Virtual:
Computador
Virtual C
Compilador
C
Sistema
Operativo
Compilador
Fortran
Interpretador
Lisp
Lenguaje
Mquina
HW
Interprete
Comandos
Sistema
Operativo
Compilador
Pascal
Computador
Virtual Pascal
Compilador
Ada
Asembler
...
Conceptos de Lenguajes
Compilacin:
Los lenguajes pueden ser implementados por 3 mtodos:
Compilador puro: Los programas son transformados en
cdigo de mquina que puede ser ejecutado
directamente en el computador. Ejm: C, C++,Pascal, etc.
Interpretador puro: El interpretador acta como un
software de simulacin que busca y ejecuta
instrucciones de alto nivel en vez de instrucciones de
mquina. Ejm: Lisp. Desventaja: Ms Lento(10-100
veces).
Sistema Hbrido: El cdigo fuente es transformado en
un cdigo intermedio que facilita la interpretacin. Ejm;
Java
Conceptos de Lenguajes
Cdigo
Fuente
Compilador Puro:
Analizador
Lexicogrfico
Tokens
Analizador
Sintctico
Generador
Cdigo
Intermedio
Tabla
Smbolos
Arbol
Parsing
Cdigo
Intermedio
Generador
Cdigo
Lenguaje
Mquina
Enlazador
(Sistema Operativo)
Computador
Resultados
Optimizacin
Data
Entrada
(opcional)
Conceptos de Lenguajes
Interpretador Puro:
Cdigo
Fuente
Data
Entrada
Interpretador
Resultados
Conceptos de Lenguajes
Sistema Hbrido:
Cdigo
Fuente
Analizador
Lexicogrfico
Tokens
Analizador
Sintctico
Arbol
Parsing
Generador
Cdigo
Intermedio
Cdigo
Intermedio
Interpretador
Resultados
Entrada
Conceptos de Lenguajes
Paradigmas de Programacin:
Los principales paradigmas de programacin son:
Lenguajes Imperativos: Consiste en una secuencia de
instrucciones y datos almacenados en memoria y de un
procesador, el cual es capaz de ejecutar de manera
secuencial una serie de operaciones llamadas
comandos. Estos lenguajes ofrecen al programador
conceptos que se traducen de forma natural al modelo
de la mquina.
Ejm. Fortran, Pascal, C, Ada
Problema: Es ms cercano a la mquina que al
razonamiento humano.
Ventaja: Eficiencia en la ejecucin.
Conceptos de Lenguajes
Paradigmas de Programacin: (continuacin)
Lenguajes Funcionales: Basado en el uso de funciones
que convierten datos en resultados. Las funciones
pueden manipular datos simblicos y no slo numricos.
Ejm: Lisp.
Programar en lenguaje funcional significa construir a
partir de funciones ya existentes => es importante
conocer las funciones existentes ya definidas.
Problema: No son eficientes debido a que son ms
cercanos al razonamiento humano que al computador.
Ventaja: Son ms cercanos al razonamiento humano.
Conceptos de Lenguajes
Paradigmas de Programacin: (continuacin)
Lenguajes lgicos: Se fundamentan en la lgica de 1
orden. Se definen axiomas y reglas para deducir cosas.
Estos lenguajes son conocidos como declarativos, Ejm:
Prolog.
El trabajo del programador se restringe a la buena
descripcin del problema en forma de hechos y reglas. A
partir de estos hechos se pueden encontrar muchas
soluciones dependiendo como se formulen las
preguntas.
NO ES NECESARIO DEFINIR EL ALGORITMO DE
SOLUCIN
Pero se debe expresar muy bien el conocimiento del
problema
Problema: No son eficientes debido a que son ms
cercanos al razonamiento humano que al computador.
Ventaja: Son ms cercanos al razonamiento humano.
Conceptos de Lenguajes
Paradigmas de Programacin: (continuacin)
Lenguajes Orientados a Objetos: Introducen una
nueva abstraccin de datos a los lenguajes
procedimentales (Objetos, Herencia, polimorfismo).
Los objetos facilitan la construccin de programas, ya
que manejan abstracciones del mundo real, aumentan la
modularizacin y la reutilizacin. Ejm: C++, Java.
Problema: Excesivo manejo de memoria dinmica y una
carga fuerte de cdigo causada por la invocacin de
mtodos.
Ventaja: Facilitan el desarrollo de programas.