hn-classics/_stories/2001/15455950.md

17 KiB
Raw Permalink Blame History

created_at title url author points story_text comment_text num_comments story_id story_title story_url parent_id created_at_i _tags objectID year
2017-10-12T05:57:52.000Z An Interview with the Creator of Ruby (2001) http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html jpelecanos 57 46 1507787872
story
author_jpelecanos
story_15455950
15455950 2001

Source

An Interview with the Creator of Ruby - O'Reilly Media

| ----- | | LinuxDevCenter.com |

| ----- | |

oreilly.comSafari Books Online.Conferences.

|
|

                    • |
                      |
                      advertisement |

| ----- | |

|  |
| |

Linux Content

All Articles

Interviews

Linux in the Enterprise

Security Alerts

Linux Topics

Administration

Browsers

Caching

Certification

Community

Database

Desktop

Device Drivers

Devices

Email

Firewalls

Game Development

Getting Started

Kernel

LDAP

Multimedia

Networking

PDA

Programming

Security

Tools

Utilities

[Web Design and Development][34]

[X Window System][35]

|

|  |

![][36]

[Print][37] [Subscribe to Linux][38] [Subscribe to Newsletters][39]

| ----- | | ! Goat head [40] |

An Interview with the Creator of Ruby

by [Bruce Stewart][41]
11/29/2001 |

