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:
- Variables (because they represent a broken model of state)
- Syntax (because you can use lisp, which is simpler and homoiconic)
- Object Method Inheritance (because you can use interfaces, which compose better)
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.