Monday, 31 October 2011

Rich Hickey

Rich Hickey is the creator of the Clojure programming language. Clojure runs on the JVM and is part of the Lisp family. It's been generating quite a lot of buzz for a couple of years and together with Scala is the hottest ticket in the JVM world. And good riddance, since Java is showing signs of rigor mortis.

Anyway, Mr Hickey is a great speaker and he's got some very interesting stuff to say.

Some of his ideas that I agree with;
  • Object Oriented design as popularised in C++, C#, Java etc really isn't any good for big complex systems. "Mutability by default" leads to incomprehensible and buggy programs
  • Thousands of objects (concurrently or not) modifying each others' state is just another form of spaghetti code (no matter how many design patterns and clever locking schemes you use)
  • Our obsession with testing is just a side effect of our insufficient programming tools. If we had better tools (for instance languages) we would more easily write correct programs and we wouldn't need to obsess about test coverage
  • Agile and short sprints can lead to always picking the "easy solution" instead of a better thought out "simple solution". If this is repeated over a long time, this accumulation of technical debt leads to programs full or errors.
Obviously the real world isn't as black and white as stated above. It's very possible to write buggy programs in ML and Clojure, and absolutely gorgeous big programs in C++. However, generally speaking Mr Hickey is onto something. The OO paradigm needs to be questioned and not taken as gospel, the new breed of functional/OO hybrid languages really have something to offer. Especially when multi core concurrent programming is becoming the norm.

Here's link to a very good talk by Mr Hickey on some of these topics...


Much more on Mr Hickey and Clojure in future posts.

Update: Are we there yet? Another awesome presentation dealing with popular languages, OO vs Functional, immutability, incidental complexity.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.