

MSR funding a 2-year project to mature Parallel Haskell for commercial users - dons
http://blog.well-typed.com/2010/04/parallel-haskell-2-year-project-to-push-real-world-use/

======
ganley
Almost exactly 20 years ago, I started my grad-school research on this very
topic: auto-parallelizing Haskell. Shortly, though, my advisor left and I had
to choose a new advisor and a new research topic. It's been surreal to see
Haskell suddenly (it seems) get so popular lately, and now to see a commercial
push for the very thing I was going to work on is very cool. It's incredible
that it's taken so long, but better late than never.

------
Periodic
I have a few friends who program largely in C++ or in interpreted languages
like Python, Ruby, and Perl. They've scoffed at my love of Haskell, claiming
it's too academic and overly complex and that they'd rather just get things
done.

Just last week I asked them what piece of software was missing from their
lives in an attempt to get ideas for a new project to start. One of the first
things on all their lists was software that would automatically parallelize an
algorithm for them. Inwardly I wanted to put palm to face because the easy
parallelization in Haskell is one of the killer features I'd been trying to
convince them of.

I think the major barrier to adoption is lack of real-world results to show
people that's viable. All the benchmarks in the world won't convince these
people to change their ways, but if they see other people using it to good
effect, they will seriously consider it.

~~~
runT1ME
I wasn't aware Haskell had good multi-threaded support.

How is Haskell better at auto-parallelizing an algorithm compared to say,
java's fork/join or .NET's equivalent?

~~~
lincolnq
Haskell's tools mostly have the same sort of power as forkjoin (scheduling
work to be done on separate threads; creating the right number of threads
based on the hardware; providing an easy-to-use set of functions that call for
work to be done in parallel).

The major difference is that the tools compose with the language better.
Instead of having to keep "I'm working in a multicore environment" in your
head all the time when you're writing your client code (as you would in Java,
worrying about concurrent mutation and so on), Haskell enforces immutability
throughout the language. Often you get the extremely convenient situation
where you observe that something could be parallelized, change _map_ to _pmap_
and you're now using all your cores.

~~~
eru
Yes. But immutability is not the whole job. You have to make sure to use the
right data structures. Linear data structures like lists don't parallelize
well. You need to use something that breaks into more equal parts instead of
car and cdr.

Compare Guy Steele's talk "Get rid of Cons" at the International Conference on
Functional Programming 2009. For the slides go to
<http://news.ycombinator.com/item?id=814632>, the video should also be
available online somewhere.

------
pln
This is really cool. Kudos, Microsoft.

~~~
thu
This is Microsoft Research; I believe it's not really the Microsoft behind
Windows and co.

~~~
chollida1
> This is Microsoft Research; I believe it's not really the Microsoft behind
> Windows and co.

I'm curious as to what you mean with this statement, given that Microsoft
Research is a part of Microsoft.

~~~
thu
Well, I just meant that 'is part' is different than 'is'. And that I think the
freedom that enjoy MSR is not exactly related to the creation of future
consumer software.

It is generally accepted to make a difference between, for instance, the
marketing communication and the work quality accomplished by the engineers. I
think it is as important to make the distinction between Microsoft and its
Reserach part.

~~~
endtime
>And that I think the freedom that enjoy MSR is not exactly related to the
creation of future consumer software.

Where do you think the funding for MSR comes from? Who do you think decides to
allocate that funding?

------
LiveTheDream
Great to see major investments in moving programming languages forward.

