To recap my position on functional programming, more like my position on learning Clojure, I am enjoying learning Clojure. Having worked in production environments almost my entire career, I appreciate Clojure’s pragmatic approach to solving problems. It’s not a pure functional programming language, but it seems to have been designed thoughtfully and with an eye to the future, especially concurrency.

Recently, I was out searching for articles about functional programming links and came across Higher Order Perl. I believe Python has become as popular as it is, because the Python community was smart about making lots of modules available, something Perl does well.

But as much as I like Perl, is it functional because it shares six of Lisp’s seven attributes as noted in Paradigms of Artificial Intelligence Programming, by Peter Norvig? Is Python functional because it too can generate functions or because it has list comprehensions and generators? For that matter is JavaScript a functional programming language?

What got to me upon seeing the reference to Perl’s being a functional programming language is this whole notion of functional, pure functional, and everything else that isn’t, which to me seems like relegating all other languages and modalities to a programming language dust heap. I am not contending what language is or is not a functional programming language, but am just sensing a surge to functional programming. Surges, like the C++ surge twenty years ago, do not always achieve the expected results.

One of my worries is we seem to be repeating history with the rise of functional programming languages. These days, the feeling seems to be if it’s not FP, what good can it be? So is there a trend to rebrand other languages to say they are functional? Will we pretty soon have ScalaFP?

Today, functional programming does not make much difference in our environment. Programs must be designed well, so others can understand them. Program errors must be easily diagnosable. We are currently not synchronizing data across multiple processes, but that could change soon.