Lo primero que hay que entender es que SICP no es solo un libro. Es un curso universitario presentado en forma de libro. Es difícil y extenso, y no tiene sentido estudiarlo sin práctica. No tendrás que inventar la práctica.
Después de cada capítulo, hay un conjunto de ejercicios que los autores te piden que completes. Algunos de ellos son puramente matemáticos (te piden que demuestres algo) o requieren una buena base matemática. Puedes y debes saltarte algunos de ellos, de lo contrario, puedes perder la motivación rápidamente.
Cuánto leerSICP se puede dividir en dos partes. La primera parte incluye los capítulos 1, 2 y 3. La segunda parte incluye los capítulos 4 y 5. La diferencia es que la segunda parte aborda temas más profundos y solo puede ser superada por alguien realmente apasionado.
Por esta razón, Códica recomienda establecer como objetivo completar los primeros tres capítulos. El resto se puede dejar para más adelante sin problemas.
LenguajePara los ejemplos y prácticas en el libro se utiliza el lenguaje Scheme, creado por los autores del curso. Es uno de los dialectos de la familia Lisp. Como cualquier lenguaje Lisp, Scheme tiene una sintaxis primitiva que se puede aprender en pocas horas. Es muy diferente de los lenguajes más comunes, pero tiene varias ventajas importantes que se mencionan en el libro.
La elección de Scheme como lenguaje principal para el curso se justifica porque permite centrarse en la esencia de las cosas en lugar de en la sintaxis, y permite ver conceptos puros en su forma original.
Scheme, al igual que cualquier Lisp, tiene una expresividad increíblemente alta debido a que todo en el lenguaje es una expresión y no hay instrucciones en absoluto.La segunda razón es la homoiconicidad. Esta es una propiedad de los lenguajes en los que los datos y el código son lo mismo. Es difícil entender esta tesis con palabras, hay que experimentarla en la práctica. También hay una tercera razón: los macros, pero no se utilizan en el libro.
El lenguaje Scheme es, en primer lugar, un estándar de lenguaje y hay diferentes implementaciones de este estándar. En este momento, uno de los descendientes más desarrollados y en constante desarrollo de Scheme es el lenguaje
Racket. Códica recomienda estudiar SICP con Racket. Específicamente para esta guía, hemos preparado un
repositorio que se puede utilizar como base para el código. Te recomendamos que eches un vistazo al repositorio al menos para aprender cómo configurar Racket para que sea compatible con el estándar de Scheme utilizado en los ejemplos de código del libro: pocas implementaciones existentes de Scheme permiten recrear el "entorno" en sí mismo, ¡pero afortunadamente Racket puede hacerlo! No olvides configurar correctamente tu editor: los lenguajes Lisp requieren soporte del editor para trabajar cómodamente.