Effective Programs: 10 Years of Clojure
Rich comes down hard here on statically typed languages, but before the static typers get too offended, his main attack is on the overuse of ADTs&#x2F;classes to build information processing systems (i.e., what a majority of us industry programmers are doing; he takes pains to define this arena...see the slides&#x2F;discussion on what Rich calls &quot;Situated Programs&quot;).<p>So before the static vs dynamic typing debate gets too heated up here, I think we should focus on this point first[1].<p>For those of you wary of his point here, I think it&#x27;s worthwhile to go through an exercise, if you have the time to explore this. Write a simple information processing app using two different paradigms:<p><pre><code>   - Write it using a statically typed language and a relational database.
   - Then write the same app using some NoSQL store and avoid using ADTs (prefer using just maps of facts). Ideally do this in a dynamic language so the ergonomics are better for you.
</code></pre>
And then ask yourself: Which one of these felt safer? More familiar? Which one of these offered more freedom, choice, and speed?<p>1. I do think that once you come to terms with the problems of ADTs, you are on your way to not needing all the static type verification, but leave that to later.