¿Es posible que el software no sea como cualquier otra cosa, que esté destinado a ser descartado: que el objetivo sea verlo siempre como una burbuja de jabón?
Alan J. Perlis
El material de este libro ha sido la base de la asignatura básica de ciencias de la computación del MIT desde 1980. Llevábamos cuatro años enseñando este material cuando la primera edición fue publicada, y han pasado doce años más hasta la aparición de esta segunda edición. Nos complace que nuestro trabajo haya sido ampliamente adoptado e incorporado a otros textos. Hemos visto a nuestros estudiantes tomar las ideas y programas de este libro e incorporarlos como el núcleo de nuevos sistemas y lenguajes informáticos. En la realización literal de un antiguo juego de palabras Talmúdico, nuestros estudiantes se han convertido en nuestros constructores. Tenemos suerte de tener estudiantes tan capaces y constructores tan talentosos.
En la preparación de esta edición, hemos incorporado cientos de aclaraciones sugeridas a partir de nuestra propia experiencia docente y los comentarios de colegas del MIT y de otros lugares. Hemos rediseñado gran parte de los principales sistemas de programación en el libro, incluyendo el sistema de aritmética genérica, los intérpretes, el simulador de máquina de registro y el compilador; y hemos reescrito todos los ejemplos de programas para asegurar que cualquier implementación de Scheme que se ajuste a la norma IEEE Scheme standard (IEEE 1990) pueda ser capaz de ejecutar el código.
Esta edición destaca varios temas nuevos. El más importante de todos es el rol central que juegan las diferentes aproximaciones al tratamiento del tiempo en los modelos computacionales: objetos con estado, programación concurrente, programación funcional, evaluación perezosa (NdT: del inglés "lazy evaluation")
y programación no determinista. Hemos incluido nuevas secciones sobre la concurrencia y el no-determinismo, y hemos tratado de integrar este tema a lo largo del libro.
La primera edición del libro siguió de cerca el programa de estudios de nuestra asignatura de un semestre en el MIT. Con todo el material nuevo de la segunda edición, no será posible cubrirlo todo en un solo semestre, por lo que el instructor deberá elegir. En nuestra propia enseñanza, a veces nos saltamos la sección sobre programación lógica (sección 4.4), hacemos que los estudiantes usen el simulador de registro-máquina, pero no cubrimos su implementación (sección 5.2), y sólo damos una visión general y superficial del compilador (sección 5.5). Aún así, sigue siendo un curso intenso. Algunos instructores pueden desear cubrir solamente los primeros tres o cuatro capítulos, dejando el resto del material para cursos posteriores.
El sitio web mitpress.mit.edu
ofrece soporte a los usuarios de este libro. Esto incluye programas del libro, ejemplos de ejercicios de programación, materiales suplementarios e implementaciones descargables del dialecto Scheme de Lisp.