Ruby has been described as an absolutely pure object-oriented scripting language and a genuine attempt to combine the best of everything in the scripting world. Ruby is written in C, and it was designed with Perl and Python capabilities in mind. While its roots are in Japan, Ruby is slowly but surely gaining ground in the U.S. Yukihiro Matsumoto (or "Matz" as he's known online) is the creator of Ruby and the author of O'Reilly's recently released book on the language, [Ruby in a Nutshell][42].

![][43]

Matz is a professional programmer who has worked for the Japanese open source company, netlab.jp. Matz is also known as one of the high-profile open source evangelists in Japan. He's released several open source products, including cmail, an emacs-based, mail-user agent, written entirely in emacs lisp. Ruby is his first piece of software that has become known outside of Japan. We recently spoke to Matz about Ruby's history, the influence Perl and Python had on Ruby, and why the world needs another scripting language.

Stewart: Let's start with a little history. Why did you decide to write Ruby?

Matz: Back in 1993, I was talking with a colleague about scripting languages. I was pretty impressed by their power and their possibilities. I felt scripting was the way to go.

| ----- | |

Related Reference

![Ruby in a Nutshell][44][Ruby in a Nutshell][42]
By Yukihiro Matsumoto With translated text by David L. Reynolds Jr.
[Table of Contents][45]
[Index][46]
[Sample Excerpt][47]
[Full Description][48]

|

As a long time object-oriented programming fan, it seemed to me that OO programming was very suitable for scripting too. Then I looked around the Net. I found that Perl 5, which had not released yet, was going to implement OO features, but it was not really what I wanted. I gave up on Perl as an object-oriented scripting language.

Then I came across Python. It was an interpretive, object-oriented language. But I didn't feel like it was a "scripting" language. In addition, it was a hybrid language of procedural programming and object-oriented programming.

I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python. That's why I decided to design my own language.

Stewart: When did you actually start writing Ruby, and how long did it take you to create a functional version?

Matz: I started developing Ruby on February 24, 1993. The first "hello world" program in Ruby ran in the summer of that same year. The first alpha version was released in December 1994.

Stewart: Did you do this alone, or did the open source community contribute significantly?

Matz: Until around 1996 I worked alone. Since then a Ruby community has formed, and they have helped me a lot. I'm still doing most of the work alone, but many people contribute their fixes and patches.

Stewart: How active is the open source community in Japan? How would you compare it to the U.S. Open Source Movement?

Matz: It's very active, but I guess it is smaller than the community in the U.S.

Stewart: How did you come up with the name "Ruby"?

Matz: Ruby is named after the precious gemstone, it's not an abbreviation of anything. When I started the language project, I was joking with a friend that the project must be code-named after a gemstone's name (àla Perl). So my friend came up with "ruby". It's a short name for a beautiful and highly valued stone. So I picked up that name, and it eventually became the official name of the language.

Later, I found out that pearl is the birthstone for June, and ruby is the birthstone for July. I believe Ruby is an appropriate name for the next language after Perl.


[An Introduction to Ruby][49]. Ruby is two parts Perl, one part Python, and one part Smalltalk, says Colin Steele, a developer who is smitten with this "diamond in the rough" of scripting languages.


Stewart: Did you have a guiding philosophy when designing Ruby?

Matz: Yes, it's called the "principle of least surprise." I believe people want to express themselves when they program. They don't want to fight with the language. Programming languages must feel natural to programmers. I tried to make people enjoy programming and concentrate on the fun and creative part of programming when they use Ruby.

Stewart: You're active on the Ruby mailing lists. What are the most common types of questions that come up there?

Matz: Everything from "How do I install it on a Windows 2000 box?" to "Will you merge my patch to fix your bug?". It's surprising that people in the Ruby community, having such a wide range of variety and given its size, still continue to be nice to each other. I believe the community is Ruby's greatest strength.

Stewart: One question I've seen repeated on threads at Slashdot and other sites when Ruby is mentioned is, "Why does the world need another scripting language?". What are your thoughts on this?

Matz: Does the world need another language? In theory, no. We just need the [Turing machine][50] to solve all of our problems, in theory. Humans require more sophisticated tools to program. It's a matter of human need. As long as some people feel happy using Ruby, that's enough of a reason for another language for me.

In addition, Ruby is designed to be human-oriented. It reduces the burden of programming. It tries to push jobs back to machines. You can accomplish more tasks with less work, in smaller yet readable code.

| ----- | |

I believe people want to express themselves when they program. They don't want to fight with the language. Programming languages must feel natural to programmers.

|

Stewart: I gather you had worked with both Perl and Python before creating Ruby. What bits of Perl did you incorporate in Ruby?

Matz: A lot. Ruby's class library is an object-oriented reorganization of Perl functionality--plus some Smalltalk and Lisp stuff. I used too much I guess. I shouldn't have inherited $_, $&, and the other, ugly style variables.

Stewart: How about Python? What aspects of that language did you try to reuse in Ruby?

Matz: Far less than Perl. But I stole a few things, like exception names. Plus I learned a lot from its code.

Stewart: Why should someone already familiar with Perl or Python switch to Ruby?

Matz: Why should you switch to Ruby? If you are happy with Perl or Python, you don't have to. But if you do feel there must be a better language, Ruby may be your language of choice. Learning a new language is harmless. It gives you new ideas and insights. You don't have to switch, just learn and try it. You may find yourself comfortable enough with Ruby to decide to switch to it.

Stewart: Why do you think Ruby has been so successful in Japan, but not nearly as popular in the U.S. and Europe?

Matz: Ruby has been known in Japan since its first public release in 1995. There was no English documentation until 1997. I didn't do any publicizing of Ruby in English until we started the [ruby-talk mailing list][51] in late 1998. So, it's pretty new to non-Japanese people. I guess that is the main reason.

Now we have English books about Ruby, like my [Ruby in a Nutshell][42]. The community is growing. Last year, virtually no one outside of Japan knew of Ruby. This year, people know Ruby is the name of a language. The situation will change a lot in the next three years.

Stewart: Are there cultural differences that come into play?

Matz: I don't think so. I designed Ruby to minimize my surprise. I was very much amazed when people around the world told me that Ruby reduced their surprise, and enhanced their joy of programming. Now I'm pretty sure that programmers' minds are alike all over the world.

Stewart: Do you have any future plans for Ruby?

Matz:

loop do
  read and reply mails
  write code
  write document/article/book
  write code
end

Stewart: What are you currently planning for the next version of Ruby?

Matz: I'd like to make it faster and more stable. I'm planning a full rewrite of the interpreter for Ruby 2.0, code-named "Rite". It will be smaller, easier to embed, thread-safe, and faster. It will use a bytecode engine. It will probably take me years to implement, since I'm pretty busy just maintaining the current version.


O'Reilly & Associates recently released (November 2001) [Ruby in a Nutshell][42].

  • [Sample Excerpt, Chapter 4, Standard Library Reference][47], is available free online.
  • You can also look at the [Table of Contents][45], the [Index][46], and the [Full Description][48] of the book.
  • For more information, or to order the book, [click here][42].

[Yukihiro Matsumoto][52], the creator of Ruby, is a professional programmer who worked for the Japanese open source company, netlab.jp.

[_Bruce Stewart][41] is a freelance technology writer and editor. _


Return to the [Linux DevCenter][53].

|  |  |  |

| ----- | |

Linux Online Certification

![Linux/Unix System Administration Certificate Series][54]
[Linux/Unix System Administration Certificate Series][55] — This course series targets both beginning and intermediate Linux/Unix users who want to acquire advanced system administration skills, and to back those skills up with a Certificate from the [University of Illinois Office of Continuing Education**][56].

[Enroll today!][55]

|

| ----- | |

|

![Linux Resources][57]

  • [Linux Online][58]
  • [The Linux FAQ][59]
  • [linux.java.net][60]
  • [Linux Kernel Archives ][61]
  • [Kernel Traffic][62]
  • [DistroWatch.com][63]

|  |

Sponsored by:

![][64]

|

| ----- | |  |
|

![O'reilly][65]

© 2017, OReilly Media, Inc.

(707) 827-7019 (800) 889-8969

All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.

About O'Reilly

  • [Sign In][66]
  • [Academic Solutions][67]
  • [Jobs][68]
  • [Contacts][69]
  • [Corporate Information][70]
  • [Press Room][71]
  • [Privacy Policy][72]
  • [Terms of Service][73]
  • [Writing for O'Reilly][74]

Community

  • [Authors][75]
  • [Community & Featured Users][76]
  • [Forums][77]
  • [Membership][78]
  • [Newsletters][79]
  • [O'Reilly Answers][80]
  • [RSS Feeds][81]
  • [User Groups][82]

Partner Sites

  • [makezine.com][83]
  • [makerfaire.com][84]
  • [craftzine.com][85]
  • [igniteshow.com][86]
  • [PayPal Developer Zone][87]
  • [O'Reilly Insights on Forbes.com][88]

Shop O'Reilly

  • [Customer Service][89]
  • [Contact Us][89]
  • [Shipping Information][90]
  • [Ordering & Payment][91]
  • [The O'Reilly Guarantee][92]

|

[34]: [35]: http://www.linuxdevcenter.com/topics/linux/x_window_system [36]: http://adserver.adtechus.com/adserv/3.0/5159/425846/0/16/ADTECH;loc=300;key=key1+key2+key3+key4;grp=[group] [37]: http://www.linuxdevcenter.com/lpt/a/1369 "Go to a print-friendly version of this page." [38]: http://www.oreillynet.com/pub/feed/2 "Subscribe" [39]: http://www.oreillynet.com/cs/nl/home [40]: http://www.linuxdevcenter.com/images/animals/ruby_goat_head.gif [41]: http://www.linuxdevcenter.com/pub/au/122 [42]: http://www.oreilly.com/catalog/ruby/ [43]: http://adserver.adtechus.com/adserv/3.0/5159/425847/0/170/ADTECH;loc=300;key=key1+key2+key3+key4;grp=[group] [44]: http://www.linuxdevcenter.com/images/books/ruby_nutshell.gif [45]: http://www.oreilly.com/catalog/ruby/toc.html [46]: http://www.oreilly.com/catalog/ruby/inx.html [47]: http://www.oreilly.com/catalog/ruby/chapter/ch04.html [48]: http://www.oreilly.com/catalog/ruby/desc.html [49]: http://www.oreillynet.com/pub/a/linux/2001/10/25/ruby.html [50]: http://plato.stanford.edu/entries/turing-machine/ [51]: http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml [52]: http://www.linuxdevcenter.com/pub/au/714 [53]: http://www.linuxdevcenter.com/linux/ [54]: http://www.oreilly.com/images/oreilly/blurbs/OST_140.gif [55]: http://www.oreillyschool.com/courses/system-administration.php [56]: http://www.oreillyschool.com/why/illinois.php [57]: http://www.linuxdevcenter.com/images/icons/resources_header.gif [58]: http://www.linux.org [59]: http://en.tldp.org/FAQ/Linux-FAQ/index.html [60]: http://linux.java.net [61]: http://www.kernel.org [62]: http://www.kerneltraffic.org [63]: http://www.distrowatch.com [64]: http://adserver.adtechus.com/adserv/3.0/5159/425850/0/154/ADTECH;loc=300;key=key1+key2+key3+key4;grp=[group] [65]: http://cdn.oreillystatic.com/images/sitewide-headers/logo02.gif [66]: http://www.linuxdevcenter.com# [67]: http://oreilly.com/academic/ [68]: http://oreilly.com/jobs/ [69]: http://oreilly.com/contact.html [70]: http://oreilly.com/about/ [71]: http://press.oreilly.com/index.html [72]: http://oreilly.com/oreilly/privacy.csp [73]: http://oreilly.com/terms/ [74]: http://oreilly.com/oreilly/author/intro.csp [75]: http://oreilly.com/authors/ [76]: http://oreilly.com/community/ [77]: http://forums.oreilly.com/ [78]: https://members.oreilly.com/ [79]: http://elists.oreilly.com/ [80]: http://answers.oreilly.com/ [81]: http://oreilly.com/feeds/ [82]: http://ug.oreilly.com/ [83]: http://makezine.com/ [84]: http://makerfaire.com/ [85]: http://craftzine.com/ [86]: http://igniteshow.com/ [87]: https://www.x.com/community/ppx/devzone [88]: http://blogs.forbes.com/oreillymedia/ [89]: http://shop.oreilly.com/category/customer-service.do [90]: http://shop.oreilly.com/category/customer-service/shipping-information.do [91]: http://shop.oreilly.com/category/customer-service/ordering-payment.do [92]: http://shop.oreilly.com/category/customer-service/oreilly-guarantee.do