Goodbye, Object Oriented Programming
Charles Scalfani

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.

  1. 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.
  2. 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.

Overall I like both worlds. And studying Clojure and its functional pillars made me a better OOP programmer as well. Clojure is superneat for the server environment, and right-cooked OOP JavaScript spiced up with functional features is so great for user interfaces.

And what language are you into? Afaik for now they all should have the same GC problem as Java and .NET.