1. 19
  1.  

  2. 3

    However, over time, in my experience, the suitability-to-task of these statically typed class models for information systems programming was quite low, and the benefts of the type checking minimal, especially in addressing the number one actual problem faced by programmers: the overwhelming complexity inherent in imperative, stateful programming

    This is probably the most controversial opinion in the entire paper. It’s a catalyst for many decisions made in Clojure and demonstrates the importance of saying “this is the problem I’m trying to solve.”

    “The overwhelming complexity inherent in imperative, stateful programming” - does Clojure help solve it? I’d say so. Simply by making immutability a core assumption. Is it the “number one problem”? What is a better solution than Clojure’s solution? The existence of Clojure at least helps push these questions forward.

    1. 1

      The programming paradigm that Clojure embraces is “Data-Oriented programming”. I believe that in 2021, this paradigm is applicable even in statically-typed languages. It requires discipline though. But the fact that Clojure’s implementation of efficient immutable data structures has been ported over the years to many languages is helpful.

    2. 3

      This is a beautiful paper where the inventor of Clojure share the rationale behind the most important language features.

      1. 1

        I suggested “historical” tag.