The State of Ruby VMs — Ruby Renaissance
igrigorik writes "In the short span of just a couple of years, the Ruby VM space has evolved to more than just a handful of choices: MRI, JRuby, IronRuby, MacRuby, Rubinius, MagLev, REE and BlueRuby. Four of these VMs will hit 1.0 status in the upcoming year and will open up entirely new possibilities for the language — Mac apps via MacRuby, Ruby in the browser via Silverlight, object persistence via Smalltalk VM, and so forth. This article takes a detailed look at the past year, the progress of each project, and where the community is heading. It's an exciting time to be a Rubyist."
I'm glad to see so much work is being done on Ruby, and especially that people are working on compiling Ruby to native code. Ruby is a great language, but there is no denying that the old implementation (MRI 1.8 and before) is dog slow.
Please correct me if I got my facts wrong.
``I've gotten to use Python in the last couple of years - it's concise, expressive, whole lot less verbose (compared to Java, C)''
On those issues, Ruby isn't very different. In fact, I think the reason there are so many heated debates about which of Ruby and Python is better is exactly because, all things said and done, the differences don't matter that much and your preference is largely a matter of taste.
``but bit problematic when trying for tighter design with bigger scopes.''
Ruby borrows features from other great languages like Lisp and Smalltalk, which allow it to more naturally express paradigms other than imperative, and classes-and-methods. On the other hand, there is something to be said for Python's "one way to do it", as well.
Comparing Ruby and Python, I find that Python programs tend to have cleaner syntax (fewer hieroglyphs in the code) whereas Ruby programs tend to have cleaner structure (program more closely expresses what is being done because the language is multi-paradigm).
For programming in the large, both languages have about the same advantages and disadvantages: you have metaprogramming, which is a big plus, but no static checking, which is a minus. Personally, I feel like metaprogramming is an integral part of Ruby programming, whereas, in Python, it runs contrary to the spirit of "one way to do it", but Python does support metaprogramming and plenty of people are putting it to good use.
``What are the pluses/minuses of Ruby compared to Python? Has it dumped all its Perlism now? (I looked at Ruby briefly years back).''
Ruby definitely hasn't dumped its Perlisms. That's both a blessing and a curse: on the one hand, it allows for ugly programs, on the other hand, sometimes it's useful to say in a few hieroglyphs what would otherwise require lots of boilerplate code. Again, taste plays a role, but I must note that many languages that forgo Perlisms usually end up adopting regular expressions anyway, only with less power and more leaning toothpick syndrome. Given the choice, I'd rather have first-class regular expressions like Perl, even though they are the worst offenders in making Perl code look like line noise.
Basically, if you like Python for its purity, you'll probably detest Ruby. It's messy. But if you like Python for its expressive power, you may like Ruby because it offers you more of that. If you like Python but want static typing, don't bother with Ruby, because it won't give you that. You might be better off trying OCaml, Haskell, or Common Lisp (with appropriate compiler) in that case. If you're looking for speed, those are better options, too.
Please correct me if I got my facts wrong.
Negatives:
Don't blame me, I voted for Baltar.
Truly spoken like someone who doesn't know appear to know anything about Javascript, and has never programmed anything significant in it. Or Ruby either for that matter. If you do, you should have backed up your comments with real evidence and experience rather than just a few silly expletives.
How does Ruby retain Perl's syntax but not the semantics? Sounds like you're making this up. Have you ever coded anything significant in Ruby? I don't care for Ruby's syntax either (the ability to call functions with () means you can pass functions around as parameters), but that doesn't make Ruby any less powerful as a full OOP, dynamic language.
As for Javascript, try using it for something significant sometime. Write a firefox plugin or something. Javascript is here to stay and is the mainstay of client-end user interface code. Javascript is an extremely powerful and dynamic language, akin to smalltalk in it's power and flexibility. Javascript uses a prototype-based style of OOP that takes some getting used to but is very powerful indeed. Even better Javascript has functional and lisp-like qualities to it. Javascript has its warts. Some of them are apparent if you've ever used Gnome Seed with GTK binding, from what I've read.
Despite all this I'd rather use python in the browser to script DOM objects, but ahh well. I'm also bitter that epiphany dropped Python in favor of Javascript for writing Epiphany plugins. Sigh.
Faggot, I've had the misfortune of using both JavaScript and Ruby (for web development and scripting) more than you likely ever have, and ever will.
Or perhaps you're just some internet blowhard who likes to play to the peanut gallery? As you demonstrate very little in the way of knowledge in your posts, we'll never know. Your silly pronouncements of superiority in spite of very little knowledge of your interlocutor certainly make this a distinct possibility.
Have you looked at the syntax of Perl and Ruby? The vast similarities should be pretty clear to everyone but the stupidest of mental retards...then fuck off. You'll need to use both Ruby and Perl to experience Ruby's weak semantics compared to Perl.
You claimed that Ruby kept most of the syntax of Perl, but not the 'semantics' whatever that means in this context. Care to explain what you think it means, because you haven't so far?
I've used both, and there are similarities, but there are also many significant differences. The object system in Ruby is far less a tacked on afterthought, you don't have to declare variables with a prefix so there is less line noise, everything is an object, nicer blocks, etc. There is also quite a tradition of choosing the way which seems least surprising and sticking to it, as opposed to 'There is more than one way to do it' in Perl - that means radically different library classes.
The syntax of Ruby encourages legibility but keeps most of the shortcuts (in regexp for example) of Perl, while avoiding the horrific write-once possibilities of Perl which you seem to be so proud of (i.e. stuff can be done in fraction of a line of code); just because it can be done in half a line doesn't mean it should.
There is a spectrum from code which is far too verbose to code which is far too succinct (i.e. unintelligible even to the creator after a certain period), and I'd say Perl can be pushed too far to the succinct side, but that's personal preference really. It's quite possible to write good Perl code, but that doesn't make it the be all and end all of scripting languages, indeed several other languages are now more suitable for scripting if you prefer an object-oriented approach.
While I must agree with the sentiment that people who cheerlead for a certain language as radically different from all others need an education in the history and diversity of computer languages, to claim that Ruby is a bad copy of Perl without qualifying the statement betrays your lack of knowledge of the language, nothing more.