What will a Python programmer gain by learning Ruby?
Question: I am going to be learning **Ruby** , **Haskell** and **Prolog** at university.
Now, I'm wondering what should get most of my attention. I have half a year to
do all three, which means I need to decide on one language to get my
extracurricular time. The others I will learn just enough to do very good in
the course.

I am familiar enough with Haskell and Prolog to know that learning them will
teach me a few very important concepts of computer science. I'm not so sure
about ruby.

Going through a few tutorials and introductions, I get the impression that
ruby is a lot of _shallow magic_. Now I'm asking the ruby people: What will I
have gained, should I decide never to use it again, after I've spent half a
year learning it, that Python didn't already teach me.

This question is not intended to "make the case" for ruby, although I realise
this is a potential topic of great argumentation.

I use Python for all my CS work now. I have done quite a bit of functional
programming with it as well. I am also, already, quite familiar with object
oriented programming (in Java, Python and C#). And I will, as I said, do some
Logical programming with Prolog.

**What then is left for Ruby to teach me?**

To further dilute the question:

  * I'm not interested in writing fun programs, or cool web applications. I'm just interested in the Computer Science bits. Implementing algorithms, data structures and so on. (Although having fun surely won't hurt)

  * Ideally, concepts discussed need to be learnable in about 1.000 hours.

  * I'm not at all interested in _Rails_. Any technology that hides complexity is, in this case, detrimental. 

I can't help this question being argumentative. But an ideal answer to this
question will mention a profoundly important concept of theoretical computer
science that ruby helps the programmer use and understand in order to gain
scientifically adjuvant knowledge.

To candidates I came up with are Meta-programming and Multi-threading. I don't
know if ruby is particularly great to learn either of them.


Answer: For the most part, nothing. Most of Ruby's strengths/weaknesses are the same
as Python's, except that Ruby is slightly more "functional". However if you
have Haskell as an option, much more can be learned about functional
programming from Haskell than from Ruby.

Second, if you're looking at things from a theoretical computer science
perspective, then Ruby is far from a language of choice. Ruby and a lot of its
libraries break a lot of standard OOP dogma which I believe many academics
would find repulsive (this is based mainly on my chats about languages with
various professors).

From an academic perspective I think Haskell would have the most appeal to
you. If you're interested in AI or logic, then Prolog is also an excellent
choice.

