Why OO Sucks by Joe Armstrong (2000)
Well, I disagree with 99% of this... I&#x27;m a guy that started with C, moved to functional programing, added C++, and now do all 3.<p>&gt; Objection 1.  Data structure and functions should not be bound together<p>Well, in my experience, in every almost every code-base (either from functional, or imperative programing), we end up with modules, witch are a set of function taking the same type as a parameter. This is very close to binding the functions and the types...<p>&gt; Objection 2.  Everything has to be an object.<p>I don&#x27;t get the example. The only thing that this show, is the benefits of having a range type built in the language. Then it&#x27;s just type aliases.<p>&quot;There are no associated methods.&quot;, yes, but you will need functions to manipulate those types (just translate one type into another), at the end, it&#x27;s going to a module, which is almost an object.<p>&gt; Objection 3.  In an OOPL data type definitions are spread out all over the place.<p>That&#x27;s true. It also makes thinking about the data layout complex. That&#x27;s why other paradigm have been developed (DOP), on top of OOP. Now you can also think that having those defined together makes dependency management easier.<p>&gt; Objection 4.  Objects have private state.<p>False. Objects <i>can</i> have a private state. This a problem with mutability, not oriented object programing. You can have non mutable OOP.<p>&gt; Why was OO popular?<p>&gt;&gt; Reason 1. It was thought to be easy to learn.<p>The past 20 years have shown how easy it is. In fact, I actually think it&#x27;s too easy, people rely too much on abstraction, without even trying to understand what&#x27;s going on. I my opinion, it promotes a lazy mindset (This is my biggest criticism about OOP).<p>&gt;&gt; Reason 2. It was thought to make code reuse easier.<p>I would like an evidence that it&#x27;s not.<p>&gt;&gt; Reason 3. It was hyped.<p>True, but that does not make it bad. People tried to hype every technologies... Some stayed, some went away.<p>&gt;&gt; Reason 4. It created a new software industry.<p>How has OOP created a software industry that would not have existed if functional programing had &quot;won the fight&quot;?