¿Qué es un buen conjunto de libros para el programador intermedio a avanzado?

No soy un programador avanzado, soy un estudiante de ingeniería industrial con un interés aficionado en la programación y la informática.

Desde esta perspectiva, diría (en mi opinión) que el tipo de libros más interesante para la programación intermedia o avanzada son los que tratan temas o problemas concretos además de enseñar un lenguaje de programación.

El arte de la programación de computadoras es genial, no por el código de ensamblaje MIX que usa, sino porque se adentra en el algoritmo, aplicado en un contexto CS.

Recientemente leí un libro llamado Game Engine Architecture de Jason Gregory que es un libro completo sobre la arquitectura y las técnicas utilizadas en los motores de videojuegos, dirigido a motores de renderizado 3D en tiempo real. Tiene un capítulo corto sobre algunos de los conceptos básicos y otros no tan básicos de C ++. El resto se ocupa de los problemas del motor de videojuegos del mundo real y las técnicas utilizadas para resolverlos a lo largo de la historia del videojuego, con una gran cantidad de código C ++ y seudocódigo incluidos para mayor claridad.

Lo bueno de este tipo de libros es que el autor generalmente tiene una importante experiencia en el tema, por lo que encontrará muchos conceptos intermedios a avanzados disfrazados como consejos de una persona más experimentada. Además, los libros como estos generalmente tienen un capítulo gigantesco sobre las referencias que el autor usó para escribir el libro, que tratan temas avanzados por sí mismos de alguna otra manera.

Por último, como señala Cawly, el desarrollo de software es un oficio donde la experiencia tiene un enorme valor. Los libros que abordan soluciones y soluciones pasadas a problemas actuales a menudo le brindan conocimientos “intermedios a avanzados” y consejos que pueden ser inmensamente valiosos para comprender cierto tipo de programación. Además, si está en un área que le interesa, la lectura será mucho más agradable.

Espero que esto te ayude a encontrar libros útiles

Editar * Algunos errores tipográficos e hipo

Aquí hay un conjunto de libros de CS que he usado. Funcionaron para mí, pero no hay garantía de que funcionen para usted:

Para la teoría del compilador:
Elaborando un compilador con C, Fischer y Leblanc
Compiladores: Principios, Tecnologías y Herramientas, Aho, Sethi, Ullman (el llamado libro del Dragón).

Para la teoría de bases de datos:
Principios de los sistemas de bases de datos, Ullman

Para estructuras de datos y algoritmos:
Intoduction a Algorithms, Cormer, Leiserson, Rivest

Para la teoría de la computación:
Introducción a la teoría de Computatiob, Sipser

Lenguajes de programación, C ++ en este caso:
El lenguaje de programación C ++, Stroustrup

Obviamente, la lista es lo que usé. Otras personas tendrán listas muy diferentes.

Creo que hay al menos dos respuestas:
1. Determine lo que quiere hacer. Por ejemplo, los libros de Knuth son bien conocidos por su profundidad. ¿Qué tecnología te interesa? Sumérgete en esos detalles y conviértete en un experto. Por ejemplo, UI vs. UX, vs. backend. O tal vez estudie animación, diseño de bases de datos, etc. O tal vez quiera participar en el desarrollo de sistemas integrados. ¡Tantas cosas divertidas para estudiar!

2. Estudie negocios y marketing. A medida que crezca técnicamente, también querrá comprender, considerar y discutir cuestiones comerciales más amplias. Por ejemplo, lea “The Marketing Imagination” de Theodore Levitt. O cualquier cosa de Clayton Christensen, como “El dilema del innovador”.

Tengo los volúmenes 1-3 de ese conjunto en mi estante. El nivel de matemática utilizado en el análisis de algoritmos en el libro es un desafío para mí. No es parte de ese conjunto, pero es coautor de Knuth un libro llamado “Matemáticas concretas” que ayuda a explicar las matemáticas bastante bien y tiene algunas de las notas marginales más divertidas y notas al pie de página que esperarías ver en un libro de matemáticas. .

