Gerhard Häring said:
Probably because Ruby is all hot and sexy nowadays ;-) Though it's
remarkably close to Python, apparently. So close that I couldn't be
bothered to learn it.
Ruby is apparently more Smalltalk-like and some consider it cleaner
than Python. Like you, I figure it's close enough to Python that
I haven't bothered with it.
In fact, for me personally, Python was about the last programming
language I learnt out of intrinsic motivation. I tried to take a look
at functional langugages like Haskell and Erlang, but I tend to
quickly get bored of toy examples and can learn best if I can apply a
new language to a real problem that it can solve better than the other
languages I know. Haven't found that killer problem so far ...
The killer problem for Erlang is highly concurrent, distributed
systems. I've been wanting to read Joe Armstrong's book about it
since I have some interest in that sort of thing. It's not simply the
ability to run vast numbers of threads and automatically marshal data
between them (even if they're on separate computers), but also its
convenient management of software faults through "supervision trees".
In most languages we normally program our functions to notice error
conditions and recover from them, raise exceptions that are handled
elsewhere in the app, etc. In Erlang you just let the thread crash,
and have the supervision system deal with restarting it, logging the
error, etc. This separation of concerns apparently helps reliability
of nonstop services like phone switches considerably. Also, Erlang
has hot-patching facilities so you can upgrade your program while it's
running, with 10,000 active network connections staying up and nobody
outside noticing that anything has changed.
Re Haskell: I've been spending a lot of time on Haskell recently,
though I haven't done anything nontrivial with it yet (just some small
stuff). But I think it's better for complex program development than
Python is, and even small Haskell programs, (while they are more
difficult to write, at least at my present level of experience) seem
both cleaner and more solid in terms of confidence of correctness than
the corresponding Python programs. Also, Haskell code runs a lot
faster than Python code (real native-code compiler that can use
multicore hardware), and there is a clever automatic unit testing
system (QuickCheck) that relies on Haskell's static type system to
generate random tests automatically. On the other hand, Python's
standard libraries do more stuff and are better packaged. It's
certainly easier to do lightweight internet scripting in Python. If I
were writing something like a compiler, I'd probably use Haskell.