Interview on Clojure
AT JAX London Autumn Edition 2010, Neal Ford will deliver a hands-on session on pair programming and agile development. We caught up with him to find out more about this session, and to talk about Clojure....
JAXenter: There are many new languages emerging for the JVM. What benefits does Clojure offer?
Neal Ford: Clojure is a fascinating mix of old and new. It's a Lisp (arguably the most powerful language ever created,) yet it is also functional and high performance on the JVM. Clojure syntax looks a little odd to developers who come from traditional C-based languages, but it's easy to learn because there is very little language actually there -- Lisp has very little syntax. It also helps that there are incredibly powerful libraries that eliminate the need to write much of the boilerplate code you see in other languages. The end result is concise, powerful, high performance code.
JAXenter: What does Clojure share with Lisp?
Neal Ford: Clojure is a Lisp implementation (with all the benefits that implies,) but the creator of the language, Rich Hickey, made some changes to the way Lisp's have traditionally been done to make it a better match for the JVM, and the end result is a Lisp that supports all the power of Lisp but optimized both for usage and speed for the JVM.
JAXenter: How does Clojure deal with concurrency?
Neal Ford: Clojure's support for concurrency is what will put it on many developer's radar. Rich made some very smart choices about mutable state within Clojure, making the default immutable (even for the rich collections API.) Mutable state has specific data structures to manage changes to their state. The combination of inherent thread safety plus really smart data structures for the state that does need to mutate make Clojure one of the very best languages on the JVM for highly concurrent processing. This is one of the early adaptor patterns for starting to use Clojure.
JAXenter: In addition to your 'An Introduction to Clojure' session at JAX London, you will run an Agile Development session that promises to be “hands on.” What can attendees expect from this session?
Neal Ford: In this session, I'm going to allow the developers (who all, or at least half of which, brought laptops) experience pair programming for real. I'm going to give the group a simple problem, then let them pair program to arrive at the result. This is a chance to see for yourself just how pair programming really works (and it's not just two people fighting over the same keyboard!)