[Haskell-cafe] A rant against the blurb on the Haskell front page

Don Stewart dons at galois.com
Sat Oct 16 00:03:11 EDT 2010


Great! It's a Friday. Why not step in.

Just some context, since the current blurb was born from a critique at
CUFP 2007, prior to which the Haskell blurb was:

    "Haskell is a general purpose, purely functional programming
    language. Haskell compilers are freely available for almost any
    computer."

while python.org said:

    "Python is a programming language that lets you work more quickly
    and integrate your systems more effectively. You can learn to use
    Python and see almost immediate gains in productivity and lower
    maintenance costs."

We tried to meet them mid-way, while emphasizing why you'd even consider Haskell.

    ben.franksen:
    > This is a critique of the current 'Haskell Blurb', the first paragraph on
    > www.haskell.org.
    > 
    > This blurb should, IMO, give a concise description of what Haskell, the
    > programming language, is, what makes it different from other languages, and
    > why I should be interested in it.

Agreed!

    > What it does, instead, is to make me scratch my head and ask myself: what
    > marketing idiot has written this inclonclusive mumble-jumble of buzz-words?
    > 
    > Let me explain.
    > 
    > "Haskell is an advanced purely functional programming language."
    > 
    > Good start, if only the "advanced" were replaced with something more
    > characteristic, like "lazy", or "statically typed". Which, BTW, both do not

"lazy" and "statically typed" don't mean much to other people. They are
buzz words that mean nothing to many people.

    > appear in the whole blurb, even though they are *the* characteristics of
    > Haskell, lazyness being even something that sets it apart from most other
    > languages. I hear the marketeers crying "but the average visitor has no
    > idea what lazyness means". So what? Give them a link to the wiki with an
    > explanation. So, a better introductory sentence would be
    > 
    > -> "Haskell is a lazily evaluated, purely functional programming language
    > with a very flexible and powerful static type system."

What are the benefits of laziness?

    > Next sentence:
    > 
    > "An open source product of more than twenty years of cutting edge research,
    > it allows rapid development of robust, concise, correct software."

It is open source, and was born open source. It is the product of
research.

    > This really gets me every time I read it. How can anyone write such a
    > nonsense? Haskell is not an "open source product"! It is no product at all.
    > That most (maybe all) implementations are opens source is certainly an
    > interesting fact, but IMO not something that should appear at the top of
    > the page right under the header "The Haskell Programming Language". The
    > second and third sentences deliberately conflate language and
    > implementation(s). This is a well known falacy and I am ashamed that it

As Python, Ruby, C and every other language do.

    > appears on the front page of my favourite programming language. The blurb
    > talks about "robust, concise, correct software", but misses itself most of
    > these goals: it is imprecise, incorrect, and not robust (because
    > implementations vary), and therefore not a good advertisement, though quite
    > possibly "rapidly developed".
    >
    > The blurb promises "rapid development of robust, concise, correct software"
    > lest one think this were something akin to Perl which certainly allows
    > rapid development, yet typically neither robust nor correct, especially if
    > done rapidly. So, how does Haskell differ from that? Well, I'd say this is
    > where lazyness and a static yet flexible type system come into play. But
    > no, I forgot, we don't want to explain anything or even be logical, dear
    > reader, we want to pound slogans into your head!

I don't think these are useful contributions.

    > That cutting edge research is done for Haskell as well as for its
    > implementations is of course good to know, but just stating it is not
    > nearly enough: such a statement must be corroberated with evidence,
    > otherwise it is just idle marketing. (Not that there wouldn't be evidence
    > amass, it's just that none is given.)

You literally want evidence that research played a part in Haskell, in
its opening statement? Why??

    > On we go:
    > 
    > "With strong support for integration with other languages, built-in
    > concurrency and parallelism, debuggers, profilers, rich libraries and an
    > active community, Haskell makes it easier to produce flexible, maintainable
    > high-quality software."
    > 
    > Let us take that apart:
    > 
    > (1) Fact: Haskell has a good and very easy to use FFI. To the C language. I
    > have never heard of integration with any other langauge being directly
    > supported.

It is OK to contest these, but consider the FFI of our competition:
Python, Ruby, Erlang. Woeful FFIs. You are not at risk using Haskell, as
you can always call out to your favorite $language library.

    > (2) Fact: Built-in concurrency and parallelism is not exactly part of the
    > langauage, although purity makes it possible to support them in a more
    > precise and less error-prone way; which is exploited by ghc's concurrency
    > and parallelism extensions.

Haskell since 1990 has been a bed for trying out new parallelism and
concurrency ideas. Current implementations, particularly GHC and GPH/GDH
support forms of parallelism the combination of which is available
nowhere else.

    > (3) Fact: Traditional debuggers are practically useless in Haskell, due to
    > lazy evaluation. But, oh, we forgot to mention the small fact that Haskell
    > is lazy. Too bad. Profiling is supported by ghc only (AFAIK), but is
    > supposed to be very useful (never seriously used it, so I can't judge.)

GHC has a built-in debugger. You should not be scared of Haskell's
support for finding bugs.

    > (4) Fact: there are libraries. Some of them are good, others are not so
    > good. Most leave a lot to be desired, but I would be hard pressed to come
    > up with something better myself. What really distinguishes Haskell
    > libraries from what is found in other languages is the level of
    > abstraction. I know no other language where stuff like Monad, (Applicative)
    > Functor, Monoid, Category etc. is *at the heart* of all the libraries. But,
    > oh, I forgot, we don't want to scare people off, so better not talk about
    > this in public.
    > 
    > (5) Fact: Haskell has an active community. No question.
    > 
    > (6) Fact: Haskell makes certain things easier (than other languages). Other
    > things that are easy in other langauges are hard in Haskell. Or at least
    > very non-obvious. Whether Haskell programs are more flexible, when compared
    > with dynamically typed OO languages like Python, I seriously doubt.
    > Maintainable high-quality software is the real selling point, IMO; or
    > rather *reliably correct* software. However, I cannot see how this
    > dirtectly follows from the previous points, which is what the sentence is
    > saying. What has an FFI do to with high quality? What has the supposed
    > availability of debuggers (where? which?) to do with it?

These are precisely the reason that e.g. Galois uses Haskell.
Maintainable, concise, correct software.

    > Enough. I think I have made my point.

What's your point?

What alternative do you suggest?

-- Don


More information about the Haskell-Cafe mailing list