Desde que descubrí la programación hace cinco años, he hecho muchas cosas. Aprendí numerosos lenguajes y tecnologías de programación y probé muchas cosas interesantes. He escrito juegos, tanto de consola como con gráficos, consola y aplicaciones con ventana que se ejecutan en el escritorio, aplicaciones web CRUD, mi propia (horrible) base de datos de archivos planos basada en XML de PHP. Además de la Web y el escritorio, probé el desarrollo móvil con Android pero no lo disfruté, así que lo detuve. Recientemente terminé un proyecto web mío y estoy aprendiendo programación funcional en este momento (Haskell).
Pero nunca antes había incursionado en la programación del sistema. La idea de construir software (ni siquiera estoy seguro de si esa es la terminología correcta para usar) a un nivel bajo que interactúa con el sistema operativo parece interesante. El problema es que no estoy seguro de cómo empezar exactamente y necesito más ejemplos de lo que hago con esto.
¿Debo comenzar aprendiendo la API de Win32? Conozco C ++, ya que lo he usado para hacer bastantes aplicaciones de consola y juegos, pero no lo he usado en algunos años. ¿Es ese el camino a seguir? Además, ¿qué pasa con C? Estoy planeando aprender algo más sobre C (usando el libro K&R) antes de que termine el verano y comience la universidad. Quiero tener una buena ventaja como estudiante de primer año universitario con una sólida formación en programación.
Respuestas:
Creo que está confundiendo la programación del sistema con el desarrollo de aplicaciones . La programación del sistema sería más similar a escribir el sistema operativo, no interactuar con él. Probablemente sugeriría comenzar con el desarrollo regular de aplicaciones (en Windows, que sería WinAPI ), y luego explorar los subsistemas que encuentre interesantes en profundidad.
K&R es obviamente la guía definitiva sobre C, y si va a apuntar a aplicaciones de Windows, le recomiendo que elija una copia de la Programación de Windows .
Si está realmente interesado en las interacciones de "bajo nivel", también podría sugerirle los tutoriales de ensamblaje Win32 de Iczelicon ( MASM es genial, y también es gratis).
Si logras captar incluso una fracción de esa información antes de tu primer año de universidad, estarás a años luz probablemente de casi todos los demás.
fuente
Considere escribir un pequeño proyecto integrado en un controlador integrado como el Arduino. Esta es una excelente manera de comenzar el proceso de programación de sistemas de aprendizaje, porque lo inicia en un nivel básico y le permite crecer en él.
fuente
Si está interesado en la programación de sistemas, no hay nada mejor que trabajar en un sistema operativo (ya sea en el núcleo del núcleo del sistema operativo o en los controladores de dispositivo relacionados)
Por lo tanto, sugiero participar en el desarrollo de Linux: es una comunidad muy buena para aprender sobre aspectos internos del sistema operativo. Aprendí muchísimo sobre los sistemas operativos simplemente siguiendo las listas de discusión del kernel de Linux ...
También es una oportunidad para asumir un proyecto tangible y mejorar sus habilidades. Como reclutador de desarrolladores de software, me doy cuenta cuando alguien ha contribuido a un proyecto de código abierto: ¡casi siempre es un indicador positivo de habilidad y compromiso!
fuente