Nota: Parece que mucha gente ha respondido a esto y ha intentado profundizar mucho al incluir libros de muchos subcampos. No creo que esto sea justo. Esta pregunta pide los mejores libros en informática. Muchos subcampos aún no tienen libros increíbles escritos sobre ellos. En esta respuesta, me gustaría dar algunos ejemplos de libros que he leído que, sin duda, dejaron sin aliento a la competencia. Estos son libros que me convencieron de amar temas sobre los que no sabía nada anteriormente. Estos son libros que llevo conmigo cuando viajo.
A continuación se enumeran estos libros aproximadamente en el orden que más los aprecio:
- Representación basada en la física (PBRT) por Pharr y Humphreys
Este libro es deslumbrante. Sus gráficos son todos memorables y cada página hace que desee escribir un trazador de rayos perfecto. Además de eso, utiliza programación alfabetizada para anotar código, haciendo que el libro no sea un libro de códigos, sino un libro de explicación. Este es también uno de los libros más completos sobre el tema. Le lleva de no conocer ningún álgebra lineal a utilizar el cálculo multivariable y la teoría de probabilidad para definir BRDF y examinar la ecuación de representación. Además de eso, se envía con código fuente abierto para jugar.
- Teoría de funciones recursivas y computabilidad efectiva por Hartley Rogers, Jr.
Este libro no es una lectura trivial y, a menudo, no es la mejor introducción al tema, entonces, ¿por qué lo he incluido? Es un poco como sostener el primer telescopio reflector y darse cuenta de que todavía se puede ver todo lo que el Hubble puede ver con él. Este libro es como tratar de leer la versión latina de principia .
- ¿Cuál es el mejor libro de texto de oftalmología?
- Cuando eras niño, ¿qué te gustaba leer?
- ¿Cuál es el mejor libro de texto en C ++?
- ¿Por qué parece que el currículo de “historia” en el mundo cubre muchos más detalles sobre la historia europea o, en menor medida, estadounidense, mientras que la cobertura de la historia asiática y africana es tan escasa e incompleta? ¿Esto apunta al eurocentrismo subyacente?
- Soy CEO de una pequeña startup sin experiencia en contabilidad y finanzas. ¿Cuáles son excelentes libros introductorios / libros de texto sobre los temas?
- Gödel, Escher, Bach por Douglas R. Hofstadter
Una vez más, dado que este no es exactamente un libro de ciencias de la computación, quizás se pregunte por qué está aquí. Se afirma que este es realmente un libro sobre psicología y ninguno de los autores es informático. Sin embargo, con un diálogo divertido y aleatorio, te presenta los conceptos de máquinas computacionales, sistemas de sustitución, terminaciones, gramáticas, recursividad, lógica formal, análisis matemático y más, sin que siquiera sepas que realmente estás aprendiendo informática. Después de todo, ¿qué es la mente sino una computadora compleja? Es una lectura muy divertida y profunda.
- Hackeo: el arte de la explotación por John Erickson
Este libro evita que se convierta en un manual de referencia para el ensamblaje x86 al evitar que los aspirantes a hackers adolescentes se conviertan en niños de guiones. Introduce la programación a nivel de sistemas con casi tanta profundidad como el libro de texto 15213 de CMU, CS: APP2e, Bryant y O’Hallaron, sin aburrir al lector ni perder de vista el objetivo de encontrar y parchear exploits en las computadoras. Después de todo, ¿quién aprende el ensamblaje por primera vez para escribir un compilador, núcleo o controlador? Lo aprendes porque quieres romper algo o arreglar algo.
- Tipos y lenguajes de programación por Benjamin C. Pierce
Este sigue siendo el único libro sobre teoría de tipos escrito para un principiante en el tema que le enseña lo suficiente como para tener una comprensión básica de los respaldos teóricos del sistema de tipos de Java moderno. No es que me guste Java o que esto sea todo lo que enseña. Le brinda los conceptos básicos del cálculo lambda y los sistemas de tipos hasta el punto en que puede comprender el lenguaje de programación ML . Está tan lleno de ejemplos e historia de fondo y notas al margen que puede leerlo como un libro de cuentos, pero está organizado y presentado tan bien que todavía lo uso como referencia en mi investigación diaria.
- Introducción a los algoritmos por Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Este libro es pesado. Literalmente. No escatima en ningún análisis e introduce todos los algoritmos y estructuras de datos que probablemente necesitará en sus primeros 5 años de programación. Sin embargo, es bastante difícil enseñar el tema de los algoritmos en un libro de texto sin convertirlo en una lista de algoritmos. Realmente no sé de un libro completo que haga esto todavía. Yo nominaría The Art of Computer Programming de Knuth, pero Assembly simplemente pone el lenguaje completamente incorrecto para enseñar algoritmos.