¿Cuáles son algunos de los mejores libros de informática / programación de todos los tiempos?

Recientemente algunos buenos libros que he leído en automatización de pruebas:

Algunos antecedentes sobre lo que estudié:

Las herramientas de prueba automatizadas son capaces de ejecutar pruebas , informar resultados y comparar resultados con ejecuciones de prueba anteriores. Las pruebas realizadas con estas herramientas se pueden ejecutar repetidamente, en cualquier momento del día. El método o proceso que se utiliza para implementar la automatización se denomina marco de automatización de prueba .

Las Pruebas de automatización de software es el proceso de verificación de software en el que las funciones básicas y los pasos de prueba , como la ejecución, la inicialización, la ejecución, el análisis y la entrega de resultados se realizan automáticamente mediante herramientas para la prueba automatizada .

Selenium Webdriver: WebDriver es una herramienta para automatizar las pruebas de aplicaciones web, y en particular para verificar que funcionan como se espera. Su objetivo es proporcionar una API amigable que sea fácil de explorar y entender, más fácil de usar que la API Selenium -RC (1.0), que ayudará a facilitar la lectura y el mantenimiento de las pruebas.

Selenium proporciona una herramienta de grabación / reproducción para crear pruebas sin aprender un lenguaje de scripting de prueba ( Selenium IDE). También proporciona un lenguaje específico de dominio de prueba (Selenese) para escribir pruebas en varios lenguajes de programación populares, incluidos Java, C #, Groovy, Perl, PHP, Python y Ruby.

Estos son algunos de los mejores libros de todos los tiempos y dan trabajo a muchas personas en los últimos meses:

Nota para los administradores: todos los enlaces de Amazon son directos (no afiliados).

Nota para los lectores: siéntase libre de sugerir ediciones con otros libros. Por favor, hágalos el libro “definitivo” en la categoría.

  • The Mythical Man-Month: Ensayos sobre ingeniería de software, edición de aniversario (2ª edición): Frederick P. Brooks Jr. – una fuente definitiva en el campo de la ingeniería de software
  • El arte de la programación de computadoras, Donald Knuth (tema de Quora): define muchos aspectos centrales de la informática, aunque es muy difícil de leer.
  • Introducción a los algoritmos, 3ª edición: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, el libro universitario más ampliamente aceptado para “Estructuras de datos y algoritmos” y conocido en Quora, y universalmente, como “CLRS”
  • Patrones de diseño: elementos de software orientado a objetos reutilizables: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: otro texto definitivo y moderno para la ingeniería de software moderna
  • El programador pragmático: de Journeyman a Master, Andrew Hunt, Dave Thomas, la principal definición de Agile
  • En los números computables, con una aplicación al problema Entscheidungs, Alan Turing (en realidad no es un libro): ayudó a proporcionar la * DEFINICIÓN * original de lo que es una computadora y lo que no es, es decir, una máquina de Turing, el final de la historia. * TODO * de la informática se deriva de esta definición. Ver Ciencias de la computación: ¿Qué en detalle son las ciencias de la computación? para más detalles.

He mencionado este libro en un par de mis respuestas, y lo haré de nuevo:

  • Código: El lenguaje oculto del hardware y software de la computadora por Charles Petzold

Este libro es una explicación muy entretenida y entretenida sobre cómo los distintos tipos de datos se codifican en bits y bytes (a partir de analogías no informáticas, como el código Morse), cómo funcionan las operaciones booleanas, cómo podría construir la funcionalidad básica. de una simple CPU sin relés, y cómo la maquinaria que ejecuta las instrucciones del código de su máquina se integra en el nivel de hardware.

El código me recuerda algunos de los libros de computadora de principios de la década de 1980 que explicaban el funcionamiento interno (a nivel de registro y en lenguaje de máquina) de las (entonces muy interesantes y nuevas) computadoras domésticas de 8 bits, pero profundizan más en los fundamentos que la mayoría de ellos alguna vez lo hicieron.

