#linguagens-de-programacao
45 posts
2026 - julho
1 post2026 - março
1 post2026 - fevereiro
1 post2023 - setembro
1 post2023 - janeiro
1 post2022 - abril
1 post2021 - março
1 post2019 - abril
1 post2019 - março
2 posts2019 - fevereiro
2 posts2018 - novembro
2 posts2018 - outubro
2 posts2016 - junho
1 post2016 - maio
1 post2016 - fevereiro
1 post2015 - dezembro
1 post2015 - outubro
1 post2015 - março
1 post2014 - dezembro
1 post2014 - junho
2 posts2013 - abril
1 post2010 - abril
1 post2009 - novembro
2 posts2008 - abril
1 post2008 - fevereiro
3 posts2008 - janeiro
1 post2007 - dezembro
3 posts2007 - novembro
2 posts2007 - setembro
1 post2007 - junho
1 post2006 - novembro
1 post2006 - outubro
3 posts2026 - julho
1 postA Resposta sobre Bun em Rust que Andrew Kelly deveria ter feito
Usei Claude Fable 5 e GPT 5.6 Sol como árbitros para comparar Rust e Zig no rewrite do Bun. Rust ajuda a reduzir bugs de ownership e custo de manutenção, mas o método com agentes pesou tanto quanto a linguagem.
2026 - março
1 postPortando 10 Mil Linhas de Python pra Crystal com Claude: easy-subtitle
Pedi ao Claude um port feature-parity do Subservient para Crystal e obtive o easy-subtitle em menos de 40 minutos: 2.516 linhas, 76 testes e um binário estático de 6 MB, sem runtime Python.
2026 - fevereiro
1 postAI Agents: Qual seria a melhor Linguagem de Programação para LLMs?
Claude e GPT imaginaram uma linguagem mais adequada a LLMs, com AST tipada, efeitos e proveniência. A partir da ideia, Claude gerou em Rust o protótipo PACT, ainda não testado.
2023 - setembro
1 post[Akitando] #145 - 16 Linguagens em 16 Dias: Minha Saga da Rinha de Backend
Em 16 dias, explorei 16 linguagens e otimizei projetos da Rinha de Backend. Os resultados mostram que técnicas podem aproximar desempenhos, não que uma linguagem seja sempre superior.
2023 - janeiro
1 post[Akitando] #136 - Python? Java? Rust? Qual a Diferença? | Discutindo Linguagens
Akita mostra o que existe sob Python, JavaScript, Java e Rust, das bibliotecas em C e C++ ao FFI e aos custos de integração. Cada linguagem serve a um contexto, mas maturidade e produtividade pesam mais que novidade.
2022 - abril
1 post[Akitando] #117 - Linguagem Compilada vs Interpretada | Qual é melhor?
Akita desmonta a falsa disputa entre compiladas e interpretadas: C gera binário antes da execução, enquanto Java e JavaScript usam máquinas virtuais e JIT para gerar código nativo durante o uso.
2021 - março
1 post[Akitando] #93 - Hello World Como Você Nunca Viu! | Entendendo C
A partir de um Hello World em C, Akita explica tipos, memória, ponteiros, structs e callbacks, depois simula objetos e métodos para mostrar o que linguagens de alto nível escondem.
2019 - abril
1 post[Akitando] #46 - Gerenciamento de Memória (Parte 2) | Entendendo Back-end para Iniciantes (Parte 6)
Fabio explica como garbage collectors funcionam e compara reference counting, mark and sweep, gerações e compactação, mostrando o preço de cada escolha em memória, CPU e pausas.
2019 - março
2 posts[Akitando] #44 - Concorrência e Paralelismo (Parte 2) | Entendendo Back-end para Iniciantes (Parte 4)
Fabio compara processos, threads, fibers, pools, filas e promises em várias linguagens e conclui que escolher tecnologia pelo contexto e coordenar tarefas importa mais que perseguir escala abstrata.
[Akitando] #42 - Entendendo Apple, GPL e Compiladores
Akita conecta a trajetória da Apple às disputas de licenças e à evolução de GCC, LLVM e Clang, mostrando como interesses comerciais influenciaram Swift, Kotlin e WebAssembly.
2019 - fevereiro
2 posts[Akitando] #41 - Entendendo Back-End para Iniciantes em Programação (Parte 2) | Série "Começando aos 40"
Akita explica por que dependências exigem gerenciadores próprios e critica o Go por trocar avanços de linguagens modernas por simplicidade, embora reconheça sua adoção no back-end.
[Akitando] #40 - Entendendo Back-End para Iniciantes em Programação (Parte 1) | Série "Começando aos 40"
Akita apresenta os fundamentos do back-end, de Assembly e compiladores a processos, threads, JVM, JIT e .NET, e mostra os compromissos entre portabilidade, isolamento e desempenho.
2018 - novembro
2 posts[Akitando] #29 - O que eu devo estudar? Vou conseguir emprego?
Akita discute como equilibrar empregabilidade e estudo de novas linguagens, defendendo domínio técnico no trabalho e aprendizado de longo prazo. Um legado em ASP abriu caminho para seu maior projeto Java.
[Akitando] #25 - Sua Linguagem É Especial? Parte 2 em 2001
Akita revisita um framework de 2001 em ASP, XML, XSLT e VBScript que antecipou técnicas parecidas com Ajax e NoSQL. Era overengineering, mas o projeto ensinou a testar limites e combinar ideias.
2018 - outubro
2 posts[Akitando] #16 - Sua Linguagem NÃO É Especial! (Parte 2)
Akita percorre CLU, SNOBOL, Prolog, Erlang, ML, Go e REBOL para mostrar de onde vieram recursos atuais, como pattern matching, concorrência e inferência de tipos. Sua linguagem favorita é só mais uma herdeira.
[Akitando] #15 - Sua Linguagem NÃO É Especial! (Parte 1)
Da Speedcoding ao C, Pascal, shells e ALGOL, Akita monta uma genealogia das linguagens para mostrar que nenhuma surgiu isolada. Programadores ganham mais ao tratá-las como ferramentas do que como identidade.
2016 - junho
1 post[Manga-Downloadr] Portando de Crystal para Ruby (e um pouco de JRuby)
Portando o Manga-Downloadr de Crystal para Ruby e JRuby, o autor encontra uma tradução quase direta, troca Fibers e Channels por Threads e mostra por que o teste favoreceu a arquitetura do Elixir.
2016 - maio
1 postFlertando com Crystal, a Perspectiva de um Rubyista
Avaliando Crystal pela ótica de um Rubyista, o autor destaca sua sintaxe familiar, binários nativos rápidos e concorrência cooperativa para I/O, mas deixa claro que a linguagem não substitui Ruby ou Rails.
2016 - fevereiro
1 postOperador Pipe do Elixir para Ruby: Chainable Methods
A gem Chainable Methods passa o retorno de cada chamada como primeiro argumento da próxima, deixando transformações Ruby mais legíveis e testáveis. O experimento usa method_missing e prioriza expressividade, não velocidade.
2015 - dezembro
1 postPing Pong de Erlang (tut15) em Clojure e Elixir
Um exercício de Ping Pong aproxima Erlang, Clojure e Elixir, destacando pattern matching, macros e a AST da BEAM. O autor reconhece o poder das três linguagens, mas ainda prefere Erlang aos parênteses Lisp.
2015 - outubro
1 postPersonal Thoughts on the Current Functional Programming Bandwagon
Programação funcional ajuda a raciocinar sobre transformações imutáveis e concorrência, mas não é o fim dos paradigmas. Elixir é a aposta pessoal do autor, enquanto linguagens híbridas devem dominar o mainstream.
2015 - março
1 post[Small Bites] Novidades no Garbage Collector do Ruby 2.2.1
O Ruby 2.2.1 passou a usar mais gerações e GC incremental, reduzindo pausas longas e tornando as respostas mais previsíveis. Nos testes descritos, isso custou cerca de 30% mais memória por processo.
2014 - dezembro
1 post[Off-Topic] Conversando com um Professor Universitário
Ao responder a um professor, o autor defende UML seletiva, Design Patterns como referência, XP e múltiplos paradigmas. Java continua útil, mas a universidade deve priorizar fundamentos.
2014 - junho
2 postsSwift para Rubistas, Funções e Closures
Ao comparar funções e closures de Swift com métodos e blocos de Ruby, o autor mostra que Swift é mais verboso, porém muito mais legível que Objective-C e viável para DSLs.
Swift para Rubistas, Rápida Introdução
Um tour de Swift para rubistas compara ranges, opcionais, extensions, coleções, tuples e closures com Ruby. A sintaxe fica mais simples, mas as extensas APIs Cocoa continuam sendo o desafio.
2013 - abril
1 postRuby 1.9 e Tail Call Optimization
Testando Ruby 1.9.3, o autor mostra que o MRI já suporta Tail Call Optimization, embora desativada por padrão. Com ela ligada, a recursão calcula fact1(100_000) sem estourar a pilha.
2010 - abril
1 post[Off-Topic] O Programador Humilde, por Edsger W. Dijkstra
Dijkstra defende humildade diante da dificuldade de programar: é melhor evitar bugs desde o início, usar abstrações e linguagens modestas, pois nenhuma ferramenta elimina a complexidade.
2009 - novembro
2 posts[Tradução] Três Contextos Implícitos em Ruby
A tradução explica os três contextos implícitos de Ruby, self, definidor padrão e cref, e compara class_eval com instance_eval para mostrar onde métodos e constantes são resolvidos.
[Tradução] Metaprogramação em Ruby: é tudo sobre Self
Yehuda Katz unifica a metaprogramação Ruby pelo conceito de self e mostra como class, class_eval e instance_eval definem métodos na classe ou na metaclass de cada objeto.
2008 - abril
1 postOff Topic: Nunca confie no TIOBE
Ao examinar a fórmula do TIOBE, o autor mostra como hits de buscadores, duplicatas e ruído distorcem a medida. Por isso, o índice não sustenta conclusões confiáveis sobre o crescimento das linguagens.
2008 - fevereiro
3 postsTradução: Tipagem Dinâmica vs Linguagem Dinâmica Explicado
A tradução distingue tipagem dinâmica de linguagem dinâmica com Ruby, Python e Groovy. O caso Groovy mostra que tipos estáticos não garantem detectar chamadas dinamicamente despachadas na compilação.
Conversando com Evan Phoenix
Evan Phoenix apresenta o Rubinius, uma VM de Ruby inspirada em Smalltalk e escrita quase toda em Ruby. A entrevista cobre GC geracional, FFI, compatibilidade e o plano de múltiplas VMs.
Tradução: De quem é essa variável, afinal?
A tradução compara a ligação de variáveis de instância em Java, Smalltalk e Ruby, do compilador aos bytecodes. No Ruby, a resolução dinâmica simplifica Observer e controllers RESTful.
2008 - janeiro
1 postTradução: Lisp em Ruby
Jim Weirich converte as funções eval e apply do Manual do Programador de Lisp 1.5 em um interpretador mínimo escrito em Ruby. O exemplo executa reverse sem parser Lisp nem REPL.
2007 - dezembro
3 postsConversando com Avi Bryant - Parte 2
Avi Bryant defende a simplicidade pragmática do Smalltalk, estima que Ruby poderia ser até 25 vezes mais rápido e explica como Seaside usa continuações e componentes.
Cuidado com suas Closures
Closures Ruby podem manter vivos objetos e variáveis capturados sem necessidade. O texto explica o problema e sugere criar blocos no menor escopo possível.
class Ruby; include Smalltalk; end
Um exercício de metaprogramação recria em Ruby a sintaxe de condicionais do Smalltalk, mas o teste mostra que o envio de métodos fica de 2 a 4 vezes mais lento.
2007 - novembro
2 postsRuby Symbols
Símbolos Ruby funcionam bem como identificadores reutilizáveis, evitando duplicação de strings. O texto explica sua notação e seu uso em Hashes e no Rails.
Conversando com John Lam (IronRuby)
John Lam explica como o IronRuby usa o DLR para rodar Ruby no .NET, prioriza compatibilidade com MRI 1.8 e Rails, busca interoperabilidade com o CLR e supera o MRI em benchmarks.
2007 - setembro
1 post100% pure Object-Oriented: The Fallacy
O texto questiona a ideia de que mais pureza orientada a objetos torna uma linguagem melhor e defende escolher a tecnologia pelos requisitos concretos de cada projeto.
2007 - junho
1 postConversando com Ola Bini (JRuby Core Team Member)
Ola Bini explica sua chegada ao JRuby Core Team, os desafios de compatibilidade com MRI e extensões C, o uso de JRuby em Rails e Mingle e por que aprender linguagens diferentes melhora o programador.
2006 - novembro
1 postEntrevista com Yukihiro Matsumoto: parte III
Matz explica como blocos e fechamentos em Ruby abstraem os detalhes dos loops, permitem definir diferentes formas de iteração e customizar métodos, além de capturar e compartilhar variáveis do escopo.
2006 - outubro
3 postsDesign Patterns representam defeitos nas Linguagens
O texto argumenta que muitos Design Patterns expõem deficiências das linguagens e deveriam ser absorvidos por elas, até se tornarem invisíveis. Ruby on Rails aparece como exemplo ao integrar MVC em uma DSL web.
Entrevista com Yukihiro Matsumoto: parte II
Matz mostra como Ruby usa métodos dinâmicos, proxies, callbacks e mix-ins para adaptar bibliotecas e manter o código conciso. A robustez, diz ele, depende de testes e do interpretador.
Entrevista com Yukihiro Matsumoto: parte I
Matz explica por que Ruby privilegia harmonia, liberdade de escolha e código conciso em vez de uma linguagem perfeita. Seu objetivo é reduzir a frustração e tornar a programação mais prazerosa.