Esto puede ser subjetivo y probablemente esté cerrado, pero todavía quería saber si es realmente útil leer Estructura e Interpretación de programas de computadora.
Estructura e interpretación de programas de computadora
El libro no usa Java. No es que quisiera aprender Java. Tengo curiosidad por saber si será útil leer para ser un mejor programador y cuáles son las cosas que puedo obtener del libro o ¿hay alguna otra alternativa a este libro más adecuada para los programadores de Java?
Respuestas:
Bueno, no sé si este libro te ayudará, pero cuando lo revisé hace unos 20 años, definitivamente mejoró mis habilidades de programación (independientemente de cualquier lenguaje de programación). Y supongo que especialmente un programador de Java obtendrá algunas nuevas ideas que no obtendrá al apegarse solo a Java.
Joel Spolsky 2005 escribió un buen artículo sobre Java y SICP que puede ser de su interés:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
fuente
Creo que Estructura e interpretación de programas de computadora es un gran libro para leer. Sin embargo, hay un par de problemas con él.
El mayor problema en mi experiencia es que, si bien el libro no requiere absolutamente ningún conocimiento de programación, y está orientado a completar novatos, está orientado a completar novatos que estudian en el MIT . Y así, aunque no asume ningún conocimiento de programación, sí asume bastante conocimiento de dominio , por ejemplo, en los campos de ingeniería eléctrica, física y matemática. Nota: estos no tienen nada que ver con los conceptos que se enseñan, solo son necesarios para comprender los ejercicios y ejemplos .
Personas más grandes que yo lo han explicado mucho mejor, en un artículo titulado The Structure and Interpretation of the Computer Science Curriculum . Afortunadamente, no son solo llorones, sino que escribieron su propio libro: Cómo diseñar programas . Si piensa leer SICP, es posible que desee leer HtDP primero: cubre casi el mismo terreno que SICP, pero solo supone un conocimiento promedio de dominio de nivel de escuela secundaria. (De hecho, está escrito para ser enseñado a niños de secundaria).
Una vez que haya terminado el HtDP, aún puede regresar y leer el SICP, ya que ahora un poco de conocimiento de dominio perdido ya no será tan perjudicial porque ya ha visto el concepto antes.
Nota: hay un borrador para una segunda edición de HtDP , que es posible que desee leer en lugar de la primera edición. El material sobre la programación imperativa se ha eliminado y se tratará en el segundo volumen aún no escrito Cómo diseñar componentes , pero puede tomarlos de la primera edición o del SICP o de ambos.
fuente
Desde mi punto de vista SICP , está más enfocado en áreas de programación funcional, incluida la programación recursiva y una fuerte introducción a CS , que es un poco difícil de entender para los nuevos programadores. Otro punto, está preparado e instruido para el MIT, y también se necesitan algunos fundamentos buenos en el campo de la ingeniería, las matemáticas y la física para encontrar este libro útil.
Recomendaría un buen conjunto de libros donde cada uno se enfoca en diferentes aspectos de la ingeniería de software:
Se puede encontrar una descripción más detallada de los libros mencionados anteriormente y otros una vez de las siguientes referencias:
Por favor, siéntase libre de agregar a la lista, ya que no es la ideal :)
Editar: Al elegir los libros mencionados anteriormente y determinar la prioridad de cómo leerlos, realmente se trata del propósito de lo que está tratando de hacer o aprender.
fuente
Voy a arriesgarme y decir, probablemente no sea una buena lectura para la mayoría de la gente, sea cual sea el idioma.
Al igual que Knuth, es un buen libro para haber leído. Sin embargo, incluso suponiendo que usted sea un experto en MIT ugrad, todavía le tomará la mejor parte de un año leer correctamente, y eso es con la ayuda de profesores y TA.
¿Hay otros libros sobre ingeniería de software que podría leer en ese momento que serían de mayor valor? ¿Hay otros idiomas que puedas aprender en el tiempo?
editar Solo para expandirnos un poco: la
ingeniería de software es ingeniería, se trata de optimización. Su tarea es maximizar su conocimiento para un presupuesto de tiempo + costo dado.
SICP es una introducción de alto nivel a la programación a través de un lenguaje funcional. La razón por la que usa un lenguaje funcional es que es más fácil describir muchos conceptos matemáticos de programación en lenguajes funcionales que en lenguajes de procedimiento y mucho más fácil de leer que la lógica formal.
También hay una cierta cantidad de postura, es decir. "No eres realmente un programador a menos que leas SICP", o Knuth, o puedas programar en Lisp, C o ensamblador x86. Eso normalmente es fácil de refutar; es decir. no puede ser un programador real a menos que conozca el trabajo de Cantor sobre teoría de conjuntos y las ecuaciones de Maxwell y esté familiarizado con la movilidad de agujeros en semiconductores.
fuente
¿Estás planeando ser un "programador de JAVA" por el resto de tu vida? Entonces probablemente haya mejores libros para leer. Si quieres ser un buen programador en general, entonces es una lectura excelente. Aquí es por qué. Hay ciertas herramientas que todo buen programador necesita en su caja de herramientas. Uno es un conocimiento profundo de las estructuras de datos y algoritmos (si no me cree, vaya a una entrevista en Microsoft, Google, Amazon, etc.), los algoritmos que lo acompañan son análisis de complejidad, recursividad y una buena comprensión de los punteros. herir. Cuando se trata de análisis de algoritmos, procesos recursivos y el paradigma funcional en general, no puedo pensar en un libro mejor o más desafiante que SICP.
fuente