¿Qué deben leer todos los libros como Embedded / System / Kernel Engineer y por qué? ¿Incluyendo estructura de datos y algoritmos?

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.

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

More Interesting

¿Cuál se debe aprender primero, estructuras de datos o algoritmos?

¿Cuál es el algoritmo de aprendizaje de Quora para su suministro de noticias?

¿Cómo se les ocurrió el algoritmo de MD5?

Cómo encontrar el día en una fecha en particular

¿Cuál es la diferencia entre el algoritmo memético y el algoritmo genético?

¿Hay algún libro que tenga todos los códigos para todas las estructuras de datos? ¿Al menos para todas las estructuras de datos de árbol?

¿La evolución biológica es algorítmica?

¿Cuáles son los problemas resueltos por los algoritmos hash?

Soy un desarrollador de fuerza bruta, ¿cómo puedo mejorar mis habilidades de algoritmos?

¿Debería alguien que se aplica a un campo de arranque de desarrollo ya saber cómo escribir una función para sumar una matriz multidimensional?

Dado un problema, como un problema de diseño o un problema de algoritmos, ¿cómo resolverá un ingeniero de software experimentado ese problema?

¿Cuál es una explicación intuitiva para el algoritmo de maximización condicional de expectativa (ECM)?

¿Qué consejo le da Ashish Kedia al estudiante de ingeniería de software de último año que no es un buen programador para convertirse en un gran ingeniero? Aprobé las asignaturas, pero no tomé ninguna clase de algo, y mis habilidades para resolver problemas son bajas.

¿Cuál es el algoritmo más genial (programación competitiva) que hayas encontrado?

¿Cuál es el tiempo de entrenamiento promedio y el tiempo de prueba de los algoritmos de aprendizaje automático más comunes?