o que exatamente é a programação do sistema?

Nunca entendi o que significa programação de sistema. A definição usual dada é “… fazer algo próximo ao Os ou estender os recursos do Os …”.

Usar a API do Windows diretamente em vez de algumas bibliotecas para dizer que o arquivo i / o torna-o programação do sistema? Estava escrevendo a programação do sistema operacional Android? Se eu escrever algo que exponha o kernel do Linux por meio de um console como o app no Android, estou fazendo programação do sistema? Se estou escrevendo um software para controlar uma máquina de lavar, estou escrevendo uma programação de sistema?

Sou um iniciante em programação e isso está me confundindo muito. Explique comparando-o com “programação de aplicativo”.

Comentários

  • Esta definição mudou e os próprios programadores de sistema não ‘ não parece ter certeza de uma definição única hoje. Este problema geralmente surge quando as pessoas debatem se a linguagem X é conveniente para a programação do sistema …
  • @Denys S é guret – Irônico se ninguém pode concordar com que ” programação do sistema ” é para começar.
  • Citação do Perl Cookbook – Capítulo 16. Gerenciamento de processos e Comunicação: ” Este capítulo é sobre como iniciar comandos e conectar processos separados. É sobre como gerenciar sua criação, comunicação e morte final. É sobre programação de sistemas. ”

Resposta

Eu, pessoalmente como a definição da Wikipedia :

A programação do sistema (ou programação de sistemas) é a atividade de software de sistema de programação. A principal característica distintiva da programação de sistemas quando comparada à programação de aplicativos é que a programação de aplicativos visa produzir software que fornece serviços ao usuário (por exemplo, processador de texto), enquanto a programação de sistemas visa produzir software que fornece serviços ao hardware do computador (por exemplo, desfragmentador de disco ) Requer um maior grau de conhecimento do hardware.

Resposta

Existem várias perguntas que você pode fazer a si mesmo para ganhar prática ao decidir essa questão.

  • O sistema foi originalmente vendido sem este programa? O Angry Birds pode ser um “aplicativo assassino” para um smartphone (o motivo pelo qual alguém o compra), mas ainda é um aplicativo de terceiros escrito muito depois de o telefone ter sido lançado. Escrevê-lo teria sido a programação de aplicativos. Mas o driver de exibição do mesmo smartphone é essencial para usá-lo, então seria programação de sistemas.
  • Você pode imaginar portar o código para outra plataforma sem reescrevê-lo amplamente? TeX e troff foram portados para virtualmente qualquer sistema com poucas mudanças, portanto são aplicativos, embora estejam localizados na parte inferior da cadeia de ferramentas que as pessoas normalmente usam. O sistema de arquivos em que o TeX grava sua saída, por exemplo UFS ou VFAT, é um caso limítrofe. Você poderia portar um sistema de arquivos para um sistema operacional diferente se fosse totalmente incrível, mas geralmente as pessoas simplesmente assumem ideias incríveis e escrevem seu próprio sistema de arquivos para seu próprio sistema operacional. Isso torna o software do sistema de arquivos.
  • A funcionalidade é implementada no kernel ou em binários separados? (Os sistemas de arquivos também ocupam um meio-termo aqui. Muitas partes de muitos sistemas de arquivos são, na verdade, código do kernel, mas muitos têm partes substanciais no espaço do usuário.) Os drivers de exibição gráfica podem, em princípio, ser componentes externos conectáveis, mas geralmente são implementados no kernel ou pelo menos com acesso direto privilegiado ao kernel (ou mesmo ao hardware). Isso seria programação de sistemas. Por outro lado, os jogos de computador que usam a pilha de exibição gráfica são aplicativos.

Para suas perguntas, escrever o sistema operacional Android foi definitivamente uma programação de sistemas. Escrever um programa que usa chamadas de API do Windows é programação de aplicativo. Não é tão portátil como seria se você usasse bibliotecas de plataforma cruzada, como SDL ou OpenGL, mas pode, em princípio, 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 de pensamento interessante. Eu definitivamente diria que envolve programação de sistemas, uma vez que você teria que saber muito sobre a estrutura do Linux (note que “Linux” é propriamente apenas o kernel, não a distribuição) para escrever e provavelmente até usá-lo!

Resposta

Resumindo: escrever software que amplie ou aprimore o funcionamento de um sistema operacional, como drivers, atualizações de utilitários do sistema para o sistema operacional ” es ou até mesmo 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; gestão de processos (multitarefa, administração de processos, etc.); usuário < -> métodos de interação do sistema (tanto dentro quanto fora) e administração do usuário. Basicamente, tudo que faz parte do sistema operacional que não é um aplicativo é programação de sistemas.

Resposta

Usando a API do Windows diretamente foi, em certo ponto, uma maneira comum de escrever aplicativos para Windows. Portanto, não, isso não é programação de sistemas.

A programação de sistemas não é apenas “próxima ao sistema operacional” – é algo essencial para o funcionamento central do sistema de computador. Escrever um sistema operacional é programação de sistemas. Escrever drivers de vídeo, drivers de sistema de arquivos e drivers de rede para esse sistema operacional é programação de sistemas. Escrever um compilador para uma combinação específica de linguagem / chipset é programação de sistemas.

Resposta

Normalmente, refere-se a “coisas de baixo nível que usuários finais não técnicos não sabem que existem ou não sabem muito claramente que eles estão usando ou o que fazem “.

Alguns exemplos que muitas vezes seriam considerados programação de sistema:

  • sistemas operacionais e drivers
  • compiladores
  • emuladores e d virtualização
  • criação de distribuição, ou seja, a criação de imagens de userland.

    Isso normalmente envolve a seleção da biblioteca padrão C, o sistema init e componentes básicos de userland como um shell.

A programação de sistemas geralmente é feita em linguagens de nível compilado inferior, sem coleta de lixo automática como C ou assembly, e tendem a acessar chamadas de sistema menos comuns frequentemente por meio de Interfaces POSIX C .

Estou mantendo um tutorial prático que cobre vários tópicos de programação do sistema aqui .

Resposta

Ao definir isso, evito todos os detalhes técnicos. Então se torna fácil.

Um aplicativo permite que um usuário faça algo útil com algum tipo de tecnologia. Portanto, a programação de aplicativos tem como objetivo fornecer recursos a um usuário, de forma bastante direta.

A programação do sistema, por outro lado, estabeleceria as bases para tornar a programação de aplicativos possível. Ele fornece recursos para o programador de aplicativos, e não para o usuário.

Essa definição é válida, mas é uma questão de perspectiva, contexto e funções. Para um programador de computador, as ferramentas de programação são aplicativos. Para um usuário final, eles não têm sentido, apenas fora de cena.

Resposta

Em suma, a programação do sistema quando comparada com a programação do aplicativo é que o SP lida com o software do sistema operacional para trabalhar com recursos de hardware e o AP lida com a atividade do usuário final.

Comentários

  • isso não ‘ t parecem oferecer algo substancial sobre os pontos feitos e explicados nas 4 respostas anteriores

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *