1 1. Programacion Declarativa
Total Page:16
File Type:pdf, Size:1020Kb
1. PROGRAMACION DECLARATIVA................................................................. 4 1.1 NUEVOS LENGUAJES. ANTIGUA LÓGICA. ........................................... 4 1.1.1 Lambda Cálculo de Church y Deducción Natural de Grentzen....... 4 1.1.2 El impacto de la lógica..................................................................... 5 1.1.3 Demostradores de teoremas ............................................................. 5 1.1.4 Confianza y Seguridad. .................................................................... 6 1.2 INTRODUCCIÓN A LA PROGRAMACIÓN FUNCIONAL ...................... 7 1.2.1 ¿Qué es la Programación Funcional?............................................... 7 1.2.1.1 Modelo Funcional ................................................................. 7 1.2.1.2 Funciones de orden superior ................................................. 7 1.2.1.3 Sistemas de Inferencia de Tipos y Polimorfismo.................. 8 1.2.1.4 Evaluación Perezosa.............................................................. 8 1.2.2 ¿Qué tienen de bueno los lenguajes funcionales? ............................ 9 1.2.3 Funcional contra imperativo........................................................... 11 1.2.4 Preguntas sobre Programación Funcional...................................... 11 1.2.5 Otro aspecto: La Crisis del Software.............................................. 11 2. HASKELL (Basado en un artículo de Simon Peyton Jones)............................ 13 2.1 INTRODUCCIÓN........................................................................................ 13 2.2 ¿QUE ES HASKELL? .................................................................................. 13 2.3 ¿POR QUE USAR HASKELL? ................................................................... 13 2.4 DESARROLLO FUTURO DEL HASKELL............................................... 14 2.4.1 Introducción................................................................................... 14 2.4.2 Extensiones de Haskell................................................................... 14 3. PROLOG (Artículo de A.Colmerauer y P.Roussel 1992)................................ 17 3.1. INTRODUCCION...................................................................................... 17 3.2. LA HISTORIA............................................................................................ 17 3.2.1. Los Primeros Pasos (1971)............................................................ 17 3.2.2. La Aplicación que creó Prolog (1972) ......................................... 19 3.2.3. El definitivo Prolog (1973) .......................................................... 20 3.2.4. La Distribución de Prolog (1974 y 1975).................................... 21 3.3. UN ANTECESOR DE PROLOG, LOS Q-SYSTEMS .............................. 21 3.3.1. Unificación One-way................................................................... 21 3.3.2. Estrategia de aplicación de reglas ................................................ 22 3.3.3. Implementación............................................................................ 23 1 3.4. EL PRELIMINAR PROLOG ..................................................................... 24 3.4.1. Razones para la elección del método de resolución..................... 24 3.4.2. Características del Prolog preliminar ........................................... 25 3.4.3. Implementación del Prolog preliminar......................................... 27 3.5. EL PROLOG DEFINITIVO (1973) ............................................................ 27 3.5.1. Estrategia de resolución............................................................... 27 3.5.2. Sintaxis y Primitivas..................................................................... 28 3.5.3. Implementación del intérprete...................................................... 29 3.6. CONCLUSION........................................................................................... 30 4. LISP (Artículo de John McCarthy) (PARTE I)................................................. 31 4.1 INTRODUCCION........................................................................................ 31 4.1.1 Algo viejo, algo nuevo (Martin Heller 12/02/2001) ...................... 31 4.2 LA PREHISTORIA DEL LISP: 1956-1958................................................. 32 4.3 LA IMPLEMENTACIÓN DE LISP............................................................ 36 4.4 DEL LISP 1 AL LISP 1.5............................................................................. 39 4.5 MÁS ALLÁ DEL LISP 1.5 ......................................................................... 40 4.6 CONCLUSIONES ....................................................................................... 41 5. LISP ( Articulo de Guy Steele y Richard Gabriel) (PARTE II)....................... 43 5.1. INTRODUCCIÓN....................................................................................... 43 5.2. CRONOLOGIA DE LA IMPLEMENTACIÓN DE PROYECTOS.......... 43 5.2.1. Del Lisp 1.5 al Lisp del PDP-6: 1960-1965................................. 43 5.2.2. MacLisp......................................................................................... 45 5.2.2.1. Inicios de MacLisp......................................................... 45 5.2.2.2. Lo último de MacLisp.................................................... 46 5.2.3. InterLisp ........................................................................................ 48 5.2.4 Principio de los 70.......................................................................... 51 5.2.5 La muerte de los PDP-10 ............................................................... 52 5.2.6. Máquinas LISP.............................................................................. 53 5.2.6.1. Las Máquinas Lisp del MIT: 1974-1978....................... 54 5.2.6.2. Las máquinas Lisp de Xerox: 1973-1980 ...................... 56 5.2.6.3. Comentarios a los inicios de la historia de las máquinas Lisp.............................................................................................. 56 5.2.7 Los LISPs de IBM: LISP360 y LISP 370 ..................................... 57 5.2.8 SCHEME: 1975-1980 ................................................................... 58 5.2.9 Preludio a COMMON LISP: 1980-1984 ...................................... 59 2 5.2.10 Primer COMMON LISP ............................................................. 59 5.2.10.1. Fuera del caos de MacLisp........................................... 60 5.2.10.2. - Retumbos tempranos................................................. 64 5.2.10.3. Crítica al Common Lisp ............................................... 64 5.2.11 Otros Dialectos LISP: 1980-1984 ............................................... 65 5.2.11.1 Dialectos Lisp en el 'stock' hardware ........................... 65 5.2.11.2 ZetaLisp........................................................................ 66 5.2.11.3 Las primeras compañías de máquinas Lisp.................. 67 5.2.11.4 MacLisp en declive ...................................................... 69 5.2.12 Desarrollo de Estándares: 1984-1992 ......................................... 70 5.2.12.1 Compañías de Common Lisp ....................................... 71 5.2.12.2 Grandes compañías con sus propios Lisps................... 73 5.2.12.3 DARPA y las Mailing Lists SAIL................................ 74 5.2.12.4 El comienzo del comité técnico ANSI X3J13............. 74 5.3 EVOLUCIÓN DE ALGUNAS CARACTERÍSTICAS ESPECÍFICAS DEL LENGUAJE........................................................................................................ 78 5.3.1 El tratamiento de NIL (y T)........................................................... 79 5.3.2 Iteración......................................................................................... 81 5.3.3 Macros............................................................................................ 84 5.3.4 Recursos numéricos........................................................................ 92 5.3.5 Algunos fallos notables .................................................................. 93 5.4 LISP COMO UN LENGUAJE DE LABORATORIO ................................ 93 6. BIBLIOGRAFIA .................................................................................................. 98 3 1. PROGRAMACION DECLARATIVA 1.1 NUEVOS LENGUAJES. ANTIGUA LÓGICA. 1.1.1 Lambda Cálculo de Church y Deducción Natural de Grentzen A finales del siglo XIX, los logistas formalizaron una noción ideal de prueba. A lo que les llevó no fue otra cosa que un ávido interés de la verdad. Estas abstracciones matemáticas fueron realizadas a mano. Tardaríamos un siglo en darnos cuenta de que estas pruebas y los programas eran lo mismo. La lógica moderna empezó con Gottlob Frege a finales de 1870. Medio siglo más tarde dos aspectos del trabajo de Frege alcanzaron su punto culminante: La deducción natural de Grentzen, que capturó una noción de prueba y el Lambda Cálculo de Alonzo Church, que capturó la noción de programa. Ambos se publicaron a principios de 1930. Hasta finales de 1960 no se descubrió la correspondencia tan precisa que había entre las pruebas de Grentzen y los programas de Church. Introdujo la deducción natural en 1934. Muchas de las ideas son descendientes directas del trabajo de Frege. Alonzo Church introdujo el Lambda Cálculo en 1932. Fue entendido como un nuevo camino de formulación lógica. Hacia 1936, Church se dio cuenta de que los términos lambda