Such rigidity in approach can only be justified by overwhelming benefits. Indeed, extreme confidence in their own productivity is a hallmark of LISP Weenies and Insufferable Haskell Pricks. Yet a recent empirical study by Pankratius, Schmidt and Garretón that compared Java and Scala development did not reveal such triumphs. Indeed, while there were benefits (functional code performed better than expected and was more compact), the productivity results were, at best, a mixed bag. Scala programs took just as much or more programming effort to achieve the goals and were harder to debug.
As with virtually all empirical studies of software development, the sample size for the study is regrettably small and the results may be overly influenced by individual ability and knowledge. On the other hand, so what? The mainstream will evolve based on the cumulative decisions of millions of experienced object-oriented developers and many fewer experienced functional developers. Most developers aren’t going to dedicate months of effort into making the functional light bulb turn on, they’re going to make a partial effort over the course of a project or two.
If those millions of experienced object-oriented developers cannot become at least as productive in the functional paradigm, and a large subset significantly more productive, then functional programming will not have a real-world advantage and will not be broadly adopted. What you’ll have is a continuation of the world today, one in which functional techniques are widely used but not acknowledged, not leveraged, and not clearly spelled out.
My experience has been close to that described by Pankratius et al.: Functional programming is not a silver bullet in real-world applications, and some of the aesthetic choices that seem preferred by functional programmers can make debugging and evolving significantly harder (specifically, dense expressions without intermediate assignment). The functional community needs to acknowledge these issues, be realistic in its claims, and concentrate on helping mainstream experienced object-oriented programmers “cross the chasm.”
This is my message to today’s functional programmers: You can either change the industry or you can be smugly elite. Choose one.
Larry O’Brien is a technology consultant, analyst and writer. Read his blog at www.knowing.net.