3 pontos por GN⁺ 2024-02-11 | 1 comentários | Compartilhar no WhatsApp

Um apelo por software conciso para 2024

  • O aumento do volume dos softwares, ou seja, o chamado "bloat", continua sendo uma das maiores vulnerabilidades do software.
  • Desenvolver software conciso é importante para melhorar a experiência do usuário, reduzir riscos de segurança e aumentar a eficiência dos sistemas.
  • Os desenvolvedores devem projetar software na direção de oferecer mais funcionalidades com menos código.

Opinião do GN⁺

  • O fenômeno do "bloat" em software pode causar queda de desempenho do sistema e vulnerabilidades de segurança, por isso os desenvolvedores devem se concentrar na otimização de código e em um design eficiente.
  • Como os usuários querem experiências de software mais rápidas e seguras, o software conciso pode ter competitividade no mercado.
  • Este artigo pode ajudar os desenvolvedores a repensar as tendências atuais de desenvolvimento de software e servir de motivação para criar softwares melhores.

1 comentários

 
GN⁺ 2024-02-11
Comentário do Hacker News
  • No romance de Vernor Vinge, "A Deepness in the Sky", a humanidade já está espalhada entre as estrelas mesmo sem tecnologia para ultrapassar a velocidade da luz. As naves espaciais são muito antigas e misturam tecnologias de vários sistemas e civilizações.

    • Os sistemas computacionais evoluíram por tanto tempo que quase ninguém entende direito a maior parte do código. As pessoas simplesmente usam o código e constroem coisas novas em cima dele.
    • Um personagem viajou por muito tempo e ficou em estase, então provavelmente é um dos humanos mais velhos. Ele foi engenheiro de sistemas no passado e conhece o funcionamento e as vulnerabilidades dos sistemas daquela época, o que lhe dá uma grande vantagem no futuro quando outras pessoas empilharam várias camadas por cima deles sem saber exatamente o que estão fazendo.
    • Acho que Vernor tem um ponto importante.
  • A maioria das bibliotecas do npm tem funcionalidades demais sem necessidade. Os autores não conhecem bom design, e toda biblioteca tenta fazer de tudo.

    • Por exemplo, uma biblioteca de conversão de codificação de strings inclui carregar arquivos, salvar, baixar pela internet, fornecer ferramenta de linha de comando e assim por diante. Uma biblioteca deveria fazer uma única coisa.
    • Em Rust, também não parece que a situação melhora. Se você quiser editar a documentação do Rust, precisa instalar cerca de 1000 crates.
    • O problema não é a linguagem, mas o fato de qualquer um poder publicar bibliotecas, e de fato publicar. As pessoas que "querem simplesmente concluir o trabalho" escolhem a biblioteca com mais recursos e pedem ainda mais funcionalidades porque têm preguiça de escrever algumas linhas de código que poderiam resolver fora da biblioteca.
    • Não sei como esse problema deveria ser resolvido. Uma ideia é criar um grupo voltado para "baixa dependência", incentivando pessoas que queiram colocar esse selo em suas bibliotecas e levando os usuários a procurarem esse selo ao escolher bibliotecas.
  • Em "Terre des Hommes", de Antoine de Saint-Exupéry, pergunta-se se você já observou os aviões modernos e acompanhou a linha de sua evolução ano após ano, pensando em tudo o que o ser humano cria.

    • Todo o esforço industrial, os cálculos, o projeto e as noites em claro sobre plantas e desenhos acabam concentrados em produzir um objeto com o princípio supremo da simplicidade.
    • Para fazer a curva de um móvel, a quilha de um barco, a fuselagem de um avião se aproximarem gradualmente das curvas básicas e puras do peito ou dos ombros humanos, várias gerações de artesãos precisam experimentar.
    • Diz-se que a perfeição é alcançada não quando não há mais nada a acrescentar, mas quando não há mais nada a remover.
  • A quantidade de código que usamos hoje é enorme. Por exemplo, pode ser necessário mais de 50 milhões de linhas de código ativas para abrir a porta da garagem.

    • Mesmo executando tanto código, é muito provável que a maior parte dele nunca tenha passado por uma revisão profunda.
    • Ainda assim, voltamos à rotina de instalar dependências do npm.
  • O software é considerado perigoso, então aconselham as pessoas a não executá-lo por conta própria, mas a deixá-lo nas mãos de provedores de "X as a Service" ou da "nuvem".

    • Isso é comparado a uma situação em que, como os carros pegam fogo com facilidade, você é orientado a deixar a direção com um especialista acompanhado por bombeiros profissionais.
  • O motivo de o software não ficar mais enxuto é que isso exige tempo, habilidade e mão de obra cara.

    • Como desenvolvedor independente, alguém que aprendeu node.js no ano passado pode combinar node.js, containers, vários serviços de banco de dados hospedados da AWS, serviços Lambda, object storage, Cloudflare, yaml, react, vite etc. para criar em um dia uma webapp frágil.
    • Escrever software rápido e barato de manter que ainda dê lucro é difícil.
  • No passado, hooks fornecidos pelo sistema eram padronizados para que todo desenvolvedor os usasse em interfaces e afins, e o principal trabalho do desenvolvedor era codificar a lógica do programa.

    • Essas system calls cumpriam a mesma função mesmo quando o código mudava e permitiam que código antigo continuasse compilando e executando sem problemas, ao mesmo tempo em que ofereciam mais funcionalidades ao software novo.
    • Esse sonho desmoronou rapidamente (por exemplo, os problemas com DLL), e muito do gerenciamento de pacotes passou a se concentrar em garantir o uso das bibliotecas corretas.
    • Agora que tanta experiência foi acumulada, surge a pergunta se esse sonho era viável ou se estamos avançando, a partir da bagunça atual, rumo a software rápido, conciso, estável e mais seguro.
  • Sobre Rust, uma opinião é que, mesmo que Rust tenha 70% menos vulnerabilidades por linha do que C++, se em Rust você puxa centenas de pacotes e acaba com 10 vezes mais linhas de código, o número absoluto de vulnerabilidades pode ser maior.

  • Se eu soubesse que o software seria como é hoje, não teria escolhido ser programador há 20 anos. Tudo é gigantesco, hardware e software travam uma competição sem fim, e a situação não está ficando melhor, nem mais fácil, nem mais simples.

  • Assim que se clica no link, aparecem um banner de CTA, anúncios do Google e um banner de cookies. Assim que o banner de cookies é fechado, aparece outro anúncio do Google, que ainda fica acompanhando a rolagem. Durante a leitura do artigo, você vê pelo menos mais três anúncios.

    • Nessa situação, é difícil levar o conteúdo realmente a sério.