Foreword to the Second Edition
In ancient China, people, especially philosophers, thought that something was hidden behind the world and every existence. It can never be told, nor explained, nor described in concrete words. They called it Tao in Chinese and Do in Japanese. If you translate it into English, it is the word for Way. It is the Do in Judo, Kendo, Karatedo, and Aikido. They are not only martial arts, but they also include a philosophy and a way of life.
Likewise, Ruby the programming language has its philosophy and way of thinking. It enlightens people to think differently. It helps programmers have more fun in their work. It is not because Ruby is from Japan but because programming is an important part of the human being (well, at least some human beings), and Ruby is designed to help people have a better life.
As always, "Tao" is difficult to describe. I feel it but have never tried to explain it in words. It's just too difficult for me, even in Japanese, my native tongue. But a guy named Hal Fulton tried, and his first try (the first edition of this book) was pretty good. This second version of his trial to describe the Tao of Ruby becomes even better with help from many people in the Ruby community. As Ruby becomes more popular (partly due to Ruby on Rails), it becomes more important to understand the secret of programmers' productivity. I hope this book helps you to become an efficient programmer.
Yukihiro "Matz" Matsumoto
August 2006, Japan
Foreword to First Edition
Shortly after I first met with computers in the early 80s I became interested in programming languages. Since then I have been a "language geek." I think the reason for this interest is that programming languages are ways to express human thought. They are fundamentally human-oriented.
Despite this fact, programming languages have tended to be machine-oriented. Many languages were designed for the convenience of the computer.
But as computers became more powerful and less expensive, this situation gradually changed. For example, look at structured programming. Machines do not care whether programs are structured well; they just execute them bit by bit. Structured programming is not for machines, but for humans. This is true of object-oriented programming as well.
The time for language design focusing on humans has been coming.
In 1993, I was talking with a colleague about scripting languages, about their power and future. I felt scripting to be the way future programming should behuman-oriented.
But I was not satisfied with existing languages such as Perl and Python. I wanted a language that was more powerful than Perl and more object-oriented than Python. I couldn't find the ideal language, so I decided to make my own.
Ruby is not the simplest language, but the human soul is not simple in its natural state. It loves simplicity and complexity at the same time. It can't handle too many complex things, nor too many simple things. It's a matter of balance.
So to design a human-oriented language, Ruby, I followed the Principle of Least Surprise. I consider that everything that surprises me less is good. As a result I feel a natural feeling, even a kind of joy, when programming in Ruby. And since the first release of Ruby in 1995, many programmers worldwide have agreed with me about the joy of Ruby programming.
As always I'd like to express my greatest appreciation to the people in the Ruby community. They are the heart of Ruby's success.
I am also thankful to the author of this book, Hal E. Fulton, for declaring the Ruby Way to help people.
This book explains the philosophy behind Ruby, distilled from my brain and the Ruby community. I wonder how it can be possible for Hal to read my mind to know and reveal this secret of the Ruby Way. I have never met him face to face; I hope to meet him soon.
I hope this book and Ruby both serve to make your programming fun and happy.
Yukihiro "Matz" Matsumoto
September 2001, Japan