Programmer Happiness Is the First Goal of Language Design
Every Ruby design decision first asks: does this make programmers happier? Not: does this make the compiler simpler? Matz believes programs are written for humans to read; machine execution is secondary.
Source: Programming Ruby: The Pragmatic Programmers' Guide, Dave Thomas, Chad Fowler, Andy Hunt, 2004 / 松本行弘:Ruby 的设计哲学, RubyConf 2003 keynote
Principle of Least Surprise
The language should work according to the intuitions of experienced programmers rather than producing unexpected results. When language behavior matches expectations, cognitive load is minimized, and developers can focus on business logic rather than the language itself.
Source: The Ruby Programming Language, David Flanagan and Yukihiro Matsumoto, O'Reilly, 2008 / Matz interview, artima.com, 2003
Consistency of Pure Object-Orientation
In Ruby, everything is an object — including integers, nil, and classes themselves. This design consistency eliminates the mental model split between 'primitive types' and 'object types', reducing the conceptual complexity of the language.
Source: The Ruby Programming Language, David Flanagan and Yukihiro Matsumoto, O'Reilly, 2008
Programming Languages Are for Humans, Not Machines
Computers are fast enough that we should shift the burden of optimization from programmers to machines. Future languages should increasingly approach natural language expression.
Source: 松本行弘的程序世界, 松本行弘, 人民邮电出版社, 2009 / Matz interview, Google I/O 2009
Human-Machine Priority Inversion
When designing tools, prioritize human cognitive experience over machine execution efficiency; machines keep getting faster, but human cognitive bandwidth is constant.
Ruby's `5.times do ... end` is closer to natural human language than `for(int i=0;i<5;i++)`, even though the latter is simpler for the compiler.
Language DesignAPI DesignDeveloper Tooling
Conceptual Consistency Principle
Introducing a small number of unified concepts into a system reduces overall cognitive complexity more than introducing multiple specialized concepts.
In Ruby, the integer `1` is an object, nil is an object, and classes are objects — this unified concept eliminates the cognitive burden of learning different type rules.
Language DesignAPI DesignFramework Design
Expressiveness First
A language should allow developers to express the clearest intent with the least code; redundancy and ceremony are cognitive taxes.
Ruby blocks and the Enumerable module make functional-style code like `[1,2,3].map { |x| x * 2 }` extremely concise, requiring no temporary variables or indices.
Language DesignCode QualityProductivity Optimization
Ruby Design and Incubation Era
1993-1995
Building a language in Japan combining Perl's conciseness with Smalltalk's pure OOP
Dissatisfied with Perl's OOP support and Python's design philosophy, Matz decided to design Ruby himself. Deeply influenced by Smalltalk, Eiffel, and Lisp, he began implementation on February 24, 1993, and released Ruby 0.95 on a Japanese mailing list in December 1995.
Japanese Community Building Era
1995-2004
Promoting Ruby within the Japanese developer community and refining language design
Ruby quickly gained an active developer community in Japan. Matz continuously refined the language, releasing important versions like Ruby 1.6 and 1.8, while establishing community events like RubyConf. The 2004 release of Ruby on Rails brought Ruby to the global stage.
Global Influence Expansion Era
2004-2015
Driving Ruby to become a mainstream web development language through the Rails ecosystem
Ruby on Rails ignited global web developers' interest in Ruby; GitHub, Shopify, and early Twitter were all built on Ruby/Rails. Matz became an internationally recognized language designer during this period, giving numerous talks on language design philosophy.
Modern Ruby Evolution Era
2015-至今
Performance improvements and language modernization to compete with Python and Node.js
As Python 3 and Node.js rapidly gained market share, Matz led Ruby 3.0's '3x3' performance goal (Ruby 3 to be three times faster than Ruby 2), along with type annotations, concurrency improvements, and other modernization features, while maintaining the language's humanistic design spirit.