I would also like to point out that the term OOP has two completely different meanings:
-
The notion of Objects comes from Simula and the work of
Ole-Johan Dahl and Kristen Nygaard - this introduced the ideas of
objects, classes and inheritance. -
The term Object Oriented Programming was coined by Alan Kay and was much
more concerned with the idea of sending messages between isolated objects
You might like to take a look at
Which has a reasonably good summary
When we were developing Erlang @rvirding and I read every book we could find that described OOP and came to the conclusion that there were no definitive descriptions of what an OOPL was it was more a case of “you can recognise an OOPL when you see one”.
The first Erlang book had a chapter on OOP – this was actually a joke – but nobody realised this …
Objects in the early 90’s were a very “sellable” – Salesmen in snake-skin suits pitched stories of “inheritance” to management - “write once” then once you have your code base you can make new solutions based on the old ones by “reusing your code”
The idea was pitched that “all you had to do was rewrite everything in C++ and make a code base of stuff you could inherit” and you could fire most of your programmers and reduce your software costs to near zero - didn’t happen like this though. (But it took ten years to discover this :-))
I had always (and still) viewed this reuse stuff as total nonsense - functional re-use is possible but the non-functional properties of a program cannot be re-used.
If a program is slow/big - then an inherited version of the program will be slow/big
If a program is buggy the inherited program will be buggy …
I talked to Alan Kay on several occasions about this - he likes Erlang but he’d like it even more if it were bundled into a single quine like system (like smalltalk)
Cheers