Hay dos libros que recomendaría:
- Organización informática estructurada por Andrew Tanenbaum
- Código: El lenguaje oculto del hardware y software de la computadora por Charles Petzold
Escribí una reseña de Amazon para la primera, así que solo lo citaré aquí.
Un poco de experiencia sobre mí mismo: vengo de una formación en física con una experiencia significativa en programación de alto nivel, pero no una cantidad terrible de cosas de bajo nivel. Parece que este libro fue hecho para personas como yo, que tienen cierta apariencia de cómo funcionan las computadoras en general (tienen bits, los compiladores interpretan el código en algo que las máquinas saben, puertas lógicas, cosas básicas de matemáticas discretas).
- ¿Cómo da la calculadora un resultado en una fracción de segundo?
- ¿Debo confiar en los servicios de respaldo en línea?
- Mucha gente sugiere escribir un blog para mejorar su visibilidad y estado como experto en un tema específico. Sin embargo, no soporto la idea de escribir, especialmente sobre temas técnicos. ¿Hay otras formas de hacerse notar?
- Dada solo una lista de todas las notas tocadas en una pieza, junto con sus duraciones y tiempos de inicio, ¿se puede determinar algorítmicamente la clave?
- ¿Qué computadoras portátiles son más adecuadas para los estudiantes de CS?
Este libro aborda casi todos los niveles de lo que es una computadora. Después de leer esto, si la humanidad volviera a la era oscura, estarás lo suficientemente iluminado como para diseñar tu propia computadora rudimentaria desde cero. Primero le brinda una pequeña historia de la computación, luego le brinda una pequeña descripción de la estructura general de las computadoras. Luego comienza desde el nivel lógico discreto, va a la microarquitectura, el sistema operativo, el nivel de ensamblaje e incluso habla de computación paralela.
Mi única queja (y realmente, no es muy justo) es que no se detalla en algunas cosas. Por supuesto, digo que es injusto porque realmente lo es: este libro tiene alrededor de 750 páginas y cubre MUCHO material. No sería posible entrar en todo. Me hubiera gustado un enfoque más teórico, pero Tanenbaum parece preferir ejemplos de arquitecturas existentes, y supongo que eso funciona para algunas personas. En algunos casos, lo aprecié porque ayudó a poner los conceptos en términos concretos. El código fuente del programa IJVM fue brillante, y leer esas partes lo ayudó a ‘hacer clic’ conmigo (es más fácil para mí leer el código fuente para comprenderlo, especialmente al estudiar algoritmos y demás). Le gusta hacer muchas de estas cosas.
Dicho todo esto, creo que es una buena introducción a la arquitectura, e incluso a algunos sistemas operativos, compiladores y computación paralela realmente básicos, pero si realmente necesita saber alguna de estas cosas, creo que un libro más avanzado es un buen idea. Ciertamente, este libro ha preparado mi cerebro para manejar las cosas más difíciles. Ahora abordaré a Hennessy y Patterson.
Ese libro es una especie de libro de texto de introducción. El segundo libro es un libro de tipo ciencia popular, por lo que está escrito como una novela informativa. Se basa en la intuición y un poco de explicación gráfica para ayudar al lector a obtener una comprensión. Comienza con los fundamentos reales de la información y cómo podemos comunicarnos y calcular con ciertos pequeños sistemas y materiales. Es bueno si no tienes una gran experiencia técnica, o simplemente estás aprendiendo por diversión.