u/rileyphonein r/ProgrammingLanguages • Recommends
On “What are some important differences between the popular versions of OOP (e.g. Java, Python) vs. the purist's versions of OOP (e.g. Smalltalk)?”
Here's the most famous presentation of the purist version by Alan Kay. Now, Kay doesn't even consider Smalltalk to be 'pure', especially as it left the lab. But it does have late binding, everything is an object and all calls are message sends. Many other dynamic languages, especially Ruby, are close to Smalltalk in terms of 'purity'.
Meanwhile in Java/C++, callsites are bound early with vtables (requiring a lot of casting and callsite discrimination) and not everything is an object. Classes aren't really first class objects, and aren't modifiable at runtime. They have inadequate type systems and punchcard-descended compile-run loops.
There's a range of other OOP languages with more inte…