M. Edward (Ed) Borasky said:
Incidentally, where I disagree is that I think there are six families:
1. Macro assemblers
2. Algol
3. Lisp
4. APL
5. Forth
6. Smalltalk
I'm just curious; where does Haskell fit in this? I think in this
taxonomy it might fall under "lisp" because of the broad "functional"
language category, but I've found that doing serious stuff in Haskell
stretches my mind more than the bits of common lisp I've learned (but
that's probably because I have never gotten heavily into CL macros).
I remember several years ago someone responded to a slashdot interview
question with a list of about twelve language categories, with several
languages fitting into multiple categories; the idea was that a
well-rounded programmer would know at least one language from each
category. I'll see if I can find it.
As for the original subject of this thread, I just find ruby more fun
to program in. I definitely do not think that ruby code is more
obvious to the untrained eye than other languages - if that were the
only category, python would indeed win. However, the experience of
writing python feels like explaining things in detail to a somewhat
dim coworker. While there's something to be said for that approach, I
find that it often gets in the way of what I want to do - I want a
fast way to translate ideas into running code. Since there's not yet
a telepathic compiler, we're stuck with using some sort of language,
and I see no reason to use a language more cumbersome than necessary.
I suppose that the whitespace usage comes into play here, although I'm
definitely not opposed to using significant whitespace, having been
bitten a few times by ruby code that looked right indentation-wise but
left off the "end". I just wish python whitespace were optional the
way it is in Haskell.
That being said, the dynamic language I use the most is still perl. I
was never nearly as put off by all the bits of "snoopy swearing" as
some people seem to be - I suppose I learned perl at a time when my
mind was flexible enough that it just twisted certain structures into
a perl shape. Perl also has the advantage of being much faster for
most operations than ruby or python.
When I want to move text A in spot one over to text B in spot two, I
use perl. That's what it's for, and it does that job amazingly well.
(It's not all regexps either. The one-liner to convert fixed length
records into newline-delimited regexps is nice and tight.) It's
disturbing how many business problems boil down to moving text from A
to B.
When I wanted to document an algorithm for my father (who speaks none
of the same computer languages I do aside from C/C++, and has spent
his career largely in VB or at the VB/COM interface), I used python.
I was already doing extensive documentation, so at that point...
When I want to play with programming, I choose ruby. When I want to
experiment, and don't really know where I'm going to end up, or how
I'm going to want to do something, ruby is there and ready to be
twisted however I want. In short, when I want to have fun, I choose
ruby.
(those business analysts who are looking at this and thinking of right
now mandating python use for everything are well advised to go
(re-)read the book "Peopleware", and realize that developers having
"fun" has very serious economic advantages)