Desde que descobri a programação há cinco anos, fiz muitas coisas. Eu aprendi várias linguagens e tecnologias de programação e tentei muitas coisas interessantes. Escrevi jogos, tanto de console quanto de gráficos, aplicativos de console e janelas executados na área de trabalho, aplicativos da Web CRUD, meu próprio (péssimo) banco de dados de arquivos simples baseado em XML do PHP. Além da Web e da área de trabalho, tentei o desenvolvimento móvel com o Android, mas não gostei, então parei com isso. Recentemente, terminei um projeto da Web e estou aprendendo programação funcional agora (Haskell).
Mas nunca me envolvi com programação de sistemas antes. A idéia de criar software (nem tenho certeza se essa é a terminologia correta a ser usada) em um nível baixo que interage com o sistema operacional parece interessante. O problema é que não sei exatamente como começar e preciso de mais exemplos do que faço com isso.
Devo começar aprendendo a API do Win32? Conheço algum C ++ porque o usei para criar muitos aplicativos e jogos de console, mas não o uso há alguns anos. Aquele é o caminho para ir? Além disso, e C? Estou planejando aprender um pouco mais sobre C (usando o livro K&R) antes do final do verão e do início da faculdade. Quero ter uma boa vantagem como calouro na faculdade, com uma sólida formação em programação.
Respostas:
Acredito que você esteja confundindo a programação do sistema com o desenvolvimento de aplicativos . A programação do sistema seria mais do que escrever o sistema operacional, não interagindo com ele. Eu provavelmente sugeriria começar com o desenvolvimento regular de aplicativos (no Windows, que seria o WinAPI ), e depois explorar os subsistemas que você achar interessantes em profundidade.
K&R é obviamente o guia definitivo em C, e se você pretende direcionar aplicativos para Windows, recomendo que você compre uma cópia do Programming Windows .
Se você estiver realmente interessado em interações de "baixo nível", também sugiro os tutoriais de montagem do Win32 do Iczelicon (o MASM é ótimo e também é gratuito).
Se você conseguir captar até uma fração dessas informações antes do primeiro ano da faculdade, estará anos-luz à frente de provavelmente quase todo mundo.
fonte
Considere escrever um pequeno projeto incorporado em um controlador incorporado como o Arduino. Essa é uma ótima maneira de iniciar o processo de aprendizagem de programação de sistemas, porque você inicia em um nível básico e permite que você cresça nele.
fonte
Se você estiver interessado em programação de sistemas, nada supera realmente trabalhar em um sistema operacional (no núcleo do kernel do SO ou nos drivers de dispositivo relacionados)
Portanto, sugeriria me envolver no desenvolvimento do Linux - é uma comunidade muito boa para aprender sobre os sistemas operacionais internos. Aprendi bastante sobre sistemas operacionais simplesmente seguindo as listas de discussão do linux-kernel ....
Também é uma oportunidade de assumir um projeto tangível e aprimorar suas habilidades. Como recrutador de desenvolvedores de software, presto atenção real quando alguém contribuiu para um projeto de código aberto - quase sempre é um indicador positivo de habilidade e comprometimento!
fonte