Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguaje y Paradigmas de Programación
Lenguaje y Paradigmas de Programación
1
mircoles 9 de febrero de 2011
Referencias
Tema 1 de apuntes
Introduccin captulo 1 SICP (Building Abstractions with Procedures)
Captulo 1.2 PLP (The Programming Language Spectrum)
Captulo 1.3 PLP (Why Study Programming Languages)
Captulo 1.4 PLP (Compilation and Interpretation)
2
mircoles 9 de febrero de 2011
Indice
Historia de los lenguajes de programacin
Elementos de los lenguajes de programacin
Abstraccin
Paradigmas de programacin
Compiladores e intrpretes
Por qu estudiar lenguajes de programacin?
3
mircoles 9 de febrero de 2011
4
mircoles 9 de febrero de 2011
5
mircoles 9 de febrero de 2011
Much of my work has come from being lazy. I didn't like writing programs, and so,
when I was working on the IBM 701, writing programs for computing missile
trajectories, I started work on a programming system to make it easier to write
programs.
6
mircoles 9 de febrero de 2011
7
mircoles 9 de febrero de 2011
9
mircoles 9 de febrero de 2011
10
mircoles 9 de febrero de 2011
11
mircoles 9 de febrero de 2011
13
mircoles 9 de febrero de 2011
14
mircoles 9 de febrero de 2011
Abstraccion
Una misin fundamental de los lenguajes de programacin es proporcionar
herramientas que sirvan para construir abstracciones
Abstracciones: sirven para tratar la complejidad del mundo real
Existen abstracciones propias de la computacin: listas, rboles, grafos,
tablas hash...
16
mircoles 9 de febrero de 2011
Paradigmas de programacin
Un paradigma define un conjunto de reglas, patrones y estilos de
programacin que son usados por un grupo de lenguajes de programacin
Paradigma funcional
Paradigma lgico
Paradigma imperativo o procedural
Paradigma orientado a objetos
17
mircoles 9 de febrero de 2011
Paradigma funcional
La computacin se realiza mediante la evaluacin de expresiones
Definicin de funciones
Funciones como datos primitivos
Valores sin efectos laterales, no existe la asignacin
Programacin declarativa
(define (factorial x)
(if (= x 0)
1
(* x (factorial (- x 1)))))
8)
40320
(factorial 30)
265252859812191058636308480000000
18
mircoles 9 de febrero de 2011
Paradigma lgico
Definicin de reglas
Unificacin como elemento de computacin
Programacin declarativa
hijode(A,B) :- padrede(B,A).
abuelode(A,B) :- padrede(A,C), padrede(C,B).
hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B.
familiarde(A,B) :- padrede(A,B).
familiarde(A,B) :- hijode(A,B).
familiarde(A,B) :- hermanode(A,B).
?- hermanode('juan', 'marcela').
yes
?- hermanode('carlos', 'juan').
no
?- abuelode('pablo', 'maria').
yes
?- abuelode('maria', 'pablo').
no
19
mircoles 9 de febrero de 2011
Paradigma imperativo
Definicin de procedimientos
Definicin de tipos de datos
Chequeo de tipos en tiempo de compilacin
Cambio de estado de variables
Pasos de ejecucin de un proceso
type
tDimension = 1..100;
eMatriz(f,c: tDimension) = array [1..f,1..c] of real;
tRango = record
f,c: tDimension value 1;
end;
tpMatriz = ^eMatriz;
20
21
mircoles 9 de febrero de 2011
22
Compiladores e intrpretes
Existen una gran variedad de estrategias para conseguir que un programa se
ejecute en un ordenador
Todas se basan en los "meta-programas" (compiladores, intrpretes, etc.)
cuyos datos de entrada son el cdigo fuente de otros programas.
23
mircoles 9 de febrero de 2011
Compilacin
Ejemplos: C, C++
Diferentes momentos en la vida de un programa: tiempo de compilacin y
tiempo de ejecucin
Mayor eficiencia
24
mircoles 9 de febrero de 2011
Interpretacin
Ejemplos: BASIC, LISP, Scheme, Python, Ruby
No hay diferencia entre el tiempo de compilacin y el tiempo de ejecucin
Mayor flexibilidad: el cdigo se puede construir y ejecutar "on the
fly" (funciones lambda o clousures)
25
mircoles 9 de febrero de 2011
26
mircoles 9 de febrero de 2011
27
mircoles 9 de febrero de 2011
Preprocesamiento
El preprocesador analiza el cdigo y sustituye macros. Ejemplo: C, C++.
Scala hace algo parecido con Java.
28
mircoles 9 de febrero de 2011