Los algoritmos en The Art of Computer Programming generalmente se proporcionan en lenguaje ensamblador MIX. Si su lenguaje de destino es algo similar a C o Java o Python, traducir el algoritmo a un lenguaje superior es un desafío. MIX ciertamente no tiene soporte inherente para la recursividad, por ejemplo, excepto al administrar la pila con código explícito para esa tarea.

No dijo lo que esperaba ganar al agregar este conjunto de libros a su colección. Por supuesto, no es una lectura ligera. Utilizo el mío como referencia para buscar los detalles de los algoritmos cuando los necesito. Al sentarme aquí y pensarlo esta noche, me pregunto si no estarías mejor con una selección de libros con Sedgewick entre los autores.

Soy un viejo programador que ha escrito mucho lenguaje ensamblador, pero desde entonces lo he reformado y actualmente trabajo principalmente en lenguajes de alto nivel.
Los libros de Knuth tienen un lugar en mi corazón, pero todavía no estoy seguro de si son la próxima compra correcta para su biblioteca personal.

Mirando a Amazon esta noche, veo que Sedgewick incluso tiene un volumen separado para explicar el análisis de algoritmos. Y si ha conectado a su estrella con un lenguaje de programación específico, incluso puede encontrar un libro de Algoritmos de Sedgewick que haga uso de ese lenguaje (C ++ o Java, por ejemplo). No tengo esos en mi estante, pero por lo que he visto, él escribe explicaciones claras

Los 5 mejores libros de programación de Java: lo mejor de todo, debe leer

Los 9 mejores libros de C ++ de 2013 (desde principiantes hasta avanzados)

Aprender a estructurar el código para que pueda ser fácilmente entendido y mantenido es invaluable. ¿Está familiarizado con los principios SOLID o TDD? Los siguientes libros mejorarán su oficio, independientemente de los problemas que dedique su vida a resolver.

  • Refactorización: Mejora del diseño de código existente – Martin Fowler
  • Trabajando eficazmente con código heredado – Michael C. Feathers
  • Desarrollo basado en pruebas: por ejemplo – Kent Beck
  • Patrones de implementación – Kent Beck

Otras respuestas tienen los libros reales cubiertos, por lo que solo mencionaré algunas cosas de pasada, en cambio, con la esperanza de dar una especie de vista de nivel superior. Honestamente, aunque tengo muchos libros, han pasado años desde que abrí un libro de programación, excepto cuando estaba buscando ideas para buscar una conferencia cuando me faltaba material.

Primero, con respecto a los libros de Knuth, me gustan , pero … no lo sé. A pesar del título, en gran medida, es solo un catálogo de algoritmos, y solo algoritmos bastante simples. Además, en pos del objetivo de Knuth de describir algoritmos sin perder tiempo en los detalles del código, todas las implementaciones están en lenguaje ensamblador para un procesador ficticio. Por lo tanto, todo es específico del código, solo el código que siempre debe reescribirse cada vez que lo use.

En ese sentido, The Art of Computer Programming parece más un trofeo (para el propietario y para Knuth) que un recurso educativo, incluso cuando es una buena lectura, para un libro de texto.

En segundo lugar, como otras personas al menos han insinuado, los libros no lo convertirán en un mejor programador, y nadie puede sugerir fácilmente libros que serán útiles para su carrera. Hay una variedad de libros que fueron útiles exactamente cuando los leí o bien desmitificaron algún tema específico que me interesó, pero las probabilidades están en contra de la transferencia de ese valor. Todo es cuestión de mirar el tipo de cosas que quieres aprender y encontrar libros que cubran eso.

Mi conocimiento (intermedio en el mejor de los casos) de los lenguajes de programación en realidad solo proviene del aprendizaje a través de Codecademy y el intento de crear sitios básicos a partir de plantillas compradas en el bosque temático y editarlas. Mucho de esto proviene del ensayo y error, y mi estilo personal de aprendizaje proviene de hacer y cometer errores.

Desafortunadamente, no puedo ofrecer ningún libro para leer, pero le recomiendo encarecidamente que aprenda saltando al fondo.

Whist Knuth es sabio y vale la pena leerlo, no hay una solución mágica para la programación. El desarrollo de software es un oficio, no un arte o una ciencia. No hay soluciones generales, solo experiencia. No hay un Maestro, solo muchos maestros, de los cuales lo más importante es la experiencia.