Computerworld Australia - Part of Computerworld Australia's series of investigations into the most widely used programming languages.
In this interview, Clojure creator Rick Hickey took some time to tellComputerworld about his choice to create another Lisp dialect, the challenges of getting Clojure to better compete with Java and C#, and his desire to see Clojure become a "go-to" language.
What prompted the creation of Clojure? After almost 20 years of programming in C++/Java/C#, I was tired of it. I had seen how powerful, dynamic and expressive Common Lisp was and wanted to have that same power in my commercial development work, which targeted the JVM/CLR. I had made a few attempts at bridging Lisp and Java, but none were satisfying. I needed something that could deploy in a standard way, on the standard platforms, with very tight integration with existing investments.
At the same time, throughout my career I have been doing multithreaded programming, things like broadcast automation systems, in these OO languages, and seen nothing but pain. As a self-defense and sanity-preserving measure, I had moved my Java and C# code to a non-OO, functional style, emphasizing immutability. I found this worked quite well, if awkward and non-idiomatic.
So, I wanted a dynamic, expressive, functional language, native on the JVM/CLR, and found none.
Where does the name Clojure come from? It's a pun on the closure programming construct (and is pronounced identically). I wanted a name that involved C (CLR), L (Lisp) and J (JVM). There were no search hits and the domain was available -- what's not to like?
Was there a particular problem the language aimed to solve? Clojure is designed to support writing robust programs that are simple and fast. We suffer from so much incidental complexity in traditional OO languages, both syntactic and semantic, that I don't think we even realize it anymore. I wanted to make "doing the right thing" not a matter of convention and discipline, but the default. I wanted a solid concurrency story and great interoperability with existing Java libraries.
Why did you choose to create another Lisp dialect instead of extending an existing one? While Lisps are traditionally extremely extensible, I had made some design decisions, like immutability for the core data structures, that would have broken backward compatibility with existing Scheme and Common Lisp programs. Starting with a clean slate let me do many other things differently, which is important, since I didn't want Clojure to appeal only to existing Lispers. In the end, Clojure is very different and more approachable to those having no Lisp background.
- DevOps meets ALM in the Cloud - Cloud DevOps PaaS To improve software delivery performance and effectiveness, teams need automation, governance, architecture best practices, and increased team collaboration. Find out more.
- Coding with JRebel: Java Forever Changed With JRebel, developers get to see their code changes immediately, fine-tune their code with incremental changes, debug, explore and deploy their code with...
- What Developers Want: The End of Application Redeploys Eliminate application restarts in Java with JRebel! JRebel is a JVM plugin that eliminates application redeploys from the Java development cycle, a process...
- How a German energy company saved 1 day per week of development time with JRebel Check out the following case study to see how Heliocentris, a global energy supply and efficiency company deployed a development solution that was...
- IBM FlashSystem V840: Leveraging Software-Defined Flash to Drive Your Business With end-to-end, tightly integrated functionality and super-fast flash technology, products like IBM FlashSystem V840 Enterprise Performance Solution empower businesses to leverage the efficiency...
- Leveraging Flash Storage to Accelerate Oracle Real Application Clusters Join this webinar to understand the latest solid-state storage trends, the specific applications driving solid-state storage deployments and the benefits of deploying the... All App Development White Papers | Webcasts