¿Es el libro "Estructura e interpretación de programas de computadora" una buena lectura para los programadores de Java? [cerrado]

14

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?

ashishjmeshram
fuente
32
Para empezar, trate de no posicionarse como un "programador de Java". O como "programador de cualquier idioma". Es un callejón sin salida. Solo se un programador. Y luego, el SICP será extremadamente útil. Probablemente, la lectura más útil que existe.
SK-logic
3
Es muy difícil, por eso lo lees.
Jonathan Henson
44
Comience en el Capítulo uno, vaya página por página, trabaje con todos los ejemplos, no avance hasta que comprenda cada página y cada ejemplo. La clave de respuesta está en línea.
Jonathan Henson
2
@JonathanHenson y cuando llegues al final, detente
jk.
3
Sí, necesitas aprender Scheme. Sin embargo, una de las razones por las que el libro usa Scheme es que puedes aprender la totalidad del Scheme en aproximadamente un día si nunca antes has programado o en unos 10 minutos si lo has hecho. Después de todo, SICP es un libro para principiantes completos, no asume absolutamente ningún conocimiento de programación.
Jörg W Mittag

Respuestas:

23

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

Doc Brown
fuente
+1 La mejor respuesta posible a lo que casi equivale a una pregunta de recomendación de libro.
Joshua Drake
13

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, 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.

Jörg W Mittag
fuente
¿Puedo sugerir una alternativa al SICP: conceptos, técnicas y modelos de programación de computadoras
Eden
@Eden: CTM es muy bueno, estoy de acuerdo. Sin embargo, no lo considero un libro para enseñar programación, como SICP, HtDP y Concrete Abstraction. ¡Pero definitivamente pertenece a la lista de "libros que te hacen un mejor programador"!
Jörg W Mittag
5

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:

  • Code Complete 2 : se centra en los procesos de ingeniería de software.
  • Código limpio : se centra en la codificación en pequeño. Cómo escribir clases y funciones.
  • Programador pragmático : se centra en trabajar dentro de un equipo que produce software.

Se puede encontrar una descripción más detallada de los libros mencionados anteriormente y otros una vez de las siguientes referencias:

  1. Cómo ser un programador con 10 libros simples
  2. Los mejores libros para programadores principiantes

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.

Yusubov
fuente
77
Estoy de acuerdo con las sugerencias en el contexto (implícito), pero su respuesta sería aún mejor si realmente mencionara lo que no le gusta (o le gusta) sobre SICP.
Joris Timmermans
44
Comparación de manzanas y naranjas: todos los libros que menciona son excelentes libros sobre ingeniería de software. SICP tiene más que ver con la informática, lo que la programación informática es conceptualmente.
Nate
1
Esta respuesta se parece demasiado a una respuesta a una pregunta de la lista de lectura recomendada. Lo que no creo encaja bien con el objetivo de los sitios de Stack Exchange: meta.stackexchange.com/questions/113678/…
Joshua Drake
@Nate, no se trata de manzanas y naranjas para comparar, se trata de CS. Sin embargo, cada uno de los libros comparte algunos temas comunes.
Yusubov
2
@MadKeithV, estoy de acuerdo con tus comentarios. He puesto mis pensamientos sobre SICP en la primera línea.
Yusubov
4

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.

Martin Beckett
fuente
Había otros libros en mi lista de deseos como Code Complete 2, código limpio, programadores de Pragamatic, refactorización, etc. Pero estos estaban más en Java o al menos centrados en OOP a diferencia de SICP.
ashishjmeshram
55
Es por eso que los leería primero
Martin Beckett
77
Debatí rechazar esta respuesta, pero decidí que solo un comentario era mejor: estoy de acuerdo en que SICP no es una buena lectura para la mayoría de las personas, especialmente al principio, pero creo que un gran desarrollador debería ser capaz de manejar este libro y aprenderá mucho de eso. Los grandes desarrolladores no son "la mayoría de las personas". Es un buen libro de filtros.
Joris Timmermans
44
No estoy de acuerdo (hasta cierto punto): un desarrollador completo que tiene SICP en su haber siempre puede aprender sobre el entorno Unix, etc. Prefiero contratar a un desarrollador sin experiencia en la plataforma pero SICP y volver a entrenarlos, que alguien que no no se SICP.
Joris Timmermans
1
@MadKeithV - Sí, y por la misma razón contrato a Phds de matemáticas / física sin experiencia en codificación. Pero si está trabajando a tiempo completo como programador, y especialmente como principiante, hay libros más simples que quizás sean mejores (valor / tiempo) que Knuth o SICP o que lean los documentos de Turing.
Martin Beckett
1

¿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.

Jonathan Henson
fuente