Download Lectura 3
Document related concepts
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