On 18/06/2004, at 10:49 PM, Gour wrote:
> Any comment from some experienced Haskell programmer about the latest
> language shootout published on:
>>http://shootout.alioth.debian.org/index.php
Yeah. Language shootouts are nearly worthless. (And I say that as an
experienced Haskell programmer who uses and loves Objective-C and Perl
for his day job, which are rather different beasts to Haskell.) I
groaned when I heard that the shootout was revived, because I didn't
think they'd improve on the "benchmarks" used to test the various
languages, and they haven't. I can't really be bothered emailing them
about the fallacies involved because it's just too tedious to explain,
and I'm sure they're convinced they're doing a good deed to the world.
About the only good they serve is to show programmers that there are
other languages out there, which some people may like to explore.
("Oooo, what's this O'Caml language? Seems to be doing OK in the speed
tests ...") They're also good for compiler implementors to find
pathological speed cases in their compiler. That's about it.
The reason why I think it's all a load of garbage is that a language is
more than its benchmarks. Languages are complex things which you
cannot measure with simple metrics such as speed, or lines of code, or
memory use, combinations thereof, or some insanely complex one which
some fool might dream of. No matter how many large flashing
disclaimers that language shootout site has, there will be plenty of
people who draw conclusions based on the data presented, just by the
virtue of the data being there. ("Haskell is slow. Java is better
than Perl. Prolog-based languages suck for doing anything!" Yadda
yadda yadda ...).
For instance, one of Haskell's greatest strengths is that its type
system catches so many errors at compile-time that a programs often
behaves as intended if it compiles -- certainly more often than plenty
of other languages. One of Erlang's great strengths is that it's
designed to be robust against bad code, has fantastic support for
distributed services, and can be easily dynamically (un)loaded with new
code. One of Objective-C's greatest strengths is its extensibility:
one can add new methods to existing classes without needing the
original source code at all, and inject new classes or override a
class' methods at run-time. One of Perl's greatest strengths is
built-in support for regular expressions, which makes one-shot string
processing programs more trivial to write than in many other languages.
One of C++'s greatest strengths is that it's C with better language
support for object oriented and generic programming and coping with
complexity, while sacrificing no speed.
How on earth do you try to factor these things into such a language
shootout? You can't. And, despite all the disclaimers on that site,
despite all its good intentions, it's just going to give the wrong
impression about many languages to many people. I wish that damn
language shootout would be shot itself, and be banished for all
eternity.</soapbox>
--
% Andre Pang : trust.in.love.to.save