Careers: Interviews
Ruby Creator Y. Matsumoto
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. |
|
|