Take the 2-minute tour ×

Most programming languages have some design decisions that influence their usage and applicability.

For example:

  • Python focused on maintainability/readability of code and had indentation be a part of the language itself.
  • Java's intention was to be cross platform OOP 'easier' and 'friendlier' than C++
  • Objective-C was built as an OO wrapper around C not knowing the future of C++ at the time
  • Erlang is designed for highly fault tolerant and concurrent systems
  • PHP designed for handling dynamic creation of web pages
  • CoffeeScript designed to expose the good parts of Javascript and adding OOP syntactical sugar and hiding the nuances (globals etc.) of JS 'behind the scenes' etc.

Each programming language tried to exploit and capitalize on a particular niche IMHO. The above are my perspectives on what were the founding principles of the programming languages and that governed their evolution and widespread adoptability. Of course, there are many more, but the list is only intended as an example

However, I've struggled to understand the founding principles on which Ruby is based and its growing popularity. What were the founding principles of Ruby that makes it popular today? Or is it the genius of one man who designed the Rails framework? If the latter was it that Ruby made the designing of Rails better/easier/faster? In what sense?

The most commonly cited reason as per its creator is '...wanted a fun weakly typed programming language' - I don't see that as a reason for creating a new programming language altogether! Programming is sheer fun IMHO irrespective of the language (each language has some bad parts, but one either gets around it or lives with it).

So what niche did (or does) Ruby exploit that isn't exploited by the current languages? What is the 'strong point' (USP) of Ruby that has led to its widespread adoptability? What did Ruby do that wasn't done before (or was extremely difficult)?

I'm not a Ruby programmer, but just a Ruby noob and hence the confusion.

Disclaimer: This is NOT a flame war and I'm not looking for Ruby vs Programming language type of answers. I am looking for the design decisions on which Ruby is based that has led to widespread adoption. What niche does Ruby satisfy to have become popular or is that purely attributed to Rails?

share|improve this question
add comment

closed as primarily opinion-based by MichaelT, GlenH7, Dynamic, Robert Harvey, thorsten müller Jul 10 '13 at 14:48


4 Answers

up vote 9 down vote accepted

I guess Ruby took off for many reasons:

  • The Rails framework. Rails assembled together many useful patterns to ease the development of web applications and boosts developer's productivity. Compare this to Java's verbose and tedious web development and the "one man show" .NET platform. Creating weblog web applications in minutes was a jaw dropping.
    You can see the "Rails effects" on many new JVM web frameworks like Grails, Play! and Spring Roo.
  • Success stories like Twitter and Github. Startups needs to hit the market as soon as possible and with Rails, this is possible. Success stories were an evidence.
  • Ruby programming language itself is beautiful, powerful and expressive. IMHO, Ruby is the secret sauce of Rails success.
    Look at the beauty of Cucumber and Sinatra, the beauty of DSLs done right.
  • Eager and brave community that isn't afraid to experiment and innovate.
  • (Personal opinion and may not be vital reason) It is created in Japan. Nothing beats the image of "Made in Japan".
    To me, learning programming languages created in different countries is the same as meeting new people. It is fun and educative.
    Ruby/Japan, OCaml/France, Lua/Brazil, Lisp/Mars :)
share|improve this answer
Curious as to what you mean by "the one man show .NET platform", it's not a phrase I've heard before? –  Carson63000 Mar 13 '12 at 23:58
+1 for Lisp/Mars. Where does that place Haskell? –  Adam Mar 14 '12 at 3:28
Haskell comes from deep within the earth where an army of small dwarf like developers created it with the intention of confusing OO programmers –  jozefg Mar 22 '12 at 2:46
@Adam "The Atlantis Civilization" –  Chiron Mar 22 '12 at 21:41
add comment

This doesn't directly answer the title question, but addresses some points raised (i.e. why Ruby was created)

Quotes from Yukihiro 'Matz' Matsumoto, creator of Ruby, which may help explain what inspired its creation:

  • "I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python"

So basically, Matz wanted an extremely object-oriented language that was designed for programmer happiness.

share|improve this answer
add comment

First, Ruby is a "current language". Maybe you mean "Languages that were popular when Ruby was created in 1995."

I like Ruby for the same reasons I liked Perl:

  1. It's powerful and expressive. I can write about one line of Ruby code instead of five lines of Java or C++. There is no repetition that can't be factored out with minimal fuss.

  2. It's dynamic. Methods and properties can be created at run-time, so I can wrap objects around externally defined things, like database tables, without duplicating the definition of those things, and without rebuilding the application.

  3. There is an excellent book on the language (Programming Ruby) that is both readable and comprehensive.

  4. There is a single repository for public-domain packages, and a convenient command-line interface to the repository.

But I like Ruby better than Perl because it's more readable.

There are numerous pages comparing Ruby with Python. I like them both. I prefer Ruby, but I have limited experience with Python.

share|improve this answer
I remember reading it was hoped that (what would become Ruby) would become good enough to replace Perl in the foreword of Programming Ruby. –  Rig Mar 13 '12 at 21:44
@kevin: Those are some of the features of the language and I'm well aware of them. However, I'd like to know the 'reason for creating Ruby' other than "I want a fun/weakly typed language" (or is that reason itself big enough?? –  PhD Mar 13 '12 at 21:45
@Nupul: These things aren't done by committee. Matz took a notion and wrote Ruby. He showed it to some other people after a while, and some of them liked it. That's how LISP, Smalltalk, C, C++, Pascal, Perl, Ruby, and Python were created. I think it's the same for most programming languages. Only a few were created by committee or corporate initiative. –  kevin cline Mar 13 '12 at 21:54
add comment

Ruby (togehter with rails) made the convention over configuration popular.

The old (non ruby on rails) way was

  • Define a database table "persons" with a field named "birthday"
  • Define a business class "person" with a property "birthday"
  • write a helperclass for transfer data between database and businessclass
  • create a gui that how persons in a list
  • create a gui to edit one persons properties

With convention over configuration the base work for this is done automatically:

  • you define a person in code
  • database table, mapping, gui-elements, are automatically created for you by a powerfull interpreter or codegenerator

contras: you have to learn all the cenventions so learning ruby on rails on the first run is harder.

pros: once you know the conventions it is quite easy to understand code of other ruby on rails developpers because every one is forced to follow the same conventions.

meanwhile convention over configuration has entered into many coding eco-systems

share|improve this answer
add comment
