Programação de sistemas - Systems programming

Programação de sistemas , ou programação de sistema , é a atividade de programação de software de sistema de computador . 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 diretamente (por exemplo, processador de texto ), enquanto a programação de sistemas visa produzir software e plataformas de software que fornecem serviços para outro software, têm desempenho restrito ou ambos (por exemplo , sistemas operacionais , aplicativos de ciência da computação , motores de jogos , automação industrial e aplicativos de software como serviço ).

A programação de sistemas requer um alto grau de conhecimento do hardware. Seu objetivo é alcançar o uso eficiente dos recursos disponíveis, seja porque o próprio software é crítico de desempenho ou porque mesmo pequenas melhorias de eficiência se transformam diretamente em economias significativas de tempo ou dinheiro.

Visão geral

Os seguintes atributos caracterizam a programação de sistemas:

  • O programador pode fazer suposições sobre o hardware e outras propriedades do sistema em que o programa é executado e frequentemente explorará essas propriedades, por exemplo, usando um algoritmo que é conhecido por ser eficiente quando usado com hardware específico.
  • Normalmente, uma linguagem de programação de baixo nível ou dialeto de linguagem de programação é usado para que:
  • Freqüentemente, os programas de sistema não podem ser executados em um depurador . A execução do programa em um ambiente simulado pode, às vezes, ser usada para reduzir esse problema.

A programação de sistemas é tão diferente da programação de aplicativos que os programadores tendem a se especializar em um ou outro.

Na programação de sistemas, muitas vezes, recursos de programação limitados estão disponíveis. O uso de coleta de lixo automática não é comum e a depuração às vezes é difícil de fazer. A biblioteca de tempo de execução , se disponível, geralmente é muito menos poderosa e faz menos verificação de erros. Por causa dessas limitações, o monitoramento e o registro são frequentemente usados; sistemas operacionais podem ter subsistemas de registro extremamente elaborados.

A implementação de certas partes em sistemas operacionais e rede requer programação de sistemas, por exemplo, implementação de paginação ( memória virtual ) ou um driver de dispositivo para um sistema operacional.

História

Originalmente, os programadores de sistemas escreviam invariavelmente em linguagem assembly . Experimentos com suporte de hardware em linguagens de alto nível no final dos anos 1960 levaram a linguagens como PL / S , BLISS , BCPL e ALGOL estendido para grandes sistemas Burroughs . O Forth também possui aplicações como linguagem de sistemas. Na década de 1970, C se tornou onipresente, auxiliado pelo crescimento do Unix . Mais recentemente, um subconjunto de C ++ chamado Embedded C ++ teve algum uso, por exemplo, é usado nos drivers do I / O Kit do macOS .

Uso alternativo

Por razões históricas, algumas organizações usam o termo programador de sistemas para descrever uma função de trabalho que seria mais precisamente denominada administrador de sistemas . Isso é particularmente verdadeiro em organizações cujos recursos de computador têm sido historicamente dominados por mainframes , embora o termo seja até usado para descrever funções de trabalho que não envolvem mainframes. Esse uso surgiu porque a administração de mainframes IBM frequentemente envolvia a escrita de código assembler customizado ( IBM's Basic Assembly Language (BAL)), que se integrava com o sistema operacional como OS / MVS , DOS / VSE ou VM / CMS . De fato, alguns produtos de software IBM tiveram contribuições de código substanciais da equipe de programação do cliente. Esse tipo de programação é progressivamente menos comum, mas o termo programador de sistemas ainda é o título de trabalho de fato para a equipe que administra diretamente os mainframes IBM.

Veja também

Referências

Leitura adicional