Ir para o conteúdo principal
Bethemesh
BiografiaHistória da informáticaIniciante

Yukihiro Matsumoto: Ruby e a felicidade do programador

Descubra como Yukihiro Matsumoto concebeu Ruby como uma linguagem orientada a objetos expressiva e guiou a sua evolução coletiva antes e depois da ascensão de Ruby on Rails.

Publicado 24 de agosto de 2026Leitura : 5 minPor Yann Bastien
Retrato de Yukihiro Matsumoto diante de código Ruby destacando objetos e blocos
Mostrar índice
  1. Aprender linguagens antes de criar uma
  2. 24 de fevereiro de 1993: o início de Ruby
  3. Tudo é objeto, mas deve continuar prático
  4. Blocos, closures e iteradores
  5. Herança simples e mixins
  6. Classes abertas e metaprogramação
  7. «Natural», não apenas minimalista
  8. Uma comunidade inicialmente japonesa
  9. Ruby on Rails: acelerador, não origem
  10. Evoluir a implementação sem mudar a identidade
  11. Governar através da coerência e da discussão
  12. Porque Yukihiro Matsumoto continua importante
  13. Cronologia
  14. Perguntas frequentes
  15. Porque criou Matsumoto Ruby?
  16. Ruby inspira-se apenas em Smalltalk?
  17. O que significa «felicidade do programador»?
  18. Matsumoto criou Ruby on Rails?
  19. Quais são os principais limites de Ruby?

Yukihiro Matsumoto, conhecido na comunidade como Matz, concebe Ruby a partir de uma insatisfação concreta. No início dos anos 1990 aprecia a rapidez das linguagens de scripting, mas não encontra uma que combine essa flexibilidade com um modelo de objetos suficientemente coerente e agradável de utilizar.

Ruby nasce dessa procura. A linguagem recolhe ideias de Smalltalk, Lisp, Perl, Eiffel e Ada sem simplesmente as justapor. Matsumoto privilegia a experiência humana: um programa deve exprimir a intenção com fluidez, reduzir trabalho repetitivo e oferecer formas próximas do problema.

Aprender linguagens antes de criar uma

Nascido em 1965 na prefeitura de Osaka e criado na de Tottori, Matsumoto interessa-se cedo por programação. Em 1984 entra na Universidade de Tsukuba, onde estuda informática, linguagens e compiladores, concluindo o curso em 1990. Explora muitas linguagens e desenvolve ferramentas em Emacs Lisp. Essa diversidade convence-o de que uma linguagem deve equilibrar coerência, poder, familiaridade e custo de aprendizagem.

24 de fevereiro de 1993: o início de Ruby

Matsumoto situa o nascimento de Ruby em 24 de fevereiro de 1993, durante uma conversa sobre uma linguagem de scripting verdadeiramente orientada a objetos. Perl 4 era poderoso para texto e Python já existia, mas Matz procurava um modelo em que os objetos fossem centrais.

O nome Ruby faz eco de Perl: uma pedra preciosa depois de uma «pérola». Ruby 0.95 é publicado em grupos de discussão japoneses em dezembro de 1995; Ruby 1.0 surge em dezembro de 1996.

Tudo é objeto, mas deve continuar prático

Ruby trata números, cadeias, classes e valores booleanos como objetos. Uma expressão como 3.times pede literalmente ao objeto 3 que repita um bloco:

3.times do |index|
  puts "Etapa #{index + 1}"
end

A intenção é tornar visível o objetivo do programador e deslocar mecanismos repetitivos para as bibliotecas. O modelo continua dinâmico: certos erros só aparecem em execução, pelo que testes e ferramentas de análise são essenciais em projetos grandes.

Blocos, closures e iteradores

Os blocos são uma das características mais reconhecíveis de Ruby. Uma coleção pode controlar a iteração enquanto o bloco descreve apenas a transformação. Como closures, os blocos capturam variáveis do ambiente, facilitando callbacks e gestão de recursos.

Herança simples e mixins

Ruby permite herança de uma única classe. Os módulos fornecem mixins para partilhar comportamentos transversais. Enumerable, por exemplo, oferece ordenação, filtragem e pesquisa quando uma classe sabe percorrer os seus elementos. O duck typing privilegia aquilo a que um objeto sabe responder em vez da sua etiqueta declarada.

Classes abertas e metaprogramação

As classes Ruby podem ser reabertas e modificadas. A metaprogramação permite definir métodos dinamicamente e construir APIs declarativas. Esta expressividade tem um custo: alterações globais ou monkey patches podem tornar o comportamento difícil de localizar. Equipas experientes isolam por isso a metaprogramação e limitam modificações globais.

«Natural», não apenas minimalista

Matsumoto procura tornar Ruby natural em vez de simplesmente simples. A linguagem aceita por vezes várias formulações quando isso torna o código mais fluido, como send_report if ready?. O objetivo não é imitar o inglês, mas aproximar a forma do programa da maneira como o programador pensa a operação.

Uma comunidade inicialmente japonesa

As primeiras discussões decorrem sobretudo na lista japonesa ruby-list. Contribuidores comunicam erros, propõem bibliotecas e participam na evolução. A lista ruby-talk e o livro Programming Ruby, de Dave Thomas e Andy Hunt, publicado em 2000, ajudam depois à internacionalização.

Ruby on Rails: acelerador, não origem

