21 pontos por GN⁺ 2025-07-25 | 5 comentários | Compartilhar no WhatsApp
  • O avanço das ferramentas de codificação com IA está criando um ambiente em que desenvolvedores podem entrar rapidamente em novas linguagens
  • O autor foi um desenvolvedor que usou apenas Ruby por 10 anos, mas este ano, graças à colaboração com agentes de codificação com IA (como Cursor e Claude Code), passou a conseguir contribuir de forma prática em linguagens de sistema como C, C++ e Rust
  • Ferramentas como Claude Code e Cursor ajudam especialmente com sintaxe da linguagem, expressões idiomáticas e teoria geral
  • A IA não atua como geradora de código, mas como uma "engenheira parceira especialista em linguagens" que, combinada à experiência prévia, maximiza a eficiência do aprendizado por meio de perguntas em tempo real, explicações de contexto e análise de exemplos
  • Embora a IA não conheça totalmente o contexto específico de cada projeto nem toda a sua estrutura interna profunda, ela oferece conselhos imediatos sobre sintaxe, padrões típicos e bibliotecas padrão, permitindo contribuições reais sem mais de 100 horas de estudo prévio
  • O uso de ferramentas de IA está mudando rapidamente a percepção tradicional sobre especialização em linguagens de programação, abrindo um ambiente em que cada vez mais desenvolvedores podem trabalhar de forma produtiva em várias linguagens

De desenvolvedor Ruby por 10 anos à transição para múltiplas linguagens

  • O autor atuou de 2014 a 2024 como desenvolvedor dedicado ao ecossistema Ruby e Rails
    • Nesse período, acumulou experiência no desenvolvimento e na manutenção de ferramentas centrais do ecossistema Ruby, como Rails, IRB, RDoc e a gem debug
  • A partir de 2025, passou a contribuir em projetos de camada de sistema fora do Ruby, como Sorbet (C++), parser de RBS (C) e ZJIT (Rust)
  • Por trás dessa mudança estava a adoção de agentes de codificação com IA (Cursor, Claude Code)
  • Dentro da Shopify, o uso ativo dessas ferramentas de IA também é incentivado

O alinhamento perfeito das oportunidades

  • Não foi apenas por causa da IA; algumas condições importantes também estavam presentes
    • Uma mudança no roadmap da equipe de DX de Ruby tornou necessário o suporte a RBS no Sorbet → isso passou a exigir inevitavelmente experiência em C/C++
    • Membros da equipe de infraestrutura Ruby & Rails da Shopify compartilharam know-how e ofereceram um ambiente de tutoria ativa
  • Historicamente, já existiam excelentes mentores e oportunidades em projetos reais, mas a IA encurtou de forma revolucionária a barreira de aprendizado e a curva de entrada

A complexidade da programação de sistemas

  • Exemplo do projeto ZJIT (novo compilador JIT de Ruby):
    • Exige simultaneamente diversos conhecimentos e habilidades complexos
    • Rust (linguagem principal), C (linguagem da implementação central do Ruby), teoria de JIT/compiladores, estrutura e design específicos do ZJIT, princípios internos de funcionamento do Ruby, sistema de build do Ruby (autoconf, Makefile etc.)
    • Um único Pull Request pode abranger de 2 a 4 áreas ao mesmo tempo
  • Eficiência do Claude Code
    • Alta precisão em sintaxe de linguagem e padrões de expressão em áreas como sintaxe, teoria geral de compiladores e linguagens como Rust/C/C++
    • Mais limitado em contexto específico de projeto, implementação interna do Ruby e suporte a sistemas de build complexos
    • Ainda assim, a barreira de entrada no processo de aprendizado caiu para menos da metade
  • A IA dá suporte imediato ao aprendizado de sintaxe/teoria/padrões da linguagem, enquanto o contexto específico do projeto continua sendo responsabilidade humana

Pair programming com IA

  • A IA passou a ser vista não como uma simples geradora de código, mas como uma parceira complementar
  • Forma real de colaboração
    • O desenvolvedor transmite os requisitos da tarefa e o contexto
    • A IA encontra padrões e assume o papel de especialista em linguagem
    • O desenvolvedor pergunta os motivos de design
    • A IA modifica o código ou explora a teoria e entrega os resultados
    • Por meio do aprendizado interativo, é possível aprender ao mesmo tempo a linguagem em si e como usá-la na prática
  • Exemplo: em uma tarefa de profiling de instruções de bytecode do Ruby, é possível pedir à IA que busque PRs antigos e explique linha por linha
    • Também dá para fazer sem constrangimento "perguntas bobas" (como “por que um compilador JIT precisa de profiling?”)
    • Obtenção imediata de feedback sobre sintaxes pouco familiares
  • Também há casos de falha
    • Se a direção do projeto estiver errada, no fim ainda é necessária a correção de um mentor colega
    • Em última análise, a capacidade humana de corrigir a rota continua sendo indispensável

