Começando com a programação do sistema? [fechadas]

8

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.

Ryan
fonte
Eu acho que você deveria esclarecer sua pergunta: o que você quer fazer? Escreva um SO? Siga o tutorial do SIGOPS, leia o livro Tanenbaum. Aprenda Win32? Existe o livro Petzold (embora eu não tenha certeza do por que alguém iria querer fazê-lo sem um motivo forte). Drivers de dispositivo? A programação de sistemas é um conceito tão amplo.
Vitor Py
Por que você diz que algo não gostaria de aprender o Win32 sem um motivo forte?
21711 Ryan
2
Como a API Win32 bruta carrega muita sujeira: ela vem da API Win16, muitas coisas parecem fazer pouco sentido. Usar um moderno kit de ferramentas da GUI para a maioria dos aplicativos e chamar apenas alguns métodos da API do Win32, nos quais você realmente precisa, geralmente é uma abordagem melhor e menos dolorosa.
Vitor Py

Respostas:

6

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.

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.

Brandon Moretz
fonte
É realmente difícil para mim recomendar a API do Win32 a alguém. Por que não segmentar algo mais moderno e utilizável como Qt, GTKmm ou parreira, até MFC? Não vejo utilidade para a programação da API do Win32, apesar de tê-lo aprendido em alguns trabalhos.
Vitor Py
@ Victor Acho que tudo se resume a uma questão de preferência pessoal. Eu "cortei meus dentes" no Win32 C, então acho que tenho uma conexão nostálgica pessoal com ele. Embora eu não o use com muita frequência no meu trabalho atual, ainda o uso regularmente para projetos pessoais / desenvolvimento recreativo (principalmente via Interop ou wrappers CLI / C ++ e outros, no entanto). Eu acho que o Win32 C direto é "mais próximo do metal", pois o OP está desejando do que as camadas de abstração oferecidas pelos frameworks (especialmente MFC, bom senhor ...).
21411 Brandon Moretz
10

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.

Robert Harvey
fonte
+1 para a resposta "direta". Você pode explicar mais e adicionar várias referências?
Md Mahbubur Rahman
O site do Arduino entra em detalhes significativos sobre a plataforma e como usá-la, além de muitos outros recursos já disponíveis na Internet.
Robert Harvey
4

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!

Mikera
fonte