Rich Hickey on Clojure

On the podcast "Episode 158: Rich Hickey on Clojure" Markus has a conversation with Rich Hickey who developed Clojure. Clojure is a dialect of Lisp that is executed on the JVM. During the conversation, Rich Hickey mentions that like Lisp, Clojure is structured with linked lists, but unlike it, Clojure is also structured with maps (which are like hash tables).

Many of the questions that were discussed in the episode seemed very interesting to me. One of them is why did Lisp never become mainstream? To which Hickey replied that it had been created for very intelligent people for its use in research areas, also there was no attempt to involve with other programming languages. In addition, the reduction of interest in the areas of research in Artificial Intelligence caused that Lisp stop being used. I think it was one of the main reasons why Rick Hickey decided to base Clojure on JVM, so it is related to that mainstream language. Additionally, it was great to create Clojure in 2000 because the interest in artificial intelligence increased.

A very great thing about Clojure is that it has a powerful characteristic of Lisp, the Macros, which have the capacity of syntactic expansion, and this gives more power to programs written in Lisp or Clojure. Another thing that impresses me about Clojure, is that it runs with the same speed as Java. It is especially interesting because Clojure simplifies much longer operations, and it does almost everything functionally (while Java does everything structured), and still it manages to execute its code as fast as Java. The problem is with the arithmetic operations, since, in the conversation, is mentioned that Clojure uses Big Integers, so its performance is slower than Java on this. Even though, it has the possibility of using the same data types as Java (like ints) and then it is possible to do arithmetic at the same speed.

Clojure is also designed to be good in concurrency. I really like how Clojure managed to be friendly with concurrency thanks to the fact that data structures are immutable. Also, I think it's great that Clojure works on the issue of immutability in a very efficient way, that is, it does so in a time O(1) even when the fact of modifying data implies to do a new copy of that data. In addition, by using a persistent data structure, you ensure that previous versions of the copy are available.

I think that Clojure has a lot of potential, but that it continues to grow thanks to all the advantages it offers. It could be said that they combine the best features of Lisp along with all the advantages of interoperating with the JVM.

Comments

Popular posts from this blog

Revenge of the Nerds - Paul Graham

"The Roots of Lisp" by Paul Graham