Vai al contenuto principale
BiografiaStoria dell’informaticaPrincipiante

Yukihiro Matsumoto: Ruby e la felicità del programmatore

Scopri come Yukihiro Matsumoto ha progettato Ruby come linguaggio a oggetti espressivo e ne ha guidato l'evoluzione collettiva prima e dopo l'ascesa di Ruby on Rails.

Pubblicato 24 agosto 2026Lettura : 5 minDi Yann Bastien
Ritratto di Yukihiro Matsumoto davanti a codice Ruby che mette in evidenza oggetti e blocchi
Mostra indice
  1. Imparare i linguaggi prima di crearne uno
  2. Il 24 febbraio 1993: l’inizio di Ruby
  3. Tutto è oggetto, ma deve restare pratico
  4. Blocchi, chiusure e iteratori
  5. Ereditarietà semplice e mixin
  6. Classi aperte e metaprogrammazione
  7. «Naturale», non semplicemente minimale
  8. Una comunità inizialmente giapponese
  9. Ruby on Rails: acceleratore, non origine
  10. Evolvere l’implementazione senza cambiare identità
  11. Governare attraverso coerenza e discussione
  12. Perché Yukihiro Matsumoto conta ancora
  13. Cronologia
  14. Domande frequenti
  15. Perché Matsumoto ha creato Ruby?
  16. Ruby deriva soltanto da Smalltalk?
  17. Cosa significa «felicità del programmatore»?
  18. Matsumoto ha creato Ruby on Rails?
  19. Quali sono i principali limiti di Ruby?

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.

Classi aperte e metaprogrammazione

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.

Questo articolo ti è stato utile?

Raccolta

Linguaggi di programmazione

25 / 26

  1. 01Grace Hopper: dai primi compilatori a COBOL
  2. 02John Backus: FORTRAN, la notazione BNF e il rifiuto del codice macchina
  3. 03Dennis Ritchie: il linguaggio C al cuore di Unix
  4. 04FORTRAN: dimostrare che un compilatore può competere con l'assembly
  5. 05Il linguaggio C: rendere portabili i sistemi senza nascondere la macchina
  6. 06Niklaus Wirth: da Pascal a Oberon, progettare con la semplicità
  7. 07Bjarne Stroustrup: progettare C++ senza rinunciare alle prestazioni
  8. 08Pascal: imparare a programmare rendendo visibile la struttura
  9. 09C++: da C with Classes al C++ moderno
  10. 10Programmazione orientata agli oggetti: oggetti, messaggi e astrazioni riutilizzabili
  11. 11Guido van Rossum: creare Python per rendere il codice leggibile
  12. 12Brendan Eich: JavaScript, dal prototipo Netscape allo standard del Web
  13. 13James Gosling: l'ingegnere all'origine di Java
  14. 14Python: leggibilità, batterie incluse e un ecosistema globale
  15. 15Java: scrivere una volta, eseguire ovunque
  16. 16JavaScript: il linguaggio che ha reso interattivo il Web
  17. 17Ken Thompson: da Unix a Go, la semplicità come metodo
  18. 18John McCarthy: Lisp e l'idea di programmare con i simboli
  19. 19Alan Kay: Smalltalk e il computer come medium personale
  20. 20Barbara Liskov: l'astrazione che ha reso modulare il software
  21. 21Robin Milner: ML, dimostrazione assistita e linguaggi dell'interazione
  22. 22Brian Kernighan: AWK, Unix e l'arte di spiegare il codice
  23. 23Anders Hejlsberg: da Turbo Pascal a C# e TypeScript
  24. 24Larry Wall: Perl, il linguaggio che ha collegato gli strumenti di Internet
  25. 25Yukihiro Matsumoto: Ruby e la felicità del programmatore
  26. 26Rasmus Lerdorf: PHP e la democratizzazione del Web dinamico
BiografiaStoria dell’informaticaPrincipiante

Alan Kay: Smalltalk e il computer come medium personale

Scopri come Alan Kay ha unito programmazione a oggetti, Smalltalk, Dynabook e interfacce grafiche in una visione del computer personale plasmabile dall'utente.

24 agosto 20267 min