From: Tim Hammerquist Date: 2002-08-12T08:26:26+09:00 Subject: Re: Choosing ruby? Rhymes graced us by uttering: > " JamesBritt" wrote: > > You don't. Python is a very capable language. That said, many > > people with Python experience have decided Ruby better suits their > > needs. > > Thanks for the link. I decided to take a look at the Ruby doc (I've > downloaded ruby 1.66 package for win containing a whole book) but I > think I'll don't like much its syntax cause I don't like Perl's at > all.. Yup, with an anti-Perl attitude that strong, you're definitely a Pythonista. =) Honestly, I started using Perl. On recommendation from a Perl user on comp.lang.perl.misc, I tried Python and I was very pleased with how clean Python's syntax was. I then looked into Ruby due to a similar recommendation. Ruby initially looked like a cross between Python and (*GASP!*) VB (because of the "end" keyword). But I'd also heard a lot of OO advocates sing Ruby's praises wrt it's object model... And they were right! Perl's OO model is a nasty, ugly hack. But it's regex support is unmatched. However, (and this ticks off Pythonistas to no end) I see a poetry and beauty in Perl's syntax. But this doesn't mean it's perfect (or even a remotely good idea) for other languages. Python's OO model is still quite awkward for me (Py v2.2), thought it _is_ making a lot of progress. It has regex support, but is also very awkward because of the seemingly forced object interface, reminding me (unpleasantly) of Java. OTOH, I *LOVE* Python's indentation-based statement grouping! Oh yeah, Python's threading is quirky on some systems. Ruby is neither of the above languages. - It supports regex's in both an object interface (a la Python) and via Perl-style variables. - Ruby's object system is beautiful, elegant, and practical. It's much more "pure" (in the Smalltalk definition) than either Perl or Python and allows you to retroactively modify pre-existing instances of an object at runtime by modifying their class. (See for an example). - Its syntax contains elements of Perl's regexps, but any perceived similarity to Perl's variable system is strictly coincidental. eg: Perl Ruby ---- ---- var lexical variable Var constant lexical variabls $var scalar variable global variable @var array variable object instance variable @@var class variable Any variable can hold any type of data. The format of the variable's name merely dictates how it may be accessed. Alright, so it's obvious I like Ruby. =) I use it for admin, editor scripting (Vim ), and medium to larger projects. My only hope is that you take Ruby for what it is, and not for what it might resemble at a glance. Happy coding! Tim Hammerquist -- BOUNDARY, n. In political geography, an imaginary line between to nations, separating the imaginary rights of one from the imaginary rights of the other. -- Ambrose Bierce, The Devil's Dictionary