The Ephox engineering team make heavy use of functional programming. We believe FP helps us write more robust and correct software, achieve more with less code, and ensure our code remains maintainable. So far it seems to be working.
We could go on for hours about the merits of FP and the techniques we use. I’m not kidding. We’re passionate about FP and utterly fascinated by it. I’ve wanted to blog about this for a while, but I keep getting drawn back to the places where I learnt about FP in the first place, and I really can’t do any better than the original presenters.
To that end, I’d like to share two very influential talks that, from different perspectives, show why developers should care about functional programming.
Erik Meijer – Fundamentalist Functional Programming
Personally, my FP journey started when I saw Erik Meijer’s keynote at the Brisbane YOW Conference (then known as JAOO), back in about 2009. This talk was a call to arms for “Fundamentalist Functional Programming”. In the talk, he describes the problems of side effects – especially when mixed with lazy evaluation – and the importance of the functional approach in addressing this.
Unfortunately, I was unable to find a recording of that exact talk. But here’s a recording of a similar talk that Erik gave at another conference.
I’ve been to many YOW Conferences, but that year was special. Not only was it my first YOW, but the conference was abuzz with talk of functional programming. I remember coming back to work bouncing off walls. I was inspired, and my career forever changed.
John Hughes – Why Functional Programming matters
This paper by John Hughes is definitely one the most influential papers in the world of FP. Consider it essential reading for any programmer.
John has given a talk by the same name at several conferences – one of which is below. In the talk, he goes through the history of functional programming, some of the research papers that influenced him, and the ideas that inspired his seminal paper.
The talk shows the origins of some of the important features of functional programming, such as lazy evaluation, functions-as-representations, “whole-value programming”, and separation of producers from consumers. He shows how these features enable you to program a very high-level and composable way – abstracted from the underlying hardware.
“Why FP matters” John Hughes 2016
These talks introduce the very basics of why you might care about functional programming. The topics discussed are simple, but fundamental – all the benefits of functional programming are dependent on them.
These talks really struck a chord with me, and I hope they do the same for you. Especially if you’re new to FP, or if you considered FP in the past but for whatever reason never took the plunge. It really is an amazing way of programming – there are certainly a lot of challenging things to learn, but I believe the rewards are immense. I’d encourage any programmer looking to “level up” their skills to look seriously into the world of functional programming.
In my next post, I’ll dive in deeper and show some resources that explain some of the mathematical theory underlying a lot of functional programming.