O desmonte das barreiras das linguagens de programação

  • Já não é mais uma era em que contribuir para um novo projeto em C exige 100 horas de estudo prévio
    • Mesmo linguagens de "alta barreira de entrada" como C e Rust podem receber contribuições imediatas com a ajuda da IA
  • A IA detecta rapidamente erros típicos de iniciantes (erros de sintaxe, de tipo, mal-entendidos sobre ferramentas etc.), permitindo partir direto para contribuições práticas
  • Especialização profunda continua importante, mas mais desenvolvedores agora podem alcançar produtividade em múltiplas linguagens
  • Deixe sintaxe/funções padrão/padrões com a IA, e o desenvolvedor pode se concentrar nos problemas reais
  • A mudança de alguém como o autor, um desenvolvedor dedicado a Ruby, para um desenvolvedor multilíngue em menos de um ano é uma tendência transformadora
    • A transição de "desenvolvedor de uma linguagem só" para "produtor multilíngue" está se tornando realidade
    • Pode ser o início de uma mudança na própria noção de especialização por linguagem

Conclusão

  • Os agentes de codificação com IA estão reduzindo drasticamente a barreira de entrada das linguagens de programação,
    abrindo uma nova era em que desenvolvedores podem trabalhar com produtividade imediata em várias linguagens

5 comentários

 
tested 2025-07-25

Gerar código, tudo bem, mas quem vai fazer a checagem ou revisão do código...

 
3ae3ae 2025-07-27

Mesmo que muitas vezes você não consiga escrever em uma linguagem com a qual não tem familiaridade, normalmente dá para ler por cima, então faz sentido que isso economize tempo em comparação com antes.

 
girr311 2025-07-25

