CIPS logo

Canadian Information Processing Society

 

CIPS logo

 

News from National -- Current Articles

12/21/2001 9:40:37 AM
Ruby Creator Y. Matsumoto
Interview by S. Ibaraki, I.S.P.

This week, Stephen Ibaraki, I.S.P., has an exclusive interview with the world renowned, Yukihiro Matsumoto, the creator of Ruby and the author of O'Reilly's recently released book on the language, "Ruby in a Nutshell."

*****
Q: First of all, thank you Yukihiro for agreeing to this interview. What does your family think about your career as a world famous developer?

A: You're welcome. I guess (and I hope) they are proud of their
husband/father. But at the same time, they feel Ruby took their
husband/father from them. I feel sorry for them sometimes.


Q: Many young programmers would benefit from reading about you and your career. How did you get into computing? What career moves have taken you to get to your current position as one the world's best known, high-profile open source gurus?

A: In 1980, my father bought a handy calculator sized computer. It had BASIC on it. I played with it a lot. That was the beginning. Soon after that, I became to hate BASIC, and was interested in better programming languages. I went to bookstores and libraries to seek better language. I learned Pascal, LOGO, and Lisp from books in my highschool age. Since I was living in the country region of Japan, I couldn't find any computer that has those better languages. So I repeatedly read books and grew my interest to the languages. I guess that experience made me a language geek. I even wanted to design my own language.


Q: You have released several open source products, including cmail, an emacs-based, mail-user agent, written entirely in emacs lisp. Can you describe the products?

A: cmail, formerly known as chain mail, is a MUA written entirely in emacs lisp. It is a full featured MUA, which supports POP3, IMAP4, MIME, PGP, BBDB, automatic mail refiling, message expiration, etc. Many emacs freaks in Japan (including me) use this MUA. This is provided as an official Debian package. I'm no longer supporting cmail. The cmail community takes care of it now.

Other products of mine are rather small ones, like ruby-mode for
emacs, and an user front end to Namazu the full text search engine.


Q: Ruby is pure object-oriented scripting language, written in C, and designed with Perl and Python capabilities in mind. Can you describe Ruby in more detail and when and why you wrote Ruby?

A: Ruby is a dynamic object-oriented language. Unlike other
"scripting" languages, object-oriented programming feature in Ruby is not an "add on". Ruby is an object-oriented language enhanced for scripting programming, others are scripting languages enhanced for object-oriented programming. The design of Ruby is followed by the principle of least surprise, which hopefully makes your programming happy. Because of these characteristics, I call Ruby an "human oriented language".

And why did I write Ruby? Ah, I just wanted to write one.
I didn't understand why many language designers made design choices differed from mine. I really wanted to know whether my design worked well or not. So I made Ruby. Now I feel my choices are right, at least certain amount.


Q: What education and skill set did you need to write Ruby?

A: I majored in the computer science, learned about programming
languages (attribute grammar etc.). But I'm not sure it was required to write Ruby. I read bunch of opensource software sourcecode, for example Perl, Python, and many flavors of Lisp interpreter. I know they were needed to write Ruby.


Q: What is the best place to find out more about Ruby?

A: My site, http://www.ruby-lang.org/ is a good start. You can also find useful information from http://www.rubygarden.org/,
.


Q: In what ways do you feel Ruby is superior to Perl or Python?

A: It makes me (and hopefully you) feel better in programming.


Q: What would say are the current weaknesses in Ruby?

A: Lack of CPAN like library archive is the weakness. We have
something similar called RAA (Ruby Application Archive) at
http://www.ruby-lang.org/en/raa.html. It would be a good starting
point.


Q: Where do you see Ruby evolving in the next two years and five years?

A: The language itself would not evolve much in the future. The
syntax is stable for the last few years. I (and others) will work on the implementation. JRuby http://jruby.sourceforge.net is one of such implementation. It is an independent Ruby implementation based on Java.

I will start working on the new interpreter code-named Rite. It will be bytecode based virtual machine. It would be faster, more stable, and require smaller memory footprint.


Q: Can you talk about your book on Ruby? What made you decide to write it and where is it available?

A: "Ruby in a Nutshell" is a translation of my second book, "Ruby
Pocket Reference (Japanese version)". Since translated materials are too big for a pocket reference, O'Reilly editors decided to make it full-sized book. So I had to write additional manuscript. It was a tough experience for me to write English manuscript. At the moment, I wished I were born in English speaking country, for the first time of my life.

Q: Can you share your 10 top tips for those thinking of getting into the computing field? Can you describe your role with your company and how you plan to shape the company one year and two years into the future, and in the long term?

A:

  • Learn more than one programming languages, preferably many different style ones, like scripting, object-oriented, functional, logic, etc. Learning languages teaches you many about programming.
  • Read good books, for example, "Pragmatic Programmers", "Refactoring", and "Art of Computer Science".
  • Read the source code. The source code is the source of information and knowledge. Thanks to the opensource.
  • Don't focus too much on tools. Tools changes. Algorithms and basic fundamentals don't.
  • Don't focus too much on machines. Programmers often fall in the computer's view point. But human make programs, programs serve human. Don't forget that programming is a human oriented activity.
  • Be lazy. Machines should serve human being. Often programmers serve machines unconsciously. Let machines serve you. Do everything you can to make you lazy.
  • Test early, test often. Write test suites before you code, if possible.
  • Be nice to others. Consider interface first, man to man, man to machine, and machine to machine. Again, remember, human factor is important.
  • Be creative.
  • Enjoy programming and life. I believe that is one of the purposes of life.


Q: Can you describe your role with your company and how you plan to shape the company one year and two years into the future, and in the long term?

A: I'm a senior research fellow in the netlab.jp (aka NaCl), the
Japanese opensource based system integration company. They sponsor Ruby as their evidence of devotion to the opensource movement. We are exploring the path for long running business with opensouce products, such as Linux, Apache, PostgreSQL, and of course Ruby.


Q: You have a reputation for being plugged into the stream of computing consciousness about where it's going now and in the long term. You've also done a lot of research. Can you comment on the studies that you've performed what you have learned, and your experiences? Where technology is today and where is it going?

A: Technologies come and go. But wetware don't change that fast.
Most of basic principles today already existed yesterday, and will stay effective tomorrow. For example, Lisp language was born in 50s, but it still is a bleeding edge language. People's life changed a lot recently by the Internet. But it has been there for more than 30 years.


Q: What are your views on top four programming environments and their future?

A: I just wish my favorite environments (Unix, Emacs, C, and Ruby) remain forever.


Q: For those relatively new in the computing field and for seasoned veterans, which 10 areas should they target for future study, what are the high-growth areas, and can you provide specific advice? What changes do you see for the future of computing, conducting business, and the use of the Internet?

A: Ah, I wish I knew the future. I'm not good at prophecy, although I believe it exists.


Q: What additional books are you planning in the near and far term? What would you do different if you started again, having gone through this authoring experience over the years?

A: I'm working on the English translation of my first book from
Addison Wesley. It again is tough experience. I have no plan to
write another book. I'd rather be a programmer and a language
designer. Writing a book is much harder than writing software (for me, at least).


Q: What would be your recommended top ten references for the serious developer?

A: Today, you can get everything you need from the Internet. Try google and other global search engines.


Q: It's a blank slate, what added comments would you like to give to enterprise corporations and organizations?

A: Don't underestimate the human factor. Even though we're in front of the computers, they are media. We are working for human, with human.

 

 

 

Copyright © 2000, 2001 Canadian Information Processing Society All rights reserved. Terms of Use Privacy Statement