Dr. Dobbs had an article posted this week about the need for a larger and greater understanding of functional programming in order to correctly develop and program in the emerging parallel environments of the future. With every chip manufacture adding more and more cores to their processers in order to increase the throughput of their platform.
While I understand where the article is coming from, I don’t agree that FP is the future. FP has a very distinct and and specific field of use in areas where processes can be cleanly defined and work in a workflow without interruptions. The majority of applications that will need to take advantage of the multiple cores and multi-threading will have to be done through threading and standard stateless functional systems, due to the nature of the software. Information services and data models can fit into FP models, but the processes and user interactions can’t be crammed into a singular workflow. Things that depend on a stand dataflow will work great for FP on multi-core systems, but stand data flows cannot encompass a user.
Introducing the human into the mix severely limits the ability to solely develop in a FP model without becoming extremely inefficient.
There are several efforts to make functional languages a mixture of state-full and stateless to make them more efficient and allow for better management of exceptions, errors and the human user, but there is still a lot of work that has to be done and even more techniques and methods to be learned and used before the changes can work their way our of research and academia.
MS has been doing a lot of research in this area for F# and other functional areas, and Brian Beckman discusses some of those things on the Channel9 site in a two part interview. Part 1 Part 2