Em 2004, David Heinemeier Hansson extrai Ruby on Rails do trabalho feito para Basecamp. Rails explora blocos, convenções, classes abertas e metaprogramação para reduzir configuração. Matsumoto não criou Rails: Ruby já existia havia quase uma década e também é usado em scripts, testes, ferramentas e outros programas.

Evoluir a implementação sem mudar a identidade

A implementação de referência, MRI ou CRuby, é escrita em C. Ruby 1.9 integra YARV, a máquina virtual concebida principalmente por Koichi Sasada. JRuby, TruffleRuby e mruby exploram outros ambientes. Ruby deve conciliar compatibilidade, dinamismo e desempenho, compromisso dificultado precisamente pelas funcionalidades que lhe dão flexibilidade.

Governar através da coerência e da discussão

Matsumoto continua a ser o principal designer e um árbitro importante. O seu papel consiste sobretudo em avaliar se uma proposta corresponde à identidade da linguagem. Issues públicas, conferências e equipas core confrontam as ideias com necessidades reais de utilizadores e implementadores.

Porque Yukihiro Matsumoto continua importante

Ruby demonstrou que uma linguagem dinâmica pode colocar a experiência do programador no centro sem se reduzir a uma ferramenta pedagógica. Blocos, iteradores e APIs expressivas influenciaram outras comunidades. A «felicidade do programador» não é escrever menos caracteres: é equilibrar escrita, leitura, feedback das ferramentas e capacidade de transformar uma ideia em software.

Cronologia

  • 1965: nascimento na prefeitura de Osaka.
  • 1984: entrada na Universidade de Tsukuba.
  • 1990: conclusão do curso e carreira em desenvolvimento de software.
  • 1993: início da conceção de Ruby, em 24 de fevereiro.
  • 1995: publicação de Ruby 0.95.
  • 1996: Ruby 1.0.
  • 2000: Programming Ruby contribui para a difusão internacional.
  • 2004: David Heinemeier Hansson cria Ruby on Rails.
  • 2007–2009: transição para Ruby 1.9 e YARV.
  • 2011: prémio da Free Software Foundation para Matsumoto.
  • 2013: Ruby 2.0.
  • 2020: Ruby 3.0.

Perguntas frequentes

Porque criou Matsumoto Ruby?

Queria uma linguagem de scripting prática cujo modelo de objetos fosse central e que combinasse flexibilidade, iteradores e uma experiência de escrita agradável.

Ruby inspira-se apenas em Smalltalk?

Não. Smalltalk influencia fortemente o modelo de objetos, mas Matsumoto cita também Perl, Lisp, Eiffel e Ada.

O que significa «felicidade do programador»?

Significa privilegiar interfaces expressivas, feedback rápido e construções próximas da intenção humana, sem fingir que a complexidade desaparece.

Matsumoto criou Ruby on Rails?

Não. Rails foi criado por David Heinemeier Hansson em 2004.

Quais são os principais limites de Ruby?

O dinamismo pode adiar certos erros até à execução; classes abertas e metaprogramação podem criar interações difíceis de diagnosticar; o desempenho foi também um desafio histórico.

Este artigo foi útil?

Fontes e referências

Coleção

Linguagens de programação

25 / 26

  1. 01Grace Hopper: dos primeiros compiladores ao COBOL
  2. 02John Backus: FORTRAN, a notação BNF e a recusa do código de máquina
  3. 03Dennis Ritchie: a linguagem C no coração do Unix
  4. 04FORTRAN: provar que um compilador pode competir com assembly
  5. 05A linguagem C: tornar os sistemas portáteis sem esconder a máquina
  6. 06Niklaus Wirth: de Pascal a Oberon, conceber pela simplicidade
  7. 07Bjarne Stroustrup: conceber C++ sem abdicar do desempenho
  8. 08Pascal: aprender a programar tornando a estrutura visível
  9. 09C++: de C with Classes ao C++ moderno
  10. 10Programação orientada a objetos: objetos, mensagens e abstrações reutilizáveis
  11. 11Guido van Rossum: criar Python para tornar o código legível
  12. 12Brendan Eich: JavaScript, do protótipo da Netscape ao padrão da Web
  13. 13James Gosling: o engenheiro na origem de Java
  14. 14Python: legibilidade, baterias incluídas e um ecossistema global
  15. 15Java: escrever uma vez, executar em qualquer lugar
  16. 16JavaScript: a linguagem que tornou a Web interativa
  17. 17Ken Thompson: de Unix a Go, a simplicidade como método
  18. 18John McCarthy: Lisp e a ideia de programar com símbolos
  19. 19Alan Kay: Smalltalk e o computador como meio pessoal
  20. 20Barbara Liskov: a abstração que tornou o software modular
  21. 21Robin Milner: ML, prova assistida e linguagens da interação
  22. 22Brian Kernighan: AWK, Unix e a arte de explicar código
  23. 23Anders Hejlsberg: de Turbo Pascal a C# e TypeScript
  24. 24Larry Wall: Perl, a linguagem que ligou as ferramentas da Internet
  25. 25Yukihiro Matsumoto: Ruby e a felicidade do programador
  26. 26Rasmus Lerdorf: PHP e a democratização da Web dinâmica
BiografiaHistória da informáticaIniciante

Alan Kay: Smalltalk e o computador como meio pessoal

Descubra como Alan Kay ligou programação orientada a objetos, Smalltalk, Dynabook e interfaces gráficas numa visão do computador pessoal que o utilizador pode moldar.

24 de agosto de 20268 min