paulo1205
(usa Ubuntu)
Enviado em 15/11/2019 - 12:47h
Eu sou um cara das antigas, e meus programas quase sempre são para me auxiliar com meu trabalho de suporte de infraestrutura, então eu raramente lido como web ou mesmo com GUI de desktop. ENtão eis minhas ferramentas.
• Perl para coisas rápidas de manipulação de texto.
• C++ para coisas que precisam de suporte em nível de SO que não é tão fácil de fazer em Perl (em particular, operações que precisem de
setuid; sou adepto do princípio do privilégio mínimo e de depender o mínimo possível de ferramentas externas, então eu não assumo que meus programas vão sempre poder dispor de
sudo, por exemplo).
• C em casos semelhantes aos acima, mas de escopo mais reduzido (porque a STL do C++ é muito mais conveniente do que a biblioteca padrão do C para operações com
strings e estruturas de dados dinamicamente alocadas). Também uso C quando não dá para garantir que a máquina destino terá as bibliotecas dinâmicas do C++ (por exemplo: um módulo de PAM que eu fiz acabou tendo de ser em C por esse motivo).
• A combinação de
shell e
coreutils eu venho usando cada vez menos para programar, restringindo-a mais e mais apenas à linha de comando. A razão disso é que a própria criação de processos e execução de comandos externos, bem como a passagem de dados via
pipes entre processos, acabam cobrando um preço em termos de eficiência. Linguagens ou ferramentas alternativas (ou mesmo formas de fazer que usem melhor recursos do próprio
shell ou de componentes como
grep,
sed e
awk) podem ajudar a evitar o consumo de recursos com operações que não beneficiam diretamente a computação (por exemplo, o tempo gasto para criar um processo novo, buscar o executável no disco, executá-lo, alocar recursos, abrir todas as bibliotecas dinâmicas das quais ele dependa, alocar recursos para elas, (no caso de o comando externo ser um
script) interpretar/compilar/converter para representação interna o
script e os eventuais módulos externos dos quais ele dependa, (no caso de comunicação via
pipes,
sockets ou arquivos temporários) receber dados provenientes da etapa anterior e. ao final da computação, a desmobilização dos recursos alocados pelas etapas anteriores).
... “Principium sapientiae timor Domini, et scientia sanctorum prudentia.” (Proverbia 9:10)