Wednesday, January 14, 2009

Reasons behind Ruby, by Yukihiro 'Matz' Matsumoto

I watched the RubyConf '08 keynote from Yukihiro Matsumoto, the man behind the Ruby language. It was fun to watch and listen to the man who summoned so many people in the Ruby community since its early days in 1995.


Here are my highlights of his presentation.

Why did Matz invent Ruby?

As he puts it himself, quite simply, he wanted to design his own language to maximize his freedom. He wanted to design a language in which he could love programming.


Why we love Ruby?
  • it's enjoyable
  • it made programming fun again

Basic vs Lisp

Basic is the first programming language with which Matz played with. Obviously he liked it at the time, but he remembers the frustrations:
  • no command can be added
  • no data type can be added
  • no abstraction
In sum, there was an unbreakable barrier between language's designers/implementers and programmers.

Later on he delved into Lisp and it felt like belonging to another world, compared to Basic. Here are a few reasons why Lisp felt good:
  • no discrimination
  • extreme abstraction
  • you can change everything
In other words, Lisp is clearly in opposition to Basic. Each of these programming languages belongs to a specific world.


Aristocracy and democracy

Describing the comparison using another perspective, he goes as far as saying that Basic is aristocracy, whereas LISP is democracy. The idea is that aristocracy confines power to a few, whereas democracy imposes rules and restricts its people from 'advanced thinking'.

The two languages are at two extremes:

Basic gives you no power; LISP gives you full power. - Matz

But neither extreme is good. At each extreme you lose 'popularity'. In the end, it's a matter of balance:

"I am happy with aristocracy as long as I have power and be able to become designer when I want" - Matz

Although he never explicitly says it, Ruby is the programming language that comes in the middle of those two extremes.


Ruby in terms of DSL

There was an interesting part on DSL's. When you think about it:
  • Ruby on Rails turns out to be a Ruby DSL for the web
  • Rake is a DSL for building apps
  • RSpec is a DSL for tests
Focusing on the DSL increases the overall productivity. And for a second time during his presentation, he quotes Dave Thomas:

Programming is a process of designing DSL for your own application - Dave Thomas

To sum up, Ruby is a suitable language for designing a DSL, which provides high-level blocks/tools in order to ease the development of applications.


Parting words


Similar to some complaints emanating from the Rails community about Rails getting into mainstream, Matz clearly has a word for caution about Ruby's growing commercial success. He cares about the community and wishes that Ruby people will keep their current enthusiasm.

And lastly, with his humble attitude and generous smile, he finishes his presentation saying that "love is the very reason behind Ruby", "I love you all".

No comments: