Things I Learned from ACCU 2010

bearophile bearophileHUGS at lycos.com
Fri Apr 23 04:26:21 PDT 2010


Walter Bright:

>* Not all functional programming languages do concurrency well. Haskell and OCaml in particular have severe fundamental problems with it such that parallelizing your code makes it slower.<

What kind of problems have you seen in Haskell?
I have read several articles about parallel code written in Haskell, and its situation doesn't look so bad.


>Erlang and Clojure parallelize well, in that performance scales up proportionally as cores are added.<

There is no way for this to be true in general. "Scalability" is a lot a characteristic of the algorithm (and the way its subparts exchange data), not the language.
And if you care of performance Erlang is not the best:
http://proliferationofniches.blogspot.com/2008/07/multi-core-problem.html
Erlang is good for other things, like reliability.


>Message passing looks like the future.<

Message passing is one future. There is no single silver bullet to solve the concurrency/parallelism problems. Different algorithms will need different solutions: message passing (actors, agents), data parallelism (AVX registers, GPU cores, vector operations, parallel loops, etc), dataflow programming (http://en.wikipedia.org/wiki/Dataflow_programming ), etc. D will need several solutions in its core language, std lib, external libs.


>* Monads have nothing in particular to with I/O.<

Right. They are used for the I/O in Haskell, but they are a quite more general concept that can be used for other purposes too.


>* People really understand and get testing and how it improves programming.<

And D unit testing is not good enough yet :-)
I think dynamic languages have shown why testing is so useful (for statically compiled languages too).

Bye,
bearophile



More information about the Digitalmars-d mailing list