This is like very biased article. I am great fan of Clojure (I use it for a few web projects), but I wouldn’t be so aggressive to OOP. EVERY GOOD OOP programmer knows the listed flaws and easily handles them.
- Good java programmer uses interfaces more than classes. Also with that countable ArrayList you operate with low level internals, a thing you should avoid doing, especially for vended classes.
Also you have at least two ways to make your program unbreakable.
- Yes mutable state is a problem; Rich Hickey did a great lecture on that (Simple Made Easy). But we invented immutable data structures and lock free multithreading long time ago, or you can just write your code in such a way that mutation won’t harm anything.
Actually both times it was mutability that was wrong, not the OOP pillars. OOP pillars are just poisoned by it. Minimise state permutations, add interfaces and pillars become much better.
And what language are you into? Afaik for now they all should have the same GC problem as Java and .NET.