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.
|
|