ClojureDart: an experience report

I gave an experience report talk at the most recent Clojure Berlin meetup. Great audience questions.

(Correction: the cljd compiler was in progress before Roam got involved.)


The paper I mentioned about (not) categorizing PLs as OOP/FP/procedural: Teaching Programming Languages in a Post-Linnaean Age by Shriram Krishnamurthi


Exciting paper!

Even more striking is what scripting languages say about the organization of languages. Most books rigorously adhere to the sacred division of languages into “functional”, “imperative”, “object-oriented”, and “logic” camps. I conjecture that this desire for taxonomy is an artifact of our science-envy from the early days of our discipline: a misguided attempt to follow the practice of science rather than its spirit.

We are, however, a science of the artificial. What else to make of a language like Python, Ruby, or Perl? Their designers have no patience for the niceties of these Linnaean hierarchies; they borrow features as they wish, creating melanges that utterly defy characterization. How do we teach PL in this post-Linnaean era?

I think this is the right approach.

When I found FP, something felt “more right” for me than I’d felt with prior PL experience. Yet, now it feels more like a tool. Often useful, not always. Clojure helps emphasize this point - problems can be solved with functions and data, but other tools are available when needed.

Thoughts on how a “post-Linnaean age for programming” should influence how we teach Clojure? Should we put less emphasis on FP? Or is the FP mindset often what is missing?

Depends who we’re teaching what when, and why, I suppose. It was helpful to me to see how Clojure can do OOP perfectly well when necessary, and babashka shows it’s not bad at being scripty and imperative. Lisps are kind of cheating though because we can invent our own languages on the fly, which is exactly the knob Racket cranks up to 11.