Functional Languages are driving a broader set of choices for programmers. O’Reilly editors Mike Loukides and Mike Hendrickson sat down recently to talk about the advantages of functional programming languages and how functional language techniques can be deployed with almost any language. (The full conversation is embedded below.)
Andy Hunt and Dave Thomas have long recommend learning a new language each year, especially those languages that teach new concepts [discussed at the 02:02 mark]. Functional languages have made that easier. They behave in a different way than the languages many of us grew up on — procedural like C or languages derived from C. Plus, the polyglot programming movement has driven the interest in functional languages as one of the languages you might want to learn.
Programmers need to understanding the advantages of using a functional language, such as productivity, power of expressiveness, reliability, stateful objects, concurrency, natural concurrency, modularity, and composability [05:37]. Though a search still exists for a magic bullet [06:29] to make it easier for programers to better solve the problem of concurrency. CPU speeds have been stuck at roughly the same level for the last four to five years. Programmers have been given is more transistors on a chip, hence more CPUs and more cores to work with making concurrency one of the most difficult issues facing computer scientists today. Enter functional programming with improved debugging and the ability to write more reliable code in a concurrent environment.
Additional highlights from this conversation include:
- Print book sales of functional languages are growing, especially books on R programming. And while Loukides doesn’t consider R to be a functional language, some debate exists about its classification. Though it’s clear the data science movement has driven the use of R because it’s well designed for statistics and dealing with data. [Discussed at the 00:29 mark]
- We’ll see F# grow in the Microsoft development environment while Scala and Clojure are dominating the open source space. Erlang will also be around for a long time for building highly reliable concurrent systems. [Discussed at the 03:01 mark]
- Java isn’t intended as a functional language. Though Dean Wampler’s Functional Programming for Java Developers provides an approachable introduction to functional programming for anyone using an object-oriented language. [Discussed at the 11:41 mark]
- The use of a functional language or functional language techniques can make your code more robust and easier to debug. [Discussed at the 12:09 mark]
You can view the entire conversation in the following video:
Tune in next month for a discussion of NoSQL and web databases.