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.
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.