It’s hard to motivate people to learn Clojure, even when it has many benefits over C for rapidly prototyping a new program. Most people are not willing to abandon their language of choice for a new language which may have some semantic advantages that they don’t really understand (See: blub paradox). This is fine and natural: the burden should be on the advocate to show why his or her language is better than the current status quo.

I took a different approach in my Clojure advocacy: if I can convince people that they are doing things fundamentally wrong, they will be motivated to correct their mistakes, even if they don’t understand everything I am telling them at the outset. This isn’t just a rhetorical technique; I am of the opinion that would not be an exaggeration to say that Clojure has a much more ‘correct’ view of stateful programming than C, for example. Clojure is doing it better.

So, I gave a presentation at the Italian Institute of Technology, my workplace, in which I tried to destroy three principles that most programmers hold dear:

  1. Variables (because they represent a broken model of state)
  2. Syntax (because you can use lisp, which is simpler and homoiconic)
  3. Object Method Inheritance (because you can use interfaces, which compose better)

The presentation borrows heavily from presentations and publications by Rich Hickey, Fogus, and Stuart Halloway. I just remixed the content for an informal academic presentation.

You can find the slides here. I gave a “one-idea, one slide” type presentation, so without my narration it may not be particularly useful, but I thought I would throw it up on the net anyway.