On Sat, Oct 16, 2010 at 3:02 AM, Stephen Tetley
<stephen.tetley at gmail.com> wrote:
>> If a "functional language" doesn't mean anything significant then
> Haskell probably isn't the language you should be choosing.
People who don't know what 'functional language' means can still get
all the benefits of functional programming if they choose to learn
Haskell (and thereby learn what a functional language is).
The blurb on the homepage can not be all things to all men.
If the goal of the blurb is to get more people using Haskell then it
needs to be targeted towards the largest group of people who have a
need which can be fulfilled by Haskell, who are willing and able to
use Haskell if it can solve their problem, and who do not already know
how Haskell can help them.
Now, I am guessing that the group of people who:
1. know what a lazy, statically type, functional program languages is
2. do not already know about Haskell
is pretty small. So, targeting them seems rather futile.
There is also a large group of people who ought to be able to benefit
from Haskell, but for whatever reason, can't or won't use it. Clearly
they are not of interest either.
So, we are left with the (rather large?) group of people who do not
know what Haskell is and probably do not really know what 'statically
typed' or 'purely functional' really mean. In fact, I think that most
non-haskell/ocaml/etc programmers view 'statically typed' as meaning
'C/C++ / java' style type systems -- and that is often considered a
negative thing. You don't really know what it means to use Haskell's
static type system unless you have used one of the other languages
with a sane type system. And then, you are probably already in the
group who knows what Haskell is...
How can we present Haskell to these people in a way that they will
think it *might* provide a solution worth investigating to a problem
that is bothering them. The blurb is not going to completely enlighten
people. It just needs to convince them that Haskell is something worth
investigating, and get them to click the link that will get them
investigating the part that is potentially useful to them.
For some people the problem that pains them is the need to learn
"cool", "advanced" stuff that will make them feel "smarter" than their
peers. For these people, seeing unfamiliar terms like, "monads",
"lazy", "purely functional", etc. will be exciting -- because it
promises them the opportunity to learn something new, and potentially
interesting, that other people do not know. So, for those people,
those words are great! (I am one of those people -- perhaps many
current Haskeller's are?)
Other people may care about specific benefits of using Haskell which
can be applied to their particular needs. Someone frustrated with
parallel on concurrent programming might be really interested to find
out that Haskell provides solutions in those domains that are
(hopefully) better than what they have been dealing with. But, the
claim that Haskell is better than what they already know needs to be
back up with something that will make them want to dig deeper. If we
simply say, "We do parallelism and concurrency better", people will
respond, "yeah whatever, I've heard that before." If we say, "Haskell
offers new and better ways of dealing with parallelism and concurrency
that are only possible because Haskell is purely functional and has an
advanced type system." -- then people might at least have the
question, "What does purely functional mean? How could that result in
better ways of writing parallel and concurrent code?" And, from there,
they would hopefully be able to click on links which would address
those questions in more detail, and convince them to invest the time
to learn Haskell.
I think value judgments are incredibly valuable. People are not going
to be interested in learning more about Haskell unless they believe it
is more valuable than what they are already using. I believe that is
the #1 question in people's mind when they visit the site is, "Is this
language in anyway more valuable to me than what I am already using."
And they want to spend as little time as possible making that initial
judgment. Once they have decided that it could be more valuable, then
they will be willing to invest more time to determine if it really is
or not.
I think the key is that we need to provide a reason for each value
judgment. In the blurb, the 'reason' does not need to be a proof, nor
does the reader need to be able to fully comprehend it. They initially
just want to see that we have some basis for making the claim. And,
having a link that can more fully explain the value judgment will add
further trust.
- jeremy