Download Lectura 3

Document related concepts

Haskell wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Simon Peyton Jones wikipedia , lookup

Caml wikipedia , lookup

Wolfram (lenguaje de programación) wikipedia , lookup

Transcript
B. Universidad Autónoma de Puebla
Algoritmos y Programación
Primavera de 2006
Lectura 3: Introducción a los
Lenguajes de Programación
Javier M Hernández
FCFM, BUAP
1
Lenguajes de Programación
• Qué es un lenguaje de programacion?
Lenguaje de Programación
2
Lenguajes de Programación
• Qué es un lenguaje de programación?
– Abstracción de una máquina virtual
int sum(int[] x) {
int sum = 0;
n = 0;
while (n < x.length) {
sum += x[n];
}
return sum;
}
00101010101010
10101011111010
11101010101110
00101010101010
...
3
Lenguajes de Programación
• Qué es un lenguaje de programación?
– Donald Knuth:
» Programar es el arte de decirle a otro ser humano lo que uno
quiere que la computadora haga
int sum(int[] x) {
int sum = 0;
n = 0;
while (n < x.length) {
sum += x[n];
}
return sum;
}
00101010101010
10101011111010
11101010101110
00101010101010
...
4
Lenguajes de Programación de
Bajo Nivel
El procesador de una computadora no es inteligente!
Su vocabulario es limitado a un simple “lenguaje de
máquina” consistente de un pequeño número de
instrucciones simples.
Mueve este
número para
allá!
Suma este
número a ese
número!
Mueve este
número para
aca!
Ve si este
número es
cero!
5
Programación
Para obtener que la computadora realize operaciones
sofisticadas, el programador escribe programas que le
dicen al procesador la secuencia de pasos primitivos que
tomar para obtener un resultado.
0010010101101010
1010101010101010
0001111110011100
1011110000011010
1001001011101010
0010100100001101
0110010101001101
0110010101001010
1001010010101011
0100101010001001
0101010101010101
0101001010101001
13
372.01946
La programación en
lenguaje de máquina
es un dolor binary, asi
se han desarrollado
lenguajes de alto
nivel para hacer la
tarea más eficiente y
más efectiva!
6
El Número de Lenguajes de Programación
• Cuántos lenguajes de programación conocen?
– Esta es una simple lista…
» http://dmoz.org/Computers/Programming/Languages/
• Por qué es tan grande el número de lenguajes de
programación?
– Evolución
– Propósito especial
– Preferencia personal
7
Evolucion: Genealogia
Prolog
Haskell
SWI-Prolog
De Sebesta,
Concepts of
Programming
Languages
8
El Número de Lenguajes de Programación
• Cuántos lenguajes de programación conocen?
– Esta es una simple lista…
» http://dmoz.org/Computers/Programming/Languages/
• Por qué es tan grande el número de lenguajes de
programación?
– Evolución
– Propósito especial
– Preferencia personal
• Un lenguaje de programación es un modo de pensar
– Distinta gente piensa de modos distintos
9
Quicksort en C
qsort( a, lo, hi ) int a[], hi, lo;
{
int h, l, p, t;
if (lo < hi) {
l = lo;
h = hi;
p = a[hi];
do {
while
l
while
h
if (l
((l < h) && (a[l] <= p))
= l+1;
((h > l) && (a[h] >= p))
= h-1;
< h) {
10
Quicksort en C
t = a[l];
a[l] = a[h];
a[h] = t;
}
} while (l < h);
t = a[l];
a[l] = a[hi];
a[hi] = t;
qsort( a, lo, l-1 );
qsort( a, l+1, hi );
}
}
11
Quicksort en Haskell
qsort []
= []
qsort (x:xs) = qsort lt_x ++ [x] ++ qsort ge_x
where
lt_x = [y | y <- xs, y < x]
ge_x = [y | y <- xs, y >= x]
12
Lenguajes de Programación Exitósos
• Son igualmente exitósos todos los lenguajes ?
– No!
• Qué hace exitóso a un lenguaje ?
– Poder expresivo
– Uso fácil para el novato
– Facilidad de implementación
– Excelentes compiladores
– Económico, impulsión e inercia
13
Por qué estudiar a los lenguajes?
• Usar el lenguaje de programación más apropriado
para sus tareas
– E.g. Java es grandioso para escribir aplicaciones
– E.g. C es grandioso para programación de sistemas
• Hace fácil aprender nuevos lenguajes
– Evolución => Similaridades
• Hacer mejor uso de las características del lenguaje
– Características obscuras
– Características truculentas
– Simular características útiles
14
Clasificación de los Lenguajes de
Programación
• Lenguajes Imperativos
– Qué hará la computadora
• Lenguajes de Von Neumann
» E.g. Fortran, Basic, C
• Lenguajes Orientados-a-Objectos
» E.g. C++, Java
15
Clasificación de los Lenguajes de
Programación
• Lenguajes Declarativos
– Cómo lo hará la computadora
• Lenguajes Funcionales
– E.g. Lisp, ML, y Haskell
• Lenguajes de Flujos de Datos
– E.g. Id y Val
• Lenguajes Lógicos o basados en restricciones
– E.g. Prolog
16
Sumario
• Lenguajes de Programación:
– Conjunto de abstraciones => máquina virtual
– Un modo de pensar
• AyP:
– Examinar los principios fundamentales de los lenguajes
contemporáneos de programación
» Diseño
» Implementación
– Programar en dos lenguajes de programación
completamente diferentes
» Experiencia práctica
17