With the increasing importance of parallel computers, ranging from multi-core desktop machines to massively parallel machines such as IBM’s BlueGene, functional programming could well become an important technique for scientific software development, as it facilitates program transformations (including those for automatic or semi-automatic parallelization) considerably. It also appeals to the mathematical bend of many scientists in making it possible to apply mathematical reasoning to computer programs. The downside: there is a steep learning curve for those familiar with traditional programming (called “imperative”).
I have written an introduction to functional programming for scientists for the July issue of Computing in Science and Engineering. It is also available (free access) via IEEE’s Computing Now portal: http://www2.computer.org/portal/web/computingnow/0609/whatsnew/cise
While I don’t expect functional programming to be adopted rapidly by computational scientists, I am convinced that ten years from now, it will be an essential item in everyone’s toolbox. Better start preparing yourself now!