Hay muchos libros sobre programación, y parece que Code Complete está en la parte superior de la lista de "libros de programación de lectura obligada" de la mayoría de las personas, pero ¿qué pasa con The Art of Computer Programming de Donald Knuth? Soy una persona ocupada, entre el trabajo y una familia joven. No tengo mucho tiempo libre, así que tengo que ser exigente con respecto a cómo lo uso.
Me pregunto: ¿alguien ha leído 'TAOCP'? Si es así, ¿vale la pena dedicar tiempo a leer o algún otro libro o más programación paralela, como proyectos favoritos o contribuir al código abierto, sería un mejor uso de mi tiempo en términos de desarrollo profesional?
DESCARGO DE RESPONSABILIDAD: para aquellos de ustedes que lucen camisetas de "Knuth es mi amigo", no me malinterpreten, quiero leerlo, pero me pregunto si debería estar en la parte superior de mi lista de prioridades o si algo más debe venir primero.
Respuestas:
TAOCP es una referencia de valor incalculable para comprender cómo funcionan las estructuras de datos y los algoritmos que utilizamos todos los días y por qué funcionan, pero comprometerse a leerlo de principio a fin sería una inversión extraordinaria de su tiempo.
Como un hombre de familia a otro, pase el tiempo con sus hijos.
fuente
Sustituya "la enciclopedia" en su pregunta por cada referencia a TAOCP, y creo que la respuesta debería ser obvia. Porque en muchos aspectos, eso es TAOCP.
Hay una historia (posiblemente apócrifa) sobre Steve Jobs conociendo a Knuth. Lo primero que Jobs le dijo fue "Es un placer conocerlo, Dr. Knuth. ¡He leído todos sus trabajos!". La respuesta de Knuth fue "Estás lleno de mierda": http://www.folklore.org/StoryView.py?project=Macintosh&story=Close_Encounters_of_the_Steve_Kind.txt
fuente
No, no debe estar en la parte superior de su lista de prioridades. Tengo un juego completo y NO lo he leído todo. Lo he usado (hasta ahora) como una buena referencia en ciertos problemas (fue invaluable en mi comprensión de la aleatoriedad y la prueba de generadores aleatorios, por ejemplo). Cada vez que surge un tema de CS que no tengo REALMENTE bien manejado, tiendo a tomar la parte relevante de TAOCP como un buen paso en mi comprensión.
Si decides leerlo, más poder para ti, y definitivamente recomiendo tomarlo en pequeños trozos. No tengas miedo de saltar y mirar lo que sea más interesante primero.
fuente
TOACP es una lectura esencial, en algún momento. Dependiendo de lo que haga a diario, puede que no sea la más urgente.
Es uno de esos libros (bueno, colecciones de libros) que es bueno leer al principio de tu carrera porque realmente te da buenas ideas que normalmente no llegarías hasta más tarde, pero no es esencial para la supervivencia hasta que te gradúes para esa parte de su carrera donde no solo codifica, elige la caja de herramientas. Este es el punto en el que realmente desea estudiar algoritmos, es de esperar que ya comprenda un poco el diseño del lenguaje y tenga una comprensión muy amplia de las herramientas, los idiomas y los sistemas que existen, y cómo cada uno encaja en el ecosistema de cosas que puede recurrir a un proyecto en particular.
En otras palabras: es un aprendizaje general, así que si eres obsesivo como yo, léelo ahora, si no lo estás, está bien posponerlo hasta que comiences a anhelar subir en la escalera y convertirte en un tipo de gran imagen.
fuente
Habiendo emprendido recientemente esta misma tarea, puedo decir que la forma en que escribe es muy agradable y los problemas están etiquetados (según la dificultad) de manera muy acertada. Obtenga el primer volumen y lea los capítulos 1 y 2 y vea cómo le gusta.
fuente
TAOCP es un gran trabajo, pero leerlo sería una inversión de tiempo terrible para un desarrollador de software en ejercicio. Si lo hace, estará sacrificando un par de años (es decir, cuánto tiempo tomará) de su presupuesto profesional de superación personal para aprender demasiado sobre muy poco.
Recomendaría trabajar en uno o varios libros menos "últimos" sobre algoritmos, mi favorito en esta área es el Manual de diseño de algoritmos de Steven S. Skiena
Entonces, si sientes que necesitas / quieres más, sube al Knuth.
Al mismo tiempo, puede comprar uno o varios volúmenes de TAOCP, revíselo para comprender qué áreas cubre Knuth en él y guárdelo en su biblioteca en caso de que realmente necesite alguna información en su día a día. trabajo. Mi conjetura es que no lo harías y esa es otra razón por la que no te aconsejo que intentes leer. Pero si se encuentra haciendo referencia a él con la frecuencia suficiente, sabrá que vale la pena leerlo de principio a fin.
fuente
El trabajo seminal de Knuth es la referencia más popular que los programadores pretenden leer o terminar de leer. Algún día.
fuente
+10 en el comentario de familia / niños. Trato de leer la mayoría mientras aguanto en los vuelos de ojos rojos a los clientes.
Pero ... sí, vale la pena leerlo. No hay razón para leer de forma lineal, en cambio, hojear y elegir algunos temas de interés.
fuente
Estoy firmemente en el campo de la gente que siente que cada desarrollador debería hacer la inversión para obtener los libros en algún momento (y se está volviendo más fácil ahora que parece que están siendo reimpresos en rústica ) pero en el mismo token, lo haría También es difícil creer que alguien se siente y los lea de principio a fin.
El mejor enfoque para ellos, si no tiene un viaje diario al trabajo donde tiene tiempo libre para sentarse y leer, es leer lo suficiente para saber dónde encontrar cosas en ellos y luego leer un capítulo completo cuando quiera. te encuentras usándolos como libros de referencia para un problema dado. Con Google y Stack Overflow, no es tan común buscar libros de referencia, pero en algunos casos puede encontrar que los libros brindan una idea de que tendría que enviar algo de tiempo extra buscando en Internet.
fuente
No olvides que al principio, Knuth quería escribir algo sobre cómo escribir un compilador.
Puede obtener mucha información en la red con wikipedia, por ejemplo, pero si no es algún tipo de investigador, solo lea el resumen, obtendrá satisfacción.
Todavía puedes obtener el primer tomo para que puedas leerlo cuando estés aburrido ...
fuente
Probablemente sea más importante que solucione esos problemas en el libro que simplemente leerlo. Eso requerirá mucho tiempo.
Le gustan 4 volúmenes y 5 fascículos (cualesquiera que sean), por lo que completar los libros probablemente sea mejor que un curso universitario sobre los fundamentos de la informática y convertirlo en el mejor programador de la historia.
Como tienes una familia joven, como yo, me diste una idea genial. Compraría los libros uno a la vez y se los enseñaría a sus hijos.
fuente
Si tiene curiosidad, hágalo, pero toma bastante tiempo digerirlo, por lo que debe tomarse su tiempo.
¿Tiene un viaje diario donde pueda leer? Eso sería perfecto.
EDITAR: Puede encontrar interesante esta vista previa de una pequeña parte del Volumen 4: http://www-cs-faculty.stanford.edu/~uno/fasc1a.ps.gz
(nota: PostScript comprimido)
fuente
No es algo que la mayoría de la gente quiera sentarse y leer de principio a fin, no. Es una referencia increíblemente invaluable, y ciertamente es bueno recogerla, elegir una sección interesante, leerla y hacer algunos ejercicios. Pero las comparaciones de la enciclopedia hechas anteriormente son bastante adecuadas ... es grande, extensa y detallada. Y algunos de los "ejercicios" son problemas de investigación que pueden llevar años resolver.
Si solo desea un mejor conocimiento de los algoritmos de bajo nivel, podría ser mejor comenzar con los libros de Robert Sedgewick (por ejemplo, "Algoritmos en C", "Algoritmos en Java", etc.).
fuente
Si quieres cambiar el mundo, entonces léelo. Si quieres aprender nuevos hacks, entonces no lo leas.
fuente
Knuth's TAOCP es una obra maestra. Pero, al igual que cualquier obra maestra (como "Illiad", "Guerra y paz" o "En busca del tiempo perdido" de Proust), no es para todos ni para el tiempo extra.
El libro está muy bien escrito y muy bien investigado. Los problemas son geniales y la explicación de los algoritmos está bien hecha.
El gran problema del libro es el hecho de que Knuth muestra un código para un lenguaje ensamblador ficticio para una computadora ficticia. Entiendo por qué lo hizo, pero el hecho es que apesta.
Recomiendo usar este libro como una biblia. Cuando lo necesites, búscalo. Encontrarás la respuesta. ¡Me pasó más de una vez!
fuente