Recomiendo encarecidamente este libro a cualquiera que esté comenzando con estas cosas y que nunca haya experimentado la locura de la computadora de la casa en la década de 1980, que es cuando se aprende sobre los principios básicos de bajo nivel (hasta la codificación para el “metal puro”, La CPU y los registros de E / S, en lugar de contra un sistema operativo, habrían sido más “dados” para cualquier programador.

Estos son los dos libros que me siento mejor para los estudiantes de ciencias de la computación.
Lenguaje de programación C: Brian W.Kernighan y Dennis Ritchie

Coautor del propio Dennis Ritchie, el fabricante del marco de trabajo de dialectos C y Unix, este es un manual completo para la programación del dialecto C estándar ANSI. Esto ofrece a los usuarios algo de ayuda para mantenerse al día con el estándar ANSI finalizado para C, al tiempo que demuestra cómo explotar la rica distribución de administradores, estructuras de información, economía de expresión y flujo de control mejorado de C. Incluye el alcance esencial del dialecto C, además del folleto instructivo oficial del dialecto C, para ayudar inicialmente con la documentación de la estructura lingüística, declaraciones, reglas de grado, cambios de ANSI y el resumen continúa para siempre. Para decirlo claramente, esta es una obra de arte perfecta, ¡un requisito incuestionable que debe leerse a cada programador de C!

Java primero: Kathy Sierra y Bert Bates

Head First Java se une a sólidos visuales, acertijos, rompecabezas y reuniones de búsqueda de alma con artículos populares de Java para dibujar en una gran variedad de formas. Es rápido, divertido y convincente. Además, independientemente de su apariencia animada, Head First Java no es una broma: un prólogo completo para cuestionar la programación situada y Java. Desde lo básico a temas de vanguardia, como cadenas, archivos adjuntos del sistema y programación apropiada con RMI, todo se puede aprender. . Entonces, en caso de que tenga la intuición de aprender programación orientada a objetos de una manera divertida,

A2A. Debido a que la informática tiene tantos MOOC, normalmente no recomiendo libros a menos que estén asociados con un curso. El hecho es que la informática está cambiando constantemente y algunos clásicos pueden tener una cita. Para la alternativa de MOOC, vea Cómo obtener un equivalente de un CS menor utilizando MOOCs y Auto estudio para los cursos de la Fundación MSCS de Stanford.

Dicho esto, aquí hay una lista de libros que he usado en el pasado:

Para la teoría:

Essentials of Discrete Mathematics 3, David J. Hunter – Amazon.com

Matemáticas concretas: una base para la informática (2ª edición): 0785342558029: Computer Science Books @ Amazon.com

Una introducción al análisis de los libros electrónicos de algoritmos: Robert Sedgewick, Philippe Flajolet: Libro

Para sistemas operativos:

Linux: la guía definitiva para principiantes (Linux para principiantes, seguridad de Linux, administración de Linux, manual de Linux) eBook: Max Green: Libros

Manual de administración de sistemas Unix y Linux Libro electrónico: Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley: Libros

La interfaz de programación de Linux: un manual de programación de sistemas Linux y UNIX Libro electrónico: Michael Kerrisk: Libros

Regresaré a la década de 1960 cuando empezaron a aparecer los idiomas de alto nivel. Dan McCracken escribió un libro llamado “Introducción a la programación de Fortran”. Fue sucedido por libros sobre Fortran II, Fortran III y Fortran IV. Estos libros son cómo una gran parte de la población técnica aprendió acerca de la programación en esa era de computación de mainframe. Otros autores finalmente publicaron libros de Fortran, pero ninguno fue tan sencillo, claro y fácil de entender y usar. Aprendí a programar usando el libro Fortran II en 1962 y luego tuve el privilegio de trabajar con Dan en algunos proyectos para ACM. Incluso tuvimos un artículo conjunto en las “Comunicaciones de la ACM” en un momento dado. Era un autor muy respetado y sus libros deberían incluirse entre los “clásicos” en este género.

Todos los libros de Daniel Friedman y Matthies Feleison de MIT Press son geniales. El clásico es el original Little LISPer; sin embargo, Little Schemer, Reasoned / Seasoned Schemer y Little Prover son ejemplos de cómo hacer un poco con mucho y pensar como una computadora.

The Little LISPer: Edición comercial: Daniel P. Friedman, Matthias Felleisen: 9780262560382: Amazon.com: Libros

The Little Schemer – 4ª edición: 8601300171425: Computer Science Books @ Amazon.com

The Little Prover (MIT Press): Daniel P. Friedman, Carl Eastlund, Duane Bibby, Matthias Felleisen, J Strother Moore: 9780262527958: Amazon.com: Libros

+1 para todos los libros en las respuestas anteriores. También agregaría SICP a la lista.
SICP – Estructura e interpretación de programas informáticos