Yukihiro Matsumoto, noto nella comunità come Matz, concepisce Ruby a partire da un’insoddisfazione precisa. All’inizio degli anni Novanta apprezza la rapidità dei linguaggi di scripting, ma non trova quello che unisca tale flessibilità a un modello a oggetti abbastanza coerente e piacevole da usare.
Ruby nasce da questa ricerca. Il linguaggio prende idee da Smalltalk, Lisp, Perl, Eiffel e Ada senza limitarsi a giustapporle. Matsumoto privilegia l’esperienza umana: un programma deve esprimere l’intenzione con fluidità, ridurre il lavoro ripetitivo e offrire al lettore forme vicine al problema.
Imparare i linguaggi prima di crearne uno
Nato nel 1965 nella prefettura di Osaka e cresciuto in quella di Tottori, Matsumoto si interessa presto alla programmazione. Nel 1984 entra all’Università di Tsukuba, dove studia informatica, linguaggi e compilatori e si laurea nel 1990. Esplora numerosi linguaggi e sviluppa strumenti in Emacs Lisp. Questa varietà lo convince che progettare un linguaggio significa bilanciare coerenza, potenza, familiarità e costo di apprendimento.
Il 24 febbraio 1993: l’inizio di Ruby
Matsumoto fa risalire la nascita di Ruby al 24 febbraio 1993, durante una discussione sulla possibilità di creare un linguaggio di scripting realmente orientato agli oggetti. Perl 4 è potente sul testo, mentre Python esiste già, ma Matz cerca un modello in cui gli oggetti siano centrali.
Il nome Ruby richiama Perl: una pietra preziosa dopo una «perla». Ruby 0.95 viene pubblicato sui gruppi di discussione giapponesi nel dicembre 1995; Ruby 1.0 segue nel dicembre 1996.
Tutto è oggetto, ma deve restare pratico
Ruby tratta numeri, stringhe, classi e valori booleani come oggetti. Un’espressione come 3.times chiede all’oggetto 3 di ripetere un blocco:
3.times do |index|
puts "Passaggio #{index + 1}"
end
L’intento è rendere visibile ciò che il programmatore vuole ottenere e spostare il meccanismo ripetitivo nelle librerie. Il modello resta dinamico: alcuni errori emergono solo durante l’esecuzione, rendendo test e strumenti di analisi essenziali nei grandi progetti.
Blocchi, chiusure e iteratori
I blocchi sono uno dei tratti più riconoscibili di Ruby. Una collezione può controllare l’iterazione mentre il blocco descrive soltanto la trasformazione. I blocchi sono anche chiusure e possono catturare variabili dell’ambiente circostante, facilitando callback e gestione delle risorse.
Ereditarietà semplice e mixin
Ruby permette a una classe di ereditare da una sola classe. I moduli forniscono invece mixin per condividere comportamenti trasversali. Enumerable, per esempio, offre ordinamento, filtro e ricerca quando una classe sa iterare sui propri elementi. Questa flessibilità si accompagna al duck typing: conta ciò che un oggetto sa fare più che l’etichetta del suo tipo.
Le classi Ruby possono essere riaperte e modificate. La metaprogrammazione consente inoltre di definire metodi dinamicamente e costruire API dichiarative. È una grande fonte di espressività, ma il monkey patching globale può rendere difficile capire da dove provenga un comportamento. Le squadre esperte limitano quindi le modifiche globali e isolano la metaprogrammazione.
«Naturale», non semplicemente minimale
Matsumoto vuole un Ruby naturale più che semplice. Il linguaggio accetta talvolta più formulazioni quando ciò rende il codice più fluido, per esempio send_report if ready?. L’obiettivo non è imitare l’inglese, ma avvicinare la forma del programma al modo in cui lo sviluppatore pensa l’operazione.
Una comunità inizialmente giapponese
Le prime discussioni avvengono soprattutto sulla lista giapponese ruby-list. Contributori segnalano bug, propongono librerie e partecipano all’evoluzione. ruby-talk e il libro Programming Ruby di Dave Thomas e Andy Hunt, pubblicato nel 2000, aiutano poi la diffusione internazionale.
Ruby on Rails: acceleratore, non origine
Nel 2004 David Heinemeier Hansson estrae Ruby on Rails dal lavoro su Basecamp. Rails sfrutta blocchi, convenzioni, classi aperte e metaprogrammazione per ridurre la configurazione delle applicazioni web. Matsumoto non ha creato Rails: Ruby esisteva già da quasi un decennio e viene utilizzato anche per script, test, strumenti e altri software.
Evolvere l’implementazione senza cambiare identità
L’implementazione di riferimento, MRI o CRuby, è scritta in C. Ruby 1.9 integra YARV, la macchina virtuale progettata soprattutto da Koichi Sasada. JRuby, TruffleRuby e mruby esplorano altri ambienti. Il linguaggio deve conciliare compatibilità, dinamismo e prestazioni, un equilibrio reso difficile proprio dalle caratteristiche che lo rendono flessibile.
Governare attraverso coerenza e discussione
Matsumoto resta il principale progettista e un arbitro importante. Il suo ruolo consiste soprattutto nel valutare se le proposte rispettano l’identità del linguaggio. Issue pubbliche, conferenze e team core confrontano le idee con le esigenze reali degli utenti e degli implementatori.
Perché Yukihiro Matsumoto conta ancora
Ruby ha dimostrato che un linguaggio dinamico può mettere l’esperienza del programmatore al centro senza ridursi a uno strumento didattico. Blocchi, iteratori e API espressive hanno influenzato il modo in cui altre comunità discutono di leggibilità. La «felicità del programmatore» non significa digitare meno caratteri, ma trovare un equilibrio tra scrittura, lettura, feedback degli strumenti e capacità di trasformare un’idea in software.
Cronologia
- 1965: nascita nella prefettura di Osaka.
- 1984: ingresso all’Università di Tsukuba.
- 1990: laurea e carriera nello sviluppo software.
- 1993: inizio della progettazione di Ruby il 24 febbraio.
- 1995: pubblicazione di Ruby 0.95.
- 1996: Ruby 1.0.
- 2000: Programming Ruby favorisce la diffusione internazionale.
- 2004: David Heinemeier Hansson crea Ruby on Rails.
- 2007–2009: transizione a Ruby 1.9 e YARV.
- 2011: premio della Free Software Foundation a Matsumoto.
- 2013: Ruby 2.0.
- 2020: Ruby 3.0.
Domande frequenti
Perché Matsumoto ha creato Ruby?
Voleva un linguaggio di scripting pratico in cui il modello a oggetti fosse centrale e che combinasse flessibilità, iteratori ed esperienza di scrittura piacevole.
Ruby deriva soltanto da Smalltalk?
No. Smalltalk influenza fortemente il modello a oggetti, ma Matsumoto cita anche Perl, Lisp, Eiffel e Ada.
Cosa significa «felicità del programmatore»?
Significa privilegiare interfacce espressive, feedback rapido e costruzioni vicine all’intenzione umana, senza pretendere che la complessità scompaia.
Matsumoto ha creato Ruby on Rails?
No. Rails è stato creato da David Heinemeier Hansson nel 2004.
Quali sono i principali limiti di Ruby?
Il dinamismo può rinviare alcuni errori all’esecuzione; classi aperte e metaprogrammazione possono creare interazioni difficili da diagnosticare; le prestazioni sono state a lungo una sfida.