Os termos "programação no sistema" e "programação de aplicativos" não são termos padrão e formalmente definidos na ciência da computação. No entanto, podemos inferir seus significados prováveis com base em práticas comuns:
Programação no sistema Provavelmente refere-se à programação do firmware de um sistema ou software de baixo nível *enquanto o sistema estiver em execução *. Isso normalmente envolve:
*
sistemas incorporados: Microcontroladores de programação ou outros dispositivos incorporados diretamente no hardware de destino. Um programador (geralmente por meio de uma interface JTAG ou similar) se conecta ao dispositivo e carrega/modifica o código enquanto o sistema é ligado (embora possa ser pausado ou em um modo específico de baixa potência). Isso evita a necessidade de remover o dispositivo, reprogramar externamente e depois reinstalá-lo.
*
bootloaders: Atualizando ou modificando o carregador de inicialização de um sistema (o software inicial que carrega o sistema operacional) enquanto o sistema está em execução. Isso geralmente requer um design cuidadoso para impedir a corrupção do próprio carregador de inicialização.
*
Carregamento de código dinâmico: Carregando e executando o código em tempo de execução. Isso não é estritamente "programação" no sentido de compilar código-fonte, mas envolve o carregamento de módulos ou segmentos de código pré-compilados na memória e tornando-os executáveis. Isso é comum em linguagens ou sistemas dinâmicos usando plugins.
Programação in-aplicação Provavelmente refere -se a modificar ou estender a funcionalidade de um aplicativo em execução *sem reiniciar ou recompilar todo o aplicativo *. Este é um conceito mais amplo e inclui várias técnicas:
*
Script: A incorporação de uma linguagem de script (como Python ou Lua) em um aplicativo permite que usuários ou administradores modifiquem o comportamento do aplicativo por meio de scripts. Isso altera o comportamento do aplicativo sem precisar recompilar o código do aplicativo principal.
*
plugins/extensões: Adicionando funcionalidade a um aplicativo por meio de plugins ou extensões. Geralmente, são módulos de código separados carregados em tempo de execução, expandindo os recursos do aplicativo.
*
Arquivos de configuração: Modificando configurações ou parâmetros nos arquivos de configuração para alterar o comportamento do aplicativo. Embora não esteja programando no sentido mais estrito, ele altera como o aplicativo opera.
*
Geração de código de tempo de execução: Alguns aplicativos geram código no tempo de execução e compilam/executam -o, modificando seu comportamento dinamicamente.
As diferenças de chave resumidas: | Recurso | Programação no sistema | Programação de aplicação na aplicação |
| -----------
|
Target | Firmware, software de sistema de baixo nível, bootloader | Software de aplicativo, funcionalidade dentro do aplicativo |
|
Método | Acesso à memória direta, JTAG, etc. | Scripts, plugins, arquivos de configuração, carregamento de código dinâmico |
|
escopo | Alterações em todo o sistema ou de baixo nível | Alterações específicas do aplicativo |
|
Risco | Maior risco de instabilidade do sistema se não for feito cuidadosamente | Geralmente menor risco, pois as alterações estão contidas no aplicativo |
É importante observar que a distinção nem sempre é clara. Algumas técnicas podem se enquadrar em ambas as categorias, dependendo do contexto. Os termos em si não são padrão, portanto a clareza é vital ao usá -los. Sempre garanta que seu público entenda o significado pretendido.