Formatted contents note |
Introducción, pág. 1 / ¿Qué es un lenguaje de programación?, pág. 2 / Abstracciones en los lenguajes de programación, pág. 4 / Paradigmas de computación, pág. 12 / Definición de lenguaje, pág. 18 / Traducción del lenguaje, pág. 20 / Diseño del lenguaje, pág. 26 / Ejercicios, pág. 27 / Nota y referencias, pág. 29 / Historia, pág. 31 / Albores históricos: el primer programador, pág. 32 / Los años 50: los primeros lenguajes de programación, pág. 33 / Los años 60: una explosión de lenguaje de programa, pág. 35 / Los años 70: simplicidad, abstracción, estudio, pág. 38 / Los años 80: nuevas direcciones y la creciente importancia de la orientación a objetos, pág. 39 / Los años 90: consolidación, internet, bibliotecas y la redacción de marcos, pág. 41 / El futuro, pág. 44 / Ejercicios, pág. 45 / Notas y referencias, pág. 47 / Principios de diseño de los lenguajes, pág. 49 / Historia y criterios de diseño, pág. 51 / Eficiencia, pág. 52 / Regularidad, pág. 54 / Principios adicionales sobre diseño de los lenguajes, pág. 57 / C++: un estudios de caso de los diseños de los lenguajes, pág. 61 / Ejercicios, pág. 65 / Notas y referencias, pág. 68 / Sintaxis, pág. 69 / Estructura léxica de los lenguajes de programación, pág. 70 / Gramática libres de contexto y BNF, pág. 74 / Arboles de análisis sintéticos y árboles de sintaxis abstracta, pág. 80 / Ambigüedad, asociatividad y precedencia, pág. 83 / EBNF y diagramas sintácticos, pág. 87 / Técnicas y herramientas de análisis sintáctico, pág. 91 / Léxico comprado con la sintaxis y con la semántica, pag. 102 / Ejercicios, pág. 104 / Notas y referencias, pág. 112 / Semántica básica, pág. 113 / Atributos, ligaduras y funciones semánticas, pág. 114 / Declaraciones, bloques y alcance, pág. 118 / La tabla de símbolos, pág. 127 / Resolución y sobrecarga de nombres, pág. 139 / Asignación, tiempo de vida y el entorno, pág. 145 / Variables y constantes, pág. 153 / Alias, referencias pendientes y basura, pág. 153 / Ejercicios, pág. 159 / Notas y referencias, pág. 171 / Tipos de datos, pág. 173 / Tipos de datos e información de tipos, pág. 176 / Tipos simple, pág. 180 / Constructores de tipos, pág. 183 / Nomenclatura de tipos en lenguaje de ejemplo, pág. 196 / Equivalencia de tipos, pág. 199 / Verificación de tipos, pág. 205 / Conversión de tipos, pág. 211 / Verificación de tipos polimórficos, pág. 214 / Polimorfismo explícito, pág. 222 / Ejercicios, pág. 228 / Notas y referencias, pág. 279 / Control I- Expresiones y enunciados, pág. 237 / Expresiones, pág. 238 / Enunciados y guardias condicionales, pag. 246 / Ciclos y variaciones sobre WHILE, pág. 251 / La controversia GOTO, 255 / Manejo de excepciones, pág. 257 / Ejercicios, pág. 272 / Notas y referencias, pág. 279 / Control II- Procedimientos y ambientes, pág. 313 / Definición y activación de los procedimientos, pág. 283 / Semántica de los procedimientos, pág. 285 / Mecanismos de paso de parámetros, pág. 289 / Ambientes, activación y asignación de los procedimientos, pág. 296 / Administración de la memoria dinámica, pág. 309 / Manejo de excepciones y de ambiente, pág. 313 / Ejercicios, pág. 315 / Notas y referencias, pág. 324 / Tipos de datos abstractos y módulos, pág. 325 /Especificación algebraica de los tipos de datos abstractos, pág. 328 / Mecanismos de tipos de datos abstractos y módulos, pág. 332 / Compilación individual en C, espacios de nombres C++ y paquete Java, pág. 335 / Paquetes de Ada, pág. 343 / Módulos en ML, pág. 348 / Módulos en lenguaje anteriores, pág. 351 / Problemas que se presentan con los mecanismos de tipos de datos abstractos, pág. 356 / Las matemáticas de los tipos de datos abstractos, pág. 356 / Ejercicios, pág. 364 / Notas y referencias, pág. 372 / Programación orientada a objetos, pág. 373 / Reutilización e independencia del software, pág. 374 / Java: objetos, clases y métodos, pág. 377 / Herencia, pág. 382 / Ligadura dinámica, pág. 393 / C++, pág. 396 / Smaltalk, pág. 407 / Cuestiones de diseño en lenguaje orientado a objetos, pág. 412 / Ejercicios, pág. 417 / Ejercicio, pág. 422 / Notas y referencias, pág. 429 / Programación funcional, pág. 431 / Programas como funciones, pág. 433 / Programación funcional en un lenguaje imperativo, pág. 436 / Sheme: un dialecto de LIPS, pág. 440 / ML: programación funcional con tipificación estático, pág. 453 / Evaluación retrasada, pág. 464 / Haskell: Un lenguaje perezoso completamente Curry con sobrecarga, pág. 469 / Las matemáticas en la programación funcional I: funciones recursivas, pág. 476 / Las matemáticas en la programación funcional II: Cálculo lambda, pág. 479 / Ejercicios, pág. 484/ Notas y referencias, pág. 491 / Programación lógica, pág. 493 / Lógica y programas lógicos, pág. 495 / Clausulas Horn, pág. 498 / Resolución y unificación, pág. 501 / El lenguaje Prolog, pág. 505 / Problemas que se presentan con la programación lógica, pág. 516/ Extensión de la programación lógica: programación lógica con restricciones y sistema basados en ecuaciones, pág. 520 / Ejercicios, pág. 523 / Notas y referencias, pág. 529 / Semántica formal, pág. 531 / Pequeño lenguaje de muestra, pág. 533 / Semántica operacional, pág. 536 / Semántica denotacional, pág. 546 / Semántica axiomática, pág. 554 / Pruebas para determinar la correctitud de un programa, pág. 560 / Ejercicios, pág. 563 / Notas y referencias, pág. 567 / Programación en paralelo, pág. 569 / Introducción al procesamiento en paralelo, pág. 569 / Procesamiento en paralelo y lenguajes de programación, pág. 571 / Hilos, pág. 575 / Semáforos, pág. 590 / Monitores, pág. 594 / Paso de mensajes, pág. 599 / Paralelismo en lenguaje no imperativo, pág. 606 / Ejercicios, pág. 610 / Notas y referencias, pág. 616 / Bibliografía, pág. 617 / Índice alfabético, pág.. 625 |