Parece que agora ficou realmente muito mais rápido avançar em tecnologias que eu ainda não tinha usado ou em áreas que eu não tinha experimentado antes.

 
GN⁺ 2025-07-25
Comentários do Hacker News
  • Fico me perguntando se a IA está mudando a curva de aprendizado ou apenas tornando a experiência mais confortável
    Sobre a experiência de alguém que disse ter sido revolucionário virar um desenvolvedor multilíngue em um ano depois de passar 10 anos só com Ruby, penso que isso tem mais a ver com “algo que não tentou por 10 anos”
    Aprender a primeira linguagem de programação e aprender uma nova linguagem depois de já ter alguns anos de experiência são experiências completamente diferentes

    • Penso exatamente a mesma coisa
      Tenho dificuldade de me identificar com um desenvolvedor que passou 10 anos usando só uma linguagem
      No começo eu tinha uma identidade forte com a linguagem escolhida, mas aprendi com desenvolvedores realmente experientes que “linguagem é só uma ferramenta”
      Quando você entra em contato com várias linguagens, sua visão se amplia enormemente e surgem percepções difíceis de explicar em palavras
      Ter vivido essa experiência foi realmente uma felicidade

    • Acho que a opinião de que “mesmo sem IA, um ano teria sido suficiente para aprender várias linguagens” é verdadeira até certo ponto
      Na minha experiência, ao fazer mini projetos em Python com o o4, encontrei alguns casos de borda interessantes, e sem IA muito trabalho teria parado por causa disso
      Por exemplo, coisas como a forma como o unraid lida com xml vm ou problemas que surgem em dockers; se eu fosse investigar tudo isso sozinho, perderia um dia inteiro
      Como agora a IA guia essas partes, tudo flui de forma muito mais suave
      Isso até assusta, mas funciona muito bem
      E, para referência, minha primeira linguagem de programação foi o velho BASIC

  • A IA torna as linguagens mainstream mais populares
    As linguagens em que a IA menos erra costumam ser Python, JS e Ruby, justamente porque têm grandes comunidades e conjuntos de dados enormes
    Por isso, o ganho de acessibilidade em linguagens de nicho não é tão grande
    Afinal, a maioria dos programadores não domina linguagens menos populares a ponto de conseguir pegar bugs triviais
    Como ensina o aprendizado de máquina, no fim das contas quem tem mais dados de treinamento leva vantagem

    • A IA é forte em pattern matching
      Se você enquadra o problema em padrões já existentes, ela mostra rapidamente bons exemplos de código
      Mas, quanto mais complexo ou incomum for o problema, menos útil a IA se torna
      Humanos conseguem lidar com conceitos mais abstratos e dinâmicos com mais flexibilidade

    • Quem usa linguagens de nicho normalmente valoriza outras coisas além de popularidade (por exemplo: eficiência, dinheiro, aprendizado etc.)
      Se a popularidade da linguagem for importante, especialistas podem produzir bastante código de exemplo de qualidade, fiel aos idioms, e deixar a IA gerar várias variações; isso pode reduzir drasticamente a barreira de entrada
      Se a codificação em pequena escala ficar fácil, as pessoas podem passar a se interessar mais pela linguagem em si

    • LLMs tendem a falar mais bobagem em linguagens de nicho
      Sou desenvolvedor Scala, e vejo que a maior parte da discussão sobre utilidade de IA depende do tipo de linguagem que você usa
      Em uma linguagem como JS, talvez ela seja mais útil

    • Tenho receio de que, quando surgirem novas linguagens ou frameworks, a falta de suporte preciso da IA faça as pessoas evitarem mudanças
      Elas podem sentir que o incômodo é maior do que o benefício
      A cada novo release, passa a ser indispensável ter documentação MCP amigável para IA ou materiais extras

    • No meu caso, tive uma experiência muito positiva usando claude com Elm
      Graças ao sistema de tipos estático, a precisão foi alta e ajudou bastante
      Claro, às vezes saem respostas estranhas, mas imagino que todo mundo já tenha passado por isso

  • Acho que estamos numa era em que praticamente não existem barreiras entre linguagens grandes
    Se você olhar só para as 10 linguagens mais usadas hoje no desenvolvimento de aplicações, a maioria compartilha raízes em C ou ALGOL, com sintaxe semelhante, call-by-reference e gerenciamento automático de memória
    Um desenvolvedor profissional consegue alternar entre essas linguagens sem tanto sofrimento
    Aprender gerenciamento de memória pela primeira vez pode ser um pouco difícil, mas com padrões conhecidos, warnings e linters dá para lidar
    As linguagens com curva de aprendizado realmente pesada são Rust, Ada SPARK, Lisp, Forth, ML etc., e elas não são mainstream

  • Uso IA como parceira auxiliar de programação
    Aproveito o “conhecimento amplo e raso” da IA para explorar primeiro e depois peço ajuda quando preciso me aprofundar em uma área específica
    Uso mais para aprender novos conceitos ou tecnologias (como backend de webauthn ou implementação de integração com passkey) do que para aprender uma nova linguagem de programação
    Mesmo do ponto de vista de iniciante, a IA ajuda muito
    Mas já aconteceu de a IA me dar exemplos errados (como dependências obsoletas); no fim, isso foi até bom porque me levou a entender mais a fundo
    Eu não gostaria de deixar a IA desenvolver um app inteiro automaticamente
    Como ela comete pequenos erros com certa frequência, revisão é indispensável

  • Recentemente a IA ajudou muito no estudo de uma codebase em Swift com a qual tive contato pela primeira vez
    Ela resolve dúvidas rapidamente e acelera o aprendizado
    Mesmo assim, para contribuir de verdade em um projeto complexo, habilidade e experiência ainda são essenciais
    Mesmo em linguagens que conheço, ela erra bastante; em uma linguagem desconhecida, revisar fica ainda mais difícil

    • Tenho dificuldade de entender como alguém consegue ter confiança em resultados de IA numa linguagem que não conhece
      Sempre que vou me aprofundar em uma linguagem nova, revisar tudo ainda consome muito tempo até eu me familiarizar
      Falam que a barreira entre linguagens diminuiu, mas na prática ainda há casos como o do WhatsApp migrando para web app em vez de app desktop, então a barreira não desapareceu totalmente
  • Isso me lembra quando a Microsoft promovia a plataforma .Net e dizia que uma equipe poderia colaborar usando várias linguagens, como J#, Fortran.Net e Cobol#
    Na época, chegaram até a divulgar que, com essa abordagem, até talentos extraordinários em #Intercal poderiam quadruplicar a produtividade

    • Queria voltar à época em que eu realmente acreditava nessas coisas
  • Acho que, por causa da IA, as linguagens de programação vão evoluir na direção de sistemas de tipos no estilo Hindley-Milner fortes
    Haskell é difícil de aprender, mas se houver dados suficientes no dataset, seria um alvo perfeito para agentes de código
    É de alto nível, passível de verificação formal, e dá para conectar language server e IA com facilidade

    • Na realidade, parece mais provável o oposto: Haskell pode acabar ficando para trás no suporte de IA
      Se você gosta de linguagens funcionais, vale refletir sobre por que programação em linguagem natural é tão atraente
      Linguagem natural permite expressar resultados de forma ambígua, e a máquina preenche isso automaticamente
      Para haver uma inovação de verdade, seria preciso uma forma de programação com lógica forte + ambiguidade, por exemplo algo baseado em lógica como MTL
      Infelizmente, a pesquisa nessa área praticamente parou, e redes neurais viraram o padrão dominante

    • Do ponto de vista de LLMs, Haskell é menos amigável porque tem muitas características profundas da linguagem
      LLMs lidam principalmente com padrões de texto
      Linguagens com características simples e erros de compilação amigáveis (como Go) são melhor tratadas por IA
      Pessoalmente, eu prefiro linguagens com boa inferência de tipos, mas do ponto de vista da IA é diferente

    • Já usei ferramentas de LSP MCP + LLM, e fiquei um pouco decepcionado
      LSP foi originalmente projetado para humanos, então não combina perfeitamente com IA
      LLMs são fortes em pattern matching e, quando a estrutura de tipos é simples, quase não aparecem erros de tipo
      Em estruturas complexas, o LLM pode não conseguir resolver, ou o usuário pode não entender

    • Também surgiu a pergunta: “existem grandes casos de verificação formal com Haskell?”; exemplos como seL4 e CompCert são majoritariamente baseados em C ou Coq+OCaml

    • O uso de linguagens com tipos dependentes como Agda pode aumentar
      Mas, se o dataset for pequeno demais, a transferência de conhecimento da IA pode ficar difícil

  • É bom tratar a IA como parceira de pair programming
    Conforme a pessoa aprende, o papel da IA muda: no começo fica mais em explicações básicas e geração de pequenos trechos de código; depois passa a discussões avançadas + geração de blocos maiores de código e revisão de código
    Com o tempo, você mesmo passa a encontrar mais bugs

  • Se você enxergar a IA não como um simples gerador de código, mas como uma parceira com habilidades complementares, ela realmente ajuda
    Quando estiver lidando com uma linguagem desconhecida, é importante questionar com cuidado a solução proposta pela IA
    Perguntas concretas como “por que fazer assim?” ou “e em outros cenários?” ajudam muito de verdade no aprendizado

    • Quando faço perguntas, a IA valida meu raciocínio, mas depois de repetir isso algumas vezes fica difícil confiar totalmente

    • Também vale criar o hábito de fazer a IA formular perguntas claras
      Isso ajuda a descobrir antes onde o entendimento está errado ou a lógica está fraca

  • Pedi um script bash para testar a capacidade de geração de código do Gemini, mas ele veio com erro
    Como eu conheço bash, consegui corrigir rapidamente, mas se fosse uma linguagem que eu não conheço, seria difícil dizer que isso realmente elimina a barreira entre linguagens

    • Acho que isso é um problema específico do bash
      Por exemplo, quando pedi a um LLM uma automação parecida em Go, funcionou de primeira

    • Não acho justo tratar isso como um problema do Gemini em si; sem informações precisas sobre o modelo de IA, não concordo com críticas baseadas só no nome da marca
      Na prática, configurando algo como “Gemini 2.5 Pro (Jan 2025), temperatura 0.15”, ele gera imediatamente um idiomatic bash script excelente
      (código de exemplo omitido)
      Além disso, tive um problema com tratamento de quebra de linha em arquivos editados no Windows Notepad via WSL2, e o Gemini também explicou gentilmente como resolver
      Curiosamente, o fato de no bash a última linha não ser processada corretamente sem uma quebra de linha final é uma limitação do próprio bash
      Já no PowerShell, quase dá para fazer a mesma tarefa em one-liner, e não há problema se faltar quebra de linha no final
      Com a ajuda do Gemini, também consegui otimizar o PowerShell para uma versão curta de código

 
stadia 2025-07-25

https://ruby-news.kr/articles/…
Resumo do serviço que eu mantenho. É uma tradução, então é parecido, mas o GeekNews ficou mais bem organizado e mais agradável de ler.