Rust, Python, TypeScript: a nova tríade da programação (Trifecta)
(smallcultfollowing.com)- Rust, Python e TypeScript devem surgir como as linguagens centrais do desenvolvimento de software daqui para frente
- Com a popularização das ferramentas de codificação com IA, a fidelidade dos desenvolvedores a uma linguagem enfraquece, e passam a ser escolhidas linguagens práticas e com ecossistemas fortes
- Surge o paradigma de programação orientada por ideias (idea-oriented programming), em que os desenvolvedores se concentram em design e revisão, enquanto a implementação fica a cargo da IA
- Essas três linguagens contam tanto com sistemas de tipos avançados quanto com ecossistemas robustos de gerenciadores de pacotes, o que favorece o uso de IA, a colaboração e a prevenção de erros
- Qualidade das mensagens de erro, ecossistema e integração com plataformas também estão se tornando critérios cada vez mais importantes
Por que Rust, Python e TypeScript estão ganhando força
- Rust se destaca em software de sistemas, áreas que exigem alto desempenho, segurança de tipos e eficiência de memória
- Python é ideal para experimentação, prototipagem e uso de bibliotecas matemáticas/científicas, permitindo validar ideias rapidamente
- TypeScript pode ser aplicado imediatamente à web, ao navegador e a várias plataformas, garantindo escalabilidade com seu sistema de tipos robusto e o ecossistema npm
O paradigma de desenvolvimento transformado pela IA: programação orientada por ideias
- Com a popularização das ferramentas de codificação com IA (Large Language Model), a programação está mudando para um fluxo de “conceber a ideia → a IA implementa → a pessoa projeta/revisa”
- Vibe coding se aproxima de instruções improvisadas e ambíguas, enquanto idea-oriented programming foca em design, estrutura e princípios sustentáveis
- O desenvolvedor define o design principal e a direção, enquanto a IA cuida das tarefas repetitivas e de implementação, numa relação comparável à de um arquiteto e um aprendiz
Mudança nos critérios de escolha de linguagem
- Antes, era comum trabalhar rapidamente com a linguagem que se conhecia bem (por exemplo, Rust), mas ao trabalhar com IA, as bibliotecas necessárias, o desempenho e a integração com plataformas passam a importar mais
- Dependendo do projeto, escolhe-se a linguagem mais adequada ao contexto, como Python (machine learning), TypeScript (web e extensões do VSCode) ou Rust (escolha base)
A importância do sistema de tipos
- Em ambientes com assistência de codificação por IA, sistemas de tipos avançados se tornam ainda mais importantes
- Rust e TypeScript impõem no nível do código o estado, a validade dos dados e a prevenção de erros, reduzindo também a chance de a IA cometer equívocos
- O Python também pode garantir estabilidade de tipos com configurações como mypy e pydantic
O valor crescente do ecossistema e dos gerenciadores de pacotes
- Ao desenvolver com IA, fica mais fácil aproveitar grandes bibliotecas, então o tamanho do ecossistema e a qualidade do gerenciador de pacotes se tornam ainda mais importantes
- Rust (
cargo), TypeScript (npm) e Python (uv, entre outros) contam com gerenciadores de pacotes modernos
Sintaxe menor e workarounds ficam menos importantes, mas a qualidade das mensagens de erro e dos guias continua essencial
- LLMs (IA) corrigem rapidamente erros de sintaxe repetitivos, mas as mensagens de erro e os guias precisam ser claros para permitir correções eficazes
- Assim como o esforço da comunidade Rust em ergonomia da linguagem, a IA também aproveita boas mensagens de erro para produzir código melhor
Conclusão: os LLMs abrem ferramentas poderosas de desenvolvimento para todos
- Na era da programação orientada por ideias, até profissionais juniores podem ter experiência de design e coordenação em nível de Principal Engineer
- Há preocupações de que o “fluxo” da codificação em si diminua, mas a tendência é que a experiência de desenvolvimento centrada em design e ideias se torne mais valiosa
► Na era do trabalho com IA, Rust, Python e TypeScript estão se consolidando como padrão no desenvolvimento graças a seus tipos robustos, ecossistemas e suporte a plataformas
14 comentários
Dos três, o que conheço melhor é TS, o que sei fazer é Python, e o que não conheço bem mas quero aprender é Rust...
Seja como for, já é um grande alívio que Java não tenha entrado entre esses três
Parece que, no fluxo em que a experiência evolui de programador => desenvolvedor que desenha a arquitetura para desenvolvimento de funcionalidades => arquitetura maior (sistemas, redes, segurança) => planejamento, vai haver cada vez menos oportunidades para quem programa aprender isso na prática.
Se a programação centrada em ideias se tornar a tendência dominante,
pelo menos dá a sensação de que o básico será um programador que consiga lidar sozinho com um full stack baseado em IA etc.
Ainda não vejo motivo suficiente para migrar de C para Rust em código de alto desempenho. Acho que algo com sintaxe relativamente mais simples, como Zig, é melhor para desenvolvimento e2e, e no resto dos casos, de qualquer forma, depois do profiling a estrutura costuma ser implementar só as partes chamadas a partir de uma linguagem de alto nível (usuário de Python). Se usar Rust, o custo de desenvolvimento para interagir com outras linguagens, como controlar o GIL, acaba sendo surpreendentemente bem alto. Já C é algo que outras linguagens esperam desde o início.
Se for pra usar Zig, eu prefiro usar C hahaha...
Torcendo pelo zig :)
Eu diria que, na verdade, o motivo para migrar de C para Rust é a produtividade. O suporte à segurança de memória também é ótimo, mas acho que só o
cargojá é motivo suficiente para fazer a transição.Ao criar módulos de extensão para Python, independentemente da linguagem, lidar com o GIL é sempre complicado. Isso também vale para C/C++, claro; a exceção é quando se usam bibliotecas ou ferramentas que ajudam na escrita de módulos de extensão, e o Rust também tem um excelente crate chamado PyO3.
Além disso, do ponto de vista de um desenvolvedor C, naturalmente o Zig é fácil de lidar. Basicamente, o próprio Zig também funciona como um compilador C, a ponto de ser possível simplesmente importar e usar arquivos de cabeçalho.
Dá para pensar assim também. Na minha experiência, em comparação com o PyO3, o
python.h— que também é um motivo pelo qual o Zig é uma boa alternativa — tornava bem mais fácil descer até o nível de SO ou de vetorização e depois voltar, mas, do ponto de vista de não precisar se preocupar com gerenciamento de memória, em certa escala o Rust pode ter uma produtividade de longo prazo maior.O motivo de C ser fácil é que ele é a base das principais linguagens modernas — Python/TS/Go/PHP/Java — ou tem uma sintaxe parecida com elas, então a facilidade vai além de a sintaxe ser simples: é uma linguagem que você ainda vai encontrar algum dia ou já encontrou em algum momento. Já o Rust está na posição oposta, então, apesar do alto valor, introduzi-lo em um time exige um esforço considerável. Acho que é porque, mais do que uma linguagem evolutiva, ele é uma linguagem inovadora.
Parece que é um texto escrito pela pessoa que criou o crate
rayondo Rust.Python e TypeScript ainda parecem ser linguagens centrais hoje em dia...
O Rust ainda não está exatamente nessa posição, né. Acho que talvez seja por causa da percepção de que é difícil.
Tomara que os LLMs reduzam a barreira de entrada e que o Rust também passe a ganhar destaque como linguagem central.
Niko Matsakis ocupa uma posição próxima à de pai do Rust, indo além do
rayon. Claro, Graydon Hoare é o criador, mas dá para dizer que quem mais contribuiu para as partes mais importantes da linguagem foi o Niko.Como desenvolvedor de Rust, imagino que eu tenha um carinho maior por ele, então pode ser uma informação tendenciosa! Obrigado por compartilhar a informação.
PHP é o melhor.
Mas no Brasil é Java, né?
Parece que Go ficou de fora por causa do GC, né.
Três grandes, hein