Today I took a light rail with my son, to bring him to school. That tram is 90 years old. It has been maintained for 90 years. Milan city sold some of them to San Francisco too.
No software could show a similar track record; And Turing build its first decrypt computer (working for secret “Hut 8” section) near 1939.: it was called Bombe. Information Technology is over 70 years old. It will be 100 years old in 2039. On average I have seen no software maintained for more than 10 years.
When I started university in 1993, Object Oriented Programming was the Right Way of doing thing.
The right, infallible way, you know. Procedural languages like Pascal was the old vintage way, near oblivion.
After about 23 years I have more than one doubt.
On the Internet blossoms a bunch of articles on this topic, like this one by Charles Scafani on Medium.
NodeJS is all based on asynchronous functional callbacks.
There’s a great quote by Joe Armstrong, the creator of Erlang, about OOP inability to isolate architecture:
The problem with object-oriented languages is they’ve got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
Also, when things get weird, having object modifying their state here and there is a nightmare. A poor written piece of OOP code can become a mess.
Functional languages with immutable state (Lisp, Erlang, etc) have less problem in this respect.
So can be the new oop-evolved functional the answer for the forthcoming IT challenge like AI Evolution (like AlphaGo), Custom Analytics, faster Big Data processing, cheap Cloud and IoT?