Functional Programming

There are many buzzwords in the programming profession. These terms are bandied about with great regularity, and mean almost nothing. Terms like Object Oriented Programming (OOP), Functional Programming (FP), Top Down Design (TDD), etc.

Fundamentally, we only have one kind of computer with two variations: the Intel and ARM instruction sets which drive 99.9% of all computers used today. Everything on top of these two hardware platforms is software, and since the hardware's only commonly used instructions are arithmetic, copy, load/store, compare, branch and call/return, the most powerful instruction is the function call and return, and every language from Assembler onward has striven to wring as much utility out of the call/return instruction.

Functional programming is where you try to give functions more weight, as opposed to the move instruction which was COBOL's stock in trade. So one cannot be against functions, it is one of the only power tools we have. Every good program uses the same principles that are espoused in FP, and Every Functional Program has to store some mutable state somewhere, because the underlying hardware only operates with mutable state, so it is pretty self-defeating to create very hard abstractions like Monads and Monoids. Sometimes the priesthood of programmers tries to create obscurity where none need exist.

What i am against is waving these banners around, like OOP, Functional Programming, Top Down Design, etc., when what we really want is reliable software that is easy to understand. We are evolving towards better notations, but unless you change the hardware (and adding more cores does very little to help) you are pretending these terms actually mean something.

Computers are very simple at the core, and programming needn’t be that hard or frustrating. it will always be exacting, as there is no human experience where something is done over a million times in one second! The speed and accuracy of machines has always impressed humans, and computers are over a million times cheaper than when they were invented, that is incredible progress!