I agree with those who say Ruby combines the best parts of Lisp, SmallTalk and Perl. It's definitely MUCH more agile language than Python. I just finally gave up trying to even learn Python after realizing how many stupid limitations there are. Python might be good for simple things, but Ruby scales a LOT better.
I might have told this before, but I learned Ruby by writing a portal server with it. Categorized bookmark-system, integrated Google (I mean, it displayed the result in the search portlet) search, forums, basic RDF-portlets, standalone HTTP implementation.... and it all took me about a three days. That is, three days from when I didn't know Ruby at all to the point I had the above stuff running on top of it. Granted, I didn't do HTTP/1.1-KeepAlive, and the whole thing was bit of a hack, but... The only thing I used besides standard libraries was the database libs.
There isn't much you can't do in Ruby with a few lines of code, and Ruby seems to have miraculous resistance to 'quick hacks'. Even sources which were written as quick hacks on top of quick hacks on top of quick hacks seem to stay maintainable MUCH better than any language I've ever seen.
Some of the definite highlights are passing blocks to functions (or capturing them as first-class closures), the iterators, first-class regular expressions, basic types that play nice with each other, Perl-style pronouns, extensible case-structure (it just calls a method to do the case comparisons, and you can have different types of "compare-agaist" objects in there), and the serious attitude towards OOP (everything, including 'nil', is an object, no exceptions).
Ruby was the first OOP language that really made me think that OOP might actually be an useful paradigm. It was only later I realized the reason I hadn't liked OOP before was because I had only see the C++/Java-school of OOP, and not the much more dynamic SmallTalk school.
|