Sei sulla pagina 1di 26

Tcnicas Avanzadas de Programacin

Ingeniera en Informtica
Carlos Abaffy
abaffy@gmail.com

Contenido de la Materia
1.

Conceptos Generales de Lenguajes


I.
II.
III.
IV.
V.
VI.

2.

Programacin Funcional
I.
II.

3.

Definicin de Lenguajes
Historia
Caractersticas
Tipos de Lenguajes
Maquinas Virtuales
Tipos de Compiladores

Fundamentos de Programacin Funcional


Lenguaje Scheme

Compiladores
I.
II.
III.

Sintaxis y Semntica
BNF
Funcionamiento de un Compilador

Contenido de la Materia

4.

Programacin Lgica
I.
II.

5.

Fundamentos de Programacin Lgica


Lenguaje Prolog

Programacin Orientada a Objetos


I.
II.
III.
IV.

Fundamentos del Modelo de Objetos


Lenguaje C++
Lenguaje Java
Otros lenguajes basados en el modelo de
objetos

Bibliografa
1.- Lenguajes de Programacin principios y paradigmas
- Mc Graw Hill 2003
A.Tucker R.Noonan

2.- Concepts of Programming Languages Addison


Wesley 1999
Robert Sebesta

3.- Programming Languages Design and


Implementation Prentice Hall 1984
Terrence W. Pratt
4.- Seven Languages in Seven Weeks 2010
Bruce Tate

5.- Manuales de Los Lenguajes a utilizar disponibles en


Internet

Herramientas de Software

1.- Programacin Funcional - Scheme (Cdigo Abierto)


http://www.drscheme.org
2.- Programacin Lgica - Prolog (Cdigo Abierto)
http://www.swi-prolog.org/
3.- Programacin Orientada a Objetos - C++ /Java/Ruby
(Cdigo Abierto)

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

Enfsis en Datos y No en Procesos


(Soporte Abstraccin)

1980

Software Orientado a Objetos


(Orientacin a Objetos)

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

UNIDAD CENTRAL DE PROCESAMIENTO - CPU

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.

Potrebbero piacerti anche