Functional Programming, Dysfunctional Communication?
However, FP often comes with a huge baggage of academic jargon (classic example: “monad is a monoid in category of endofunctors”) that is irrelevant to the usefulness of the functional paradigm itself. All of the problems can be solved and, more importantly, described in a perfectly straightforward manner in all functional languages apart from Haskell (or more obscure research languages) — something that often provokes a question whether these “easy” languages are “truly” functional ;-).
When you look beyond the academic jargon, there are well understood problems (Promise/Future to handle delayed computation, Option types to avoid null results, etc.). What is the motivation to cloak these simple concepts in a language that a layman can’t understand?
Possible motivations include (but are not limited to):
- Entertainment. It’s just fun to play with abstractions, in a way it can be fun to solve puzzles or learn a human language
- Showing off. Any kid these days is a programmer, so making stuff look “hard” can be flattering to your ego.
- Academic justification. You can’t write a research paper about parsing an XML file or writing bytes to a socket.
- Community. It’s fun to discuss esoteric stuff with other people initiated into the same jargon.
This is all well and good, but has nothing to do with getting real work done. When you need to solve a real problem, you need to put it into simple terms that everyone can understand, and solve it. If you have a solution that can’t be explained in lucid everyday language, it’s possible you haven’t found the right solution — or are trying to keep yourself entertained instead of just getting the job done.
(Note: this article is not relevant to any discussion on particular, but reading way too many articles on /r/programming has certainly been an inspiration)