Uma década desenvolvendo uma linguagem de programação
Um esforço de uma década para construir uma nova linguagem de programação leva a reflexões sobre o que realmente funciona em design e implementação de linguagens. Os comentaristas avaliam os trade-offs entre tipagem estática, dinâmica e gradual (com muitos criticando a tipagem gradual para linguagens novas), a dificuldade prática de implementar verificadores de tipos e ferramentas robustas, e o valor de mirar plataformas existentes como LLVM, WASM ou JVM. A conversa também destaca como é difícil conquistar usuários, por que a maioria das novas linguagens continua nichada e por que objetivos claros e casos de uso reais importam mais do que recursos ambiciosos, mas sem foco.
Tipagem gradual: valor vs. desvantagens
- Muitos concordam com a recomendação do artigo: para linguagens novas, a tipagem gradual adiciona complexidade sem benefícios proporcionais. Melhor escolher estática ou dinâmica (geralmente estática) e confiar na inferência.
- Outros argumentam que a tipagem gradual é muito útil ao adaptar tipos em grandes ecossistemas dinâmicos (JS→TS, Python, Elixir/Erlang, Raku), ou quando são necessários “escape hatches” (DSLs de configuração, interoperabilidade).
- Alguns veem sistemas graduais como uma ferramenta de migração para tipagem estática, não como um estado final.
- Vários observam que há um espectro de sistemas graduais; desempenho e segurança dependem muito de como as fronteiras entre código tipado e não tipado são aplicadas.
Produtividade e segurança: estática vs dinâmica
- Alguns afirmam que não são mais produtivos em linguagens dinamicamente/gradualmente tipadas do que em tipadas estaticamente; o custo inicial das anotações compensa com o tempo.
- Outros citam evidências empíricas limitadas em ambas as direções e enfatizam que a produtividade depende do domínio do problema, do tamanho da equipe, do ecossistema da linguagem e da preferência pessoal.
- Uma crítica recorrente: “encontrar alguns bugs” por meio de verificação fraca ou opcional (por exemplo, padrões padrão do Python/mypy) pode dar uma falsa sensação de segurança se isso não mudar os testes/o fluxo de trabalho.
Python e tipagem gradual na prática
- As experiências com grandes codebases Python tipadas são mistas:
- Pró: dicas de tipo melhoram a documentação e detectam alguns bugs difíceis de reproduzir.
- Contra: stubs de terceiros ficam defasados, as ferramentas “falham aberto” por padrão, e anotações não aplicadas ou ignoradas podem enganar.
- Pyright é elogiado por padrões mais rígidos do que o mypy. PHP é mencionado como impondo tipos graduais em tempo de execução, em contraste com as dicas puramente estáticas do Python.
Verificação de tipos é conceitualmente simples, mas mal documentada
- Vários implementadores de linguagens dizem que os verificadores de tipos são, em geral, lógica direta depois que a semântica está fixada, mas materiais de aprendizado de qualidade são escassos.
- Livros acadêmicos populares são vistos como pesados e guiados pela teoria, com poucos programas concretos ou walkthroughs práticos.
- São compartilhados vários links para séries de blog, pequenas implementações HM e recursos no estilo “Crafting Interpreters”; há uma demanda clara por um livro de verificação de tipos acessível e focado em implementação.
Outros temas de design e implementação de linguagens
- Usar plataformas existentes (JVM, BEAM, JS, LLVM, WASM) e toolchains é amplamente recomendado para evitar escrever geradores de código, linkers ou toolchains completos personalizados.
- Self-hosting é visto como caro; alguns argumentam que o bootstrapping moderno com WASM/WASI o torna mais viável, outros alertam para não imitar projetos famosos por efeito de rebanho.
- S-expressions/Lisp são valorizadas pela análise trivial e por evitar discussões intermináveis sobre sintaxe; muitos observam que analisar raramente é a parte difícil em comparação com semântica e sistemas de tipos.
- Vários comentaristas enfatizam: definir usuários-alvo e domínios de problema claros; a maioria das linguagens “de nicho” continua nichada, mas até linguagens fracassadas podem contribuir com ideias.