Eu nunca entendi o que significa programação de sistema. A definição usual dada é "... fazer algo próximo aos recursos do sistema operacional ou estender o sistema operacional ...".
O uso da API do Windows diretamente, em vez de algumas bibliotecas, para dizer que a E / S de arquivo torna a programação do sistema? Estava escrevendo a programação do sistema Android OS? Se eu escrever algo que exponha o kernel do Linux através de um console como um aplicativo no Android, estou fazendo a programação do sistema? Se estou escrevendo um software para controlar uma máquina de lavar, estou escrevendo a programação do sistema?
Eu sou iniciante em programação e isso está me confundindo sem fim. Por favor, explique o contraste com "programação de aplicativos".
fonte
Respostas:
Pessoalmente, gosto da definição da Wikipedia :
fonte
Há várias perguntas que você pode fazer para se exercitar ao decidir essa pergunta.
troff
foi portado para praticamente qualquer sistema com poucas alterações, portanto, são aplicativos, mesmo estando localizados na parte inferior da cadeia de ferramentas que as pessoas normalmente usam. O sistema de arquivos no qual o TeX grava sua saída, por exemplo, UFS ou VFAT, é um caso limítrofe. Você pode portar um sistema de arquivos para um sistema operacional diferente, se for totalmente incrível, mas geralmente as pessoas assumem idéias incríveis e escrevem seu próprio sistema de arquivos para o próprio sistema operacional. Isso torna o software do sistema de sistemas de arquivos.Para suas perguntas, escrever o sistema operacional Android definitivamente era uma programação de sistemas. Escrever um programa que usa chamadas da API do Windows é programação de aplicativos. Não é tão portátil como seria se você usasse bibliotecas de plataforma cruzada, como SDL ou OpenGL, mas, em princípio, pode ser portado, é um código de terceiros e é executado no espaço do usuário. Um aplicativo de console que expõe o estado do kernel do Linux é um experimento interessante. Definitivamente, eu diria que isso envolve a programação de sistemas, já que você precisa saber muito sobre a estrutura do Linux (observe que "Linux" é propriamente apenas o kernel, não a distribuição) para escrever e provavelmente até usá-lo!
fonte
Resumindo: Escrever software que amplie ou aprimore o funcionamento de um sistema operacional, como drivers, utilitários de sistema atualize os sistemas operacionais ou até sistemas operacionais novos.
Envolve principalmente o gerenciamento de memória; Operações de E / S no sentido mais amplo da palavra, como rede, acesso a arquivos e gerenciamento de dispositivos; gerenciamento de processos (multitarefa, administração de processos etc.); métodos de interação do usuário <-> sistema (entrada e saída) e administração do usuário. Basicamente, tudo o que faz parte do sistema operacional que não é um aplicativo é a programação de sistemas.
fonte
O uso direto da API do Windows foi, a certa altura, uma maneira comum de escrever aplicativos para o Windows. Então não, isso não é programação de sistemas.
A programação de sistemas não é apenas "próxima ao SO" - é algo essencial para o funcionamento principal do sistema de computador. Então, escrever um SO é programação de sistemas. Escrever drivers de vídeo, drivers de sistema de arquivos e drivers de rede para esse sistema operacional é a programação de sistemas. Escrever um compilador para uma combinação específica de idioma / chipset é a programação de sistemas.
fonte
Normalmente, refere-se a "coisas de baixo nível que os usuários finais não técnicos não existem ou não sabem muito claramente que estão usando ou o que fazem".
Alguns exemplos que geralmente seriam considerados como programação do sistema:
criação de distribuição, ou seja, a criação de imagens da terra do usuário.
Isso normalmente envolve a seleção da biblioteca padrão C, do sistema init e dos componentes básicos da terra do usuário, como um shell.
Sistemas de programação é muitas vezes feito em linguagens de nível mais baixo compilados sem coleta de lixo automática como C ou montagem, e tendem a menos acesso sistema comum chama muitas vezes através de interfaces de POSIX C .
Estou mantendo um tutorial prático que aborda vários tópicos de programação do sistema aqui .
fonte
Ao definir isso, evitaria todos os detalhes técnicos. Então fica fácil.
Um aplicativo permite que o usuário faça algo útil com alguma peça de tecnologia. Portanto, a programação de aplicativos tem como objetivo fornecer recursos diretamente ao usuário.
A programação do sistema, por outro lado, estabeleceria as bases para possibilitar a programação de aplicativos. Ele fornece recursos ao programador de aplicativos e não ao usuário.
Essa definição será válida, mas é uma questão de perspectiva, contexto e papéis. Para um programador de computador, ferramentas de programação são aplicativos. Para um usuário final, eles não têm sentido, estão apenas fora de cena.
fonte
Em resumo, a programação do sistema, quando comparada à programação de aplicativos, é que o SP lida com o software do SO para trabalhar com recursos de hardware e o AP lida com a atividade dos usuários finais.
fonte