Chad Perrin wrote:
> I pretty well loathe the Perl object model, and the syntax for
> references could use some work, but object oriented programming isn't
> the whole world of programming -- and Perl handles a lot of things with
> more elegance than most other languages (such as lexical closures, which
> are, frankly, slightly less clunky than Ruby's closures).  Ruby does a
> lot of things better than Perl, but there are some significant
> shortfalls, too.
>   
I don't think I've ever needed lexical closures. The structure of most 
of the code I write comes from the application domain rather than the 
language. My main application domain is extracting performance data from 
various text files and making coherent analytical models from it. A 
combination of Perl 4, R, and relational databases is what I've evolved 
over the years to do that, and that's the code I write and maintain on a 
daily basis.

Given the available libraries for Perl, Ruby and R, I _could_ do the 
entire job with any one of the three languages, at least on Linux. I 
might have trouble making Ruby do it all under Windows, but I haven't 
tried it.
> The notable thing that jumped out at me about Ruby when I discovered it
> is this: Between Perl and Ruby, I don't need to learn Python at all.
> I'm awfully glad for that, since Python basically makes my eyes bleed.
> Call it a personal failure if you like -- it is definitely at least
> mostly personal bias -- but that's the way it is.
>   
But I already know Perl ... my original comment was that I needed to 
unlearn it to learn Ruby. It's mostly syntactic -- curly braces, 
semicolons, scalars beginning with dollar signs, etc. I *never* liked 
the Perl dollar sign/at sign/percent sign syntax convention.

And I need to learn at least to read Python, because some of the 
software I use is written in it. I don't think I'd need to write Python 
code though.
> Frankly, I think one of the biggest reasons Java and, to a slightly
> lesser extent, Python get picked on more often than any other
> non-Microsoft languages in almost all programming communities is that
> both languages' communities tend to have sort of a "God's Chosen
> Language" sense of entitlement -- not universally, but just prominently
> enough that people tend to generalize.  Stereotyping both Java and
> Python, each in its own way, as inspiring a community of zealots is just
> an obvious thing to do when looking for a language to disparage.  It's
> probably quite unfair in both cases, of course.  In any case, I see
> hints of one-true-language-ism in every language community, sometimes
> more obnoxiously than at other times (including here).
>   
Actually, there *is* one true language. It's called the "formal 
semantics of programming languages". :) But more to the point, I think 
there are far too many "general purpose" programming languages.

A working programmer needs to know C, plus whatever languages are used 
in his or her shop. Regardless of what the designers and communities for 
those other languages intend(ed) them to be, they are in fact occupying 
an economic niche. They are special-purpose languages by that definition.

In this sense, Ruby is on the edge of becoming a special-purpose 
language as the engine underneath Rails. I don't have strong opinions 
about whether that's good or bad, but I do have a strong opinion that it 
is the economic niche that Ruby will occupy for the foreseeable future.
> Python's a great language, in principle, and is reportedly a great
> language in practice for those whose proclivities it suits.  It doesn't
> suit mine, so I'll stick to Ruby and Perl.  Java . . . well, let's just
> say that as far as I can tell it's not nearly as great a language as
> some seem to think.  I'd rather use Java than Visual Basic, but beyond
> that there isn't much competition with Java for its low ranking in my
> hierarchy of preferred languages.
>   
I once wrote a program in Java. This was in 1996 or thereabouts, and my 
reasons for using Java were:

1. It would run on Windows and all the flavors of UNIX that I was 
dealing with at the time. Visual Basic only runs on Windows.
2. It had hashes, garbage collection, a reasonable object model, and 
useful compile-time error checking.
3. It was faster than Perl for number crunching.

Java was a new language at the time -- I think it was Java 1.1. It was 
certainly before Swing, Java 2, etc. I've never had an opportunity to do 
any more Java programming, so I don't know how it is to the folks who 
use it for a living. What I *do* know, however, it that there are a 
*lot* of high-quality applications written in Java.
> I think that's quite enough off-topic rambling for one email.  The point
> of this last bit of nattering on, if it can be said to have a real
> point, is that every (reasonable) language has its advantages and
> disadvantages.
Even macro assembler? :) This *is* about performance, right?