¿Es el libro ‘Write Great Code’ un buen libro para entender cómo funcionan las computadoras?

Nunca he leído “Escribir un código excelente”, pero parece que le interesa la arquitectura de la computadora y la programación en C. Si tienes algún conocimiento de C, entonces hazlo, realmente no puede doler. De hecho, tengo muchas ganas de tomar la clase de arquitectura de computadoras el próximo otoño, así que si lo disfrutas, entonces adelante. Sin embargo, como dijo Allen Wyma, no hay necesidad.

Tl; dr: La abstracción es algo bueno, y una comprensión profunda de la programación de bajo nivel no es necesaria para ser un gran programador.

Cada vez hay menos necesidad de familiarizarse con las cosas de bajo nivel. Realmente solo necesita saber sobre la arquitectura de la computadora si tiene que optimizar mucho algo, como un juego en 3D o un software de comercio de baja latencia en tiempo real o algo así. Si quieres aprender al respecto, puedes hacerlo, pero definitivamente no hay necesidad de hacerlo. Puede ser útil, pero no es necesario ser un experto, solo familiarizarse con los conceptos de bajo nivel.

Si vas a ser programador, entonces debes adoptar la abstracción. La abstracción es tu amiga. Sin abstracción, todo sería código de máquina (¡o tal vez incluso binario!) Y estaríamos en la edad de piedra computacional. Debido a que las computadoras hoy en día son tan rápidas y los recursos informáticos suelen ser abundantes, es mejor pensar y trabajar a un nivel superior. Las abstracciones se crean para eliminar la necesidad de pensar a bajo nivel, de modo que los programadores puedan preocuparse menos por las pequeñas cosas y centrarse en el panorama general.

Enumeras esta pregunta en RoR, y ese es un excelente ejemplo de una abstracción de muy alto nivel. Escriba algunas líneas y antes de darse cuenta, tiene un servidor web en funcionamiento; algunos más y tiene una aplicación CRUD simple conectada a una base de datos.

Odio decírtelo, pero para ser honesto, la mayoría de lo que la gente hace en la programación no tendrá demasiada relación con la programación de bajo nivel. La mayoría de los programadores usan objetos para relacionar sus ideas con algo tangible. Esto está muy por encima del nivel bajo, o al menos lo que considero “nivel bajo”, como tratar con registros y XOR o cualquiera de esos temas muy complicados. Lo único que PUEDE surgir son los punteros, pero incluso eso se está volviendo cada vez menos relevante e importante en la programación, ya que los lenguajes modernos han incorporado la recolección de basura para manejar ese tipo de cosas por usted. Charla interesante, ya que relacionó esto con RoR: