Recently I watched MSDN: Channel 9’s interview of Turing Award winner Jim Gray (the videos are here and here). In the context of massively parallel computation, he approvingly cited Google’s MapReduce paper, which I then read. MapReduce describes how Google uses the functional programming concepts map and reduce to allow a developer to write serial code but have it execute in parallel on their enormous computing farms.
I suspect we will see functional programming concepts further creep into mainstream languages as language and compiler designers address the challenges presented in Herb Sutter’s paper The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software. Functional programming seems (to my untrained eye) that it would be far easier to automatically parallelize.
I also suspect that as hardware parallelization increases, we will gladly trade off the performance of individual nodes (the serial path of execution) if it results in increased parallelization. In other words, traditional software optimization will be almost completely disregarded as nearly all efforts will concentrate on increasing concurrency. As this happens, the debates over the performance of native vs. managed code will seem quaint. Then again, I think the debates pretty much already are.
Recent Comments