Tengo sugerencias específicas basadas en mi propia experiencia personal. Lo que una persona necesita (o quiere) leer depende de las habilidades o debilidades de esa persona. Mis sugerencias se basan en los temas generales de 1) elementos internos del kernel / OS, 2) estructuras de datos y algoritmos, 3) desarrollo basado en pruebas y codificación segura C integrada, y 4) hardware y redes
Excepto por algunos títulos, me abstengo de explicar por qué elijo cada libro, porque ¿qué más podría decir? Son geniales, los encontré útiles e informativos. No puedo decir mucho más sin caer en lo repetitivo y la fórmula.
Puede hojear sus índices en Amazon, ver sus temas y calificaciones y decidir por usted mismo. Eso en sí mismo es un ejercicio útil.
- ¿Cuál es la ventaja de buscar en una lista ordenada en lugar de en una lista no ordenada?
- ¿Cuáles son las buenas implementaciones de búfer circular sin bloqueo en Java?
- ¿Cómo están sucediendo los campos de entrenamiento de algoritmos?
- En los lenguajes de programación donde una matriz crece dinámicamente en tamaño, ¿no es una preocupación porque es O (n) complejidad de tiempo?
- Matrices de sufijos: Dadas dos cadenas s1 y s2. ¿Cuál es el mejor algoritmo para encontrar el número de subcadenas comunes entre s1 y s2 de longitud 1, 2,… hasta min (| s1 |, | s2 |)?
Algunas personas pueden estar en desacuerdo sobre la utilidad de cada una de mis selecciones. Lo cual está bien, simplemente no voy a debatir sobre eso. Lo que funciona para mí no necesariamente funcionará para los demás. Es un juego de perdedores fingir lo contrario.
Entonces, para cada una de mis elecciones, advertencia emptor . YMMV. Buena suerte y disfruta.
Kernel / OS Internals
Arquitectura profesional del kernel de Linux por Wolfgang Mauerer: Wolfgang Mauerer: 9780470343432: Amazon.com: Libros
La interfaz de programación de Linux: Un manual de programación del sistema Linux y UNIX: Un manual de programación del sistema Linux y UNIX: Kerrisk: 9781593272203: Amazon.com: Libros
Aunque la mayoría de los trabajos integrados y de desarrollo de sistemas tienen lugar en el trabajo de Unix / Linux, tener algún conocimiento sobre Windows es útil. Te hace completo cuando se trata de temas a nivel de sistema operativo:
Programación de sistemas de Windows, 4a edición: Johnson M. Hart: 9780134382258: Amazon.com: Libros
Algoritmos y Estructuras de Datos
Los algoritmos y las estructuras de datos van de la mano, por lo general. Uno implica el otro y viceversa.
Si no tiene instrucciones formales sobre algoritmos, le sugiero lo siguiente:
Algorithms in a Nutshell: Algorithms in a Nutshell (In a Nutshell (O’Reilly)) (0636920516248): George T. Heineman, Gary Pollice, Stanley Selkow: Libros
Incluso si ha recibido capacitación formal en algoritmos, me gusta este libro para una actualización rápida. Y en su mayor parte, eso es todo lo que necesita en el caso general, ya sea para el desarrollo de sistemas o aplicaciones.
Sin embargo, una cobertura más profunda nunca está de más, y se puede encontrar con lo siguiente:
Algoritmos de Rob Sedgewick y Kevin Wayne: Robert Sedgewick, Kevin Wayne: 8601400041420: Amazon.com: Libros
Todavía se puede encontrar una cobertura mucho más profunda de algoritmos y estructuras de datos con la introducción clásica a los algoritmos de The MIT Press: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Libros
Desarrollo seguro y basado en pruebas
Si está realizando un desarrollo integrado, debe obtener algunas nociones sobre el desarrollo basado en pruebas (TDD). TDD se puede lograr fácilmente con lenguajes como Java, Python o Ruby. Pero C (y C ++) tienen algunos desafíos únicos en la forma en que funcionan sus respectivas cadenas de herramientas.
Y si está haciendo un desarrollo incrustado, lo más probable es que esté trabajando en C. Por lo tanto, sugiero un viaje a Test Driven Development for Embedded C (Pragmatic Programmers Series): Grenning: 9781934356623: Amazon.com: Libros
Del mismo modo, si nunca ha oído hablar de CERT, le sugiero que consulte el Estándar de codificación CERT C: 98 Reglas para desarrollar sistemas seguros y confiables: Amazon.com: El Estándar de codificación CERT® C, Segunda edición: 98 Reglas para el desarrollo Sistemas seguros, confiables y seguros (2da edición) (Serie SEI en ingeniería de software) (9780321984043): Robert C. Seacord: Libros
Hardware y redes
Según el nivel de complejidad en el que se sumerja, es posible que deba leer sobre la arquitectura de la computadora. Para eso, recomiendo Computer Architecture, A Quantitative Approach: A Quantitative Approach (The Morgan Kaufmann Series in Computer Architecture and Design): David A. Patterson: 9780123838728: Amazon.com: Books
TCP / IP Ilustrado, Volumen 1: Los Protocolos: Los Protocolos (2da Edición) (Serie de Computación Profesional Addison-Wesley): Kevin R. Fall, W. Richard Stevens: 0785342336313: Amazon.com: Libros
*** EDITAR ***
También olvidé agregar Redes de computadoras, Un enfoque de sistemas: Redes de computadoras, Quinta edición: Un enfoque de sistemas (The Morgan Kaufmann Series in Networking): Larry L. Peterson, Bruce S. Davie: 9780123850591: Amazon.com: Libros