¿Es SICP (Estructura e Interpretación de Programas de Computadora) una buena inversión de tiempo para los desarrolladores de software?

Como un estudiante actual de comp-sci que ha trabajado a través de una gran parte de SICP (y vio las conferencias asociadas de Abelson y Sussmann), diría que depende de lo que quieras obtener.

Yo diría que sí, ¡léelo! Pero es poco probable que SICP proporcione habilidades concretas o métodos directamente aplicables para un trabajo de desarrollador de software estándar: utiliza Scheme (lenguaje de programación), un dialecto de Lisp, diseñado como un lenguaje de enseñanza y no es ampliamente utilizado en la industria del software convencional, y es Apenas decir, una introducción a Python o Ruby on Rails (marco web). ¡Después de todo, el libro fue escrito en 1984! Tampoco es algo que le permita obtener un trabajo tan fácilmente como adquirir experiencia en la nueva tecnología “X” para poner en su currículum.

También es bastante difícil.

Sin embargo, si te tomas el tiempo para entenderlo, te volverá loco y cambiará para siempre tu forma de pensar sobre la resolución de problemas con el código.

Este libro enseña algunos de los fundamentos fundamentales de la informática. Si desea comprender la teoría detrás de CS, Recursion, las ventajas de crear su propio lenguaje específico de dominio, cómo resolver problemas difíciles o de qué se trata todo el alboroto sobre Lisp y la programación funcional, SICP es un libro fantástico.

Joel Spolsky tiene un artículo relevante para este tipo de cosas, que se refiere al cambio de los cursos de CS SICP de estilo MIT a CS de tipo vocacional más centrados en Java, aquí:
http://www.joelonsoftware.com/ar…

En mi opinión, es la mejor inversión que podrías hacer en tu carrera. Proporciona información totalmente nueva sobre el diseño de algoritmos. Ahora, sin importar el lenguaje que use para programar, podrá usar las ideas presentadas en este libro en su trabajo. El dialecto de esquema de LISP, que se ha utilizado en el libro, es tan fácil que tomará la sintaxis en el camino.

Te doy un ejemplo. Estaba buscando un algoritmo de tiempo logarítmico para encontrar números de Fibonacci. Encontré muchas fuentes, pero ninguna de ellas describió cómo se llegó al algoritmo de tiempo logarítmico a partir del conocido algoritmo de tiempo lineal. Una publicación en stackoverflow ( http://stackoverflow.com/questio …) me señaló a SICP. Después de leer SICP encontré la respuesta. Demuestra maravillosamente una técnica general para llegar a un algoritmo logarítmico, cuando se conoce un algoritmo de tiempo lineal.

Leer SICP (Estructura e interpretación de programas de computadora) es una de las mejores cosas que he hecho como programador. El SICP te beneficiará enormemente No de la manera que esperas. pero de manera inesperada

Y sin embargo no soy tonto. Déjame explicarte mi experiencia.

He estado programando alrededor de 12 años y tengo 10 años de experiencia profesional (Indian Standard 🙂 (tómalo divertido, por favor)) en C ++. Llevo 2 años usando Common Lisp como idioma secundario.

Hace un par de años, pasé por SICP y parece que se trata de funciones primitivas, datos y algunos meta sh * t. así que comencé a preguntarme por qué todos están haciendo tanto alboroto, incluidos Peter Norvig y Paul Graham. De todos modos, realmente quería mejorar mis habilidades de programación.

Luego comencé a pensar qué demonios es la habilidad de programación de todos modos. Después de tantos meses de buscar en Google y leer libros complejos sobre programación, inteligencia artificial, ciencias cognitivas, se me ocurrió que la habilidad de programación está relacionada con el pensamiento y la codificación (este es mi propia interpretación la suya puede variar ..).

Para ser precisos
si tomamos
X = cantidad de tiempo para pensar, encuentra la solución
Y = cantidad de tiempo para implementar el código para la solución
luego
Habilidad de programación = f (X, Y)
donde la función f (x, y) puede ser Multiplicación, Suma o Potencia (X + Y o (X * Y) o (X ^ Y) o (X * Y), etc.)
.
Entonces, si mejoramos tanto X como Y y la Función f (x, y), entonces podemos Experimentar el beneficio de mejorar la habilidad.

Más tarde descubrí que SICP es el único libro que hace esto. Te empuja a mejorar X, Y y F (X, Y). Quiero decir que ningún otro libro se concentra en estos tres. Señala la dirección correcta para mejorar estas tres variables. El libro SICP es como un mapa para mejorar estos tres. pero el mapa es diferente al territorio sabiendo que el mapa te hace explorar fácilmente el territorio.

Por lo tanto, SICP mejoró mi vida. Finalmente tuve la idea de la iluminación. Y trabajando duro para lograrlo.

PD: No te preocupes por Scheme, su lenguaje muy pequeño en 2 horas puedes aprenderlo.
PPS: Solo se dará cuenta de su grandeza después de tener algo de experiencia en programación.