Por qué es importante Structure and Interpretation of Computer Programs
La innovación de SICP
- Elevó el nivel intelectual: SICP elevó de forma notable el nivel intelectual de la educación introductoria en ciencias de la computación. Mientras que los cursos iniciales de CS solían centrarse en aprender los detalles de un lenguaje de programación específico, SICP puso el foco en aprender el panorama general del proceso de programar.
- Énfasis en la abstracción: Destacó la importancia de la abstracción: encontrar patrones generales a partir de problemas concretos y crear herramientas de software que implementen cada uno de esos patrones.
- Tratar las funciones como datos: Dio especial importancia a la idea de que las funciones pueden usarse como datos. Es un concepto difícil de aprender, pero una vez entendido resulta muy poderoso.
- Diversos paradigmas de programación: Integró en un primer curso de CS tres paradigmas de programación: funcional, orientado a objetos y declarativo.
La elección del lenguaje Scheme
- Notación simple y consistente: Scheme tiene una notación muy simple y consistente para todo. Otros lenguajes usan distintas notaciones para asignación de variables, ejecución condicional, iteración, llamadas a funciones, etc.; Scheme maneja todo con una sola notación.
- Facilita aprender varios paradigmas: Gracias a la simplicidad de Scheme, es posible aprender con facilidad distintos paradigmas de programación. En particular, ayuda a entender cómo se implementa la programación orientada a objetos.
- Preparación para el futuro: SICP desarrolla en los estudiantes la capacidad de aprender nuevos lenguajes de programación. Parte de la filosofía de que "el lenguaje que usarás en el futuro todavía no ha sido inventado".
El enfoque optimista de SICP
- Expectativas altas: SICP mantiene expectativas optimistas sobre lo que puede lograr un estudiante universitario de primer ingreso. Normalmente los estudiantes terminan escribiendo un intérprete de lenguaje de programación, algo que suele verse en cursos más avanzados.
- Aprendizaje profundo: El texto en sí no es fácil de leer, pero cada frase es importante y cada ejercicio enseña una idea nueva y valiosa.
El impacto de SICP
- Influencia duradera: Aunque los cursos basados en SICP fueron pocos, su influencia fue enorme. Muchos libros de texto posteriores intentaron seguir el estándar marcado por SICP.
- Expansión de Scheme: El uso de Scheme como lenguaje de enseñanza se expandió desde secundaria hasta posgrado.
- Una informática centrada en las ideas: Se difundió ampliamente la idea de que la informática debe estar centrada en las ideas.
La vigencia de SICP
- Larga vida útil: SICP ha perdurado por más de 25 años y sigue impreso. Aunque el entorno de la computación ha cambiado mucho, las grandes ideas que hay detrás no han cambiado.
- Evolución de los cursos: Los cursos basados en SICP fueron incorporando con el tiempo paralelismo, control de concurrencia, diseño de interfaces de usuario y el paradigma cliente/servidor.
Cambios en el currículo del MIT
- Currículo centrado en aplicaciones: MIT pasó de un currículo centrado en temas a uno centrado en aplicaciones. La elección del lenguaje de programación fue la parte más pequeña de esa decisión.
- Desafíos del nuevo enfoque: El nuevo enfoque es más difícil de enseñar y requiere que cada curso cuente con la colaboración del profesorado de ingeniería eléctrica y ciencias de la computación.
Reacción de los estudiantes
- Popularidad posterior: Durante el curso, los estudiantes no siempre se dan cuenta de cuánto están aprendiendo, pero más adelante lo evalúan como uno de los cursos más populares. También hay comentarios de egresados que dicen seguir usando en el trabajo lo que aprendieron allí.
Opinión de GN⁺
- La filosofía educativa de SICP: SICP se centra en aprender las grandes ideas más que los detalles de un lenguaje de programación, lo que desarrolla en los estudiantes la capacidad de aprender nuevos lenguajes con facilidad.
- Ventajas de Scheme: La simplicidad y consistencia de la notación de Scheme resultan muy beneficiosas para quienes están empezando. Facilitan comprender distintos paradigmas de programación.
- Los cambios en MIT: El cambio curricular de MIT enfatiza un aprendizaje centrado en aplicaciones, lo que puede ofrecer una experiencia más cercana a la práctica profesional.
- La permanencia educativa: La larga vigencia de SICP demuestra que su filosofía educativa y su contenido siguen siendo válidos. Esto subraya el valor esencial de la educación.
- Conexión con la práctica profesional: La formación basada en SICP desarrolla habilidades que pueden aplicarse directamente en el trabajo, y eso sigue siendo de gran ayuda incluso después de graduarse.
1 comentarios
Opiniones de Hacker News
Las clases del Prof. Abelson pueden verse en YouTube y vale la pena invertirles tiempo: ofrecen una comprensión profunda de la informática y pueden ayudar a reducir el impacto del hype reciente.
La primera mitad del libro fue una lectura ligera e interesante: la parte orientada a objetos resultó difícil, y personalmente la forma de pensar funcional encajó mejor.
Se pueden ver en YouTube clases de principios de los 80: incluyen humor, intentos tempranos de gráficos y moda de los 70, así que también son educativas.
Se preguntan si este libro sigue valiendo la pena incluso para programadores con mucha experiencia.
Pensaban que el objetivo de SICP era intimidar a quienes no disfrutan la informática: en realidad fue un curso básico muy valioso, aunque hizo que algunas personas se cambiaran a otras carreras.
No pudieron pasar de las primeras páginas: si hubiera sido una materia obligatoria, hoy estarían haciendo otra cosa.
Trabajaron como asistentes de docencia del curso CS 61A en Berkeley: sostienen que la notación simple y unificada de Scheme ayuda en la enseñanza, pero en la práctica los estudiantes se confundían. Consideran que esa característica de Scheme, donde todo se ve igual, es un bug.
La mejor lección aprendida de SICP es que, en el momento de escribir la primera función, uno está creando un DSL para resolver un problema del dominio: esa idea elevó su nivel como programadores.
Cada vez que leen sobre SICP sienten frustración con Javascript: si Javascript hubiera sido Scheme, el desarrollo web habría sido mejor.
Piden una comparación entre SICP y PAIP: SICP parece tratar programación funcional y fundamentos de la informática, mientras que PAIP parece estar más enfocado en la práctica general de programación.