What is this?
This, and a a number of other posts that will follow, have come about after starting a presentation called “Into Adventure - moving from Object-Oriented Programming (OOP) to Functional Programming (FP)”. They are an expansion of the ideas and points of the talk.
The road to Functional Programming
A long, long time ago, in a galaxy … Well, a few years back I started investigating functional programming. The first thing that made me interested was a quote by Eric S. Raymond:
Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.
Then came the posts by Paul Graham. Well, I actually read first his compilation book “Hackers and Painters”. Not sure if it was a recommended reading at University, or I saw the name of the book in a bookshop and it piqued my curiosity. He had one post (or several, for that matter) in which he talked about the startup that he co-founded, ViaWeb. One of the things that he mentioned was, as a startup, you need every single advantage that you could muster and that, for them, the language that they choose to use was important.
Although I do agree that having a good team is far more important, if two companies have equally (or similarly equal) good teams, then the tooling becomes of relevance. Of course, marketing is important (but not my concern right now).
I stayed on OOP land, though. C# mostly, as it is the language that I have used professionally for the last 8 years, then some Python at home (which I prefer).
Until two things happened:
- First one was the reading of “Seven languages in seven weeks”. Well, half reading it. But it was a starting point.
- The second was the presentation done by Robert Martin at NDC London 2013 about functional programming.
So I decided to get myself finally into it, properly.
Let’s begin the adventure!!!
Here is the list of posts related to this journey. I will try to talk about a single point on each post, to not muddle too much the points.
One last warning: The only element of the ones that I’m going to show that is exclusive to FP is immutability of state. The rest can be found in other paradigms.
In chronological order:
- Binding And Assignment
- Pattern Matching
- Classes vs Functions
How to become a Hacker back up
Beating the averages back up
Seven languages in seven weeks back up
Functional Programming: What?Why?When? back up