[Haskell] Haskell as a disruptive technology?
paul at cogito.org.uk
Wed Mar 29 16:28:32 EST 2006
Sorry to have been out of the discussion for so long. I've just
upgraded to Fedora Core 5. Multimedia and the proprietary NVidia 3d
driver have yet to be added, but at least email is now up.
Robert Dockins wrote:
> FWIW, I'd like to voice my agreement with this view. The hardware
> hard at work building the perfect niche for Haskell -- all of
commodity desktop computing!
> Moore's law is still packing more transistors onto the silicon, and
it seems like people have
> run out of ideas for what to do with them, so they just start
duplicating cores ;-) All we
> have to do is be ready for it when it arrives. When people see that,
using Haskell, they
> can write programs using 1) fewer man-hours with 2) fewer bugs which
3) scale effortlessly
> to highly parallel hardware to beat the pants off
C/C++/Java/what-have-you, they'll be
> beating down the doors to get it.
Sorry. I really wish I could agree, but I don't. Like I said earlier,
it doesn't matter how good your technology is, if you go up against the
incumbents you will lose every time. Here is how I see it playing out:
1: People start to complain that effective use of multicore CPUs is very
hard. The trade press editorialize on the problem: is this the end of
the computer performance revolution.
2: Sun and Microsoft bring out support for STM in Java and C#
respectively. The trade press editorialize on this wonderful new
technology. Haskell may get a mention as the original prototype, "but
now its ready for mainstream use".
3: The Java and C# support turns out to be unsafe, partial and
inefficient. Long articles are written in the trade press about how to
make sure your programs use it properly. Programmers with proven
experience in these flavours get big pay rises.
4: We sit around wondering what happened. "Its not fair: we had this
years ago and done right. Why is everyone using the broken stuff?"
I've seen this happen before, with Eiffel. From around 1989 I was
telling people that Eiffel was the way to go. It was better than C++ in
every way, and garbage collection was a great win. Nobody would try
Eiffel. They said GC was inefficient, and anyway real programmers
didn't need it. Then Java came out, and a couple of years later a
project manager who had previously ignored my enthusiasm about Eiffel
told me how great it was to have GC in Java, and how few bugs they were
getting as a result. I managed a weak smile.
Getting good concurrency support on SMP is important, of course. But
its not going to beat Java and C++ on their home turf. That is the
point of disruptive technologies: they start out in a niche and then
spread. First find a niche.
One of the lessons Clayton Christensen draws from his study of
disruptive technologies is that the market for them is unknown and
unknowable. As a rule you don't identify and analyse it, you notice it
by accident and have the agility to exploit it. One example from the
book: Honda initially tried to sell its motorcycles by competing head-on
with incumbents like Harley Davidson. They got nowhere, but when the
frustrated marketroids took their sample bikes out on the sand dunes for
some fun, friends asked where they could get one. So the marketroids
got a few as a favour to their friends. And *their* friends asked for
some too, and it eventually dawned on Honda that there was a whole new
market for light recreational sport bikes that their model was just
So it is with Haskell. I've spent some time looking for niches where
Haskell might fit. I've got a couple of ideas (test harnesses and
experimental simulations), but if I or anyone else laid out a marketing
programme based on those ideas then it would very likely be wrong in
some important way. What we need to do is to look for lots of similar
sorts of software: marginal opportunities that are poorly served by the
big incumbents, but where Haskell can shine. When you find something
like that then push Haskell and see if it fits. If you win then spread
the word, and get your new converts to do the same *in their
speciality*. Then we will be going places.
More information about the Haskell