Correctness – A paradigm for sustainable software development
<i>&gt;The thing you need to look at if you’re using say, a dynamic language, or object oriented design, is that in the long term, what is the language and mindset of “objects” with dynamic dispatch providing you apart from an endless stream of bugs that seem to keep reoccurring everytime you try an evolve the software to introduce a new requirement?</i><p>I am sick and tired of the arrogant, willfully ignorant developers touting their FP horn and bashing OOP without any qualifiers. This is getting as annoying as Java people posting their design pattern nonsense as if it was something good.<p>If you know what a monad is, you should also know the founding ideas behind OOP.<p><a href="http:&#x2F;&#x2F;userpage.fu-berlin.de&#x2F;~ram&#x2F;pub&#x2F;pub_jf47ht81Ht&#x2F;doc_kay_oop_en" rel="nofollow">http:&#x2F;&#x2F;userpage.fu-berlin.de&#x2F;~ram&#x2F;pub&#x2F;pub_jf47ht81Ht&#x2F;doc_kay...</a><p>The ideas make sense. Moreover, Kay has an amazing track record of saying unpopular things and being proven right in the long run. If you spend some time looking into it, you should see that his high-level intuitions about software architecture are proving to be correct, despite many of his critics. A lot of hyped-up modern technologies are implicit, ad-hoc, overly complex implementations of OOP ideas done without realizing they are such. The whole IT industry would be far better off if people took time to look into <i>and understand</i> the original ideas behind OOP.<p>1. OOP is a higher-level paradigm than FP, so people comparing them directly usually are missing the point to begin with. OOP systems can be implemented in functional languages or use functional-flavored components.<p>2. It is beneficial to model <i>algorithms</i> without using state. FP is very good that that. (Boring but practical example: LINQ vs loops and variables in C#. Functional LINQ pretty much always &quot;wins&quot;, just like Streams always win in Java.) However, large-scale systems almost always have state. If you do not have some wise approach for handling it, your designs will have issues at system level. OOP is one such approach and <i>at that level</i> its ideas have a lot of value.<p>I&#x27;ll edit this post later to add a few more points.