InfoWorld: When did you develop Clojure? What was your intention in doing so?
Hickey: I started in 2005, and the first version I released was toward the end of 2007. It's kind of a Lisp for the JVM. My intention was to make a dynamic, functional programming language for the JVM.
InfoWorld: Why did you see a need for that?
Hickey: Because I had been building large systems in C# and Java, and the only way we could do them sanely was to do them in a functional style, but the functional style is not idiomatic in those languages. I wanted a language where functional style was idiomatic, and that's the case for Clojure.
InfoWorld: What's attracting developers to Clojure?
Hickey: Fundamentally, Clojure gives developers a lot of leverage. They can write short, succinct programs that work correctly the first time and are fast enough for production use. They're empowered by it.
InfoWorld: What would be the ideal application to write with Clojure?
Hickey: Clojure is designed to be a general-purpose language. It should be useful anywhere Java is. The areas where we've seen it take off most rapidly are, first of all, among startups. It's very popular among startups because they have new ideas they need to pursue quickly.
InfoWorld: Startups in what realm?
Hickey: All kinds -- people doing sales prediction on the Web and flight delay prediction, some social network stuff. Then it's also popular with people who are doing big data [projects].
InfoWorld: Where would you not want to use it?
Hickey: It's not great for scripting jobs because between the startup time in the JVM and the startup time in Clojure, it's not really good for places where you might use Perl. It's a little bit too bulky currently for smartphones, but we're working on that. Targeting Android is a little bit of a challenge at the moment. There are definitely people working on it.
InfoWorld: How would you persuade developers use Clojure for Android software development?
Hickey: People who like Clojure will choose it because of the power. Lisps traditionally empowered developers because you can eliminate anything that's tedious through macros, and that power is really what people keep going back for.
InfoWorld: When do you expect that developers will be able to use Clojure for building Android apps?
Hickey: They can right now. It's mostly an optimization [effort that is required] to make the startup and memory usage smaller and faster.
InfoWorld: Clojure is good for multithreaded programming. In this age of multicore programming, shouldn't Clojure have a bright future in that regard?
Hickey: Yes, absolutely. Clojure definitely has a sound model of state that keeps the programmers from having to use locks, and so it's great for concurrent programming and multicore.
InfoWorld: What's the status of Clojure?
Hickey: We're on version 1.3; version 1.4 should be [available] in the next month or two.
InfoWorld: What's going to be the main attractions in that?
Hickey: The main improvement is an extensible reader. You can add your own data types to what can be read.
InfoWorld: You talked about Datomic, which was developed in Clojure. What's the main purpose of Datomic?
Hickey: Datomic is a general-purpose database. It's for use by all JVM languages. It's for Java programmers and Scala and Clojure programmers and JRuby, all those. The appeal is that it's a transactional system that deals well with time and has scalability properties of these new distributed storage services.
InfoWorld: Right now, the marketplace has Oracle, SQL Server, MongoDB. What problem is Datomic solving that they're not solving?
Hickey: It's like traditional databases in being consistent and transactional, and it's like these new databases in being oriented toward flexibility for the application developer. It's bridging those two worlds.
InfoWorld: Is Datomic cloud-based data management?
Hickey: It can be. Our first solution is definitely in the cloud, and that's another area where we're pointedly different. It's meant to run in the cloud, unlike when you try to move a traditional database to the cloud it's a misfit in some ways, because it wants reliable disks and there aren't reliable disks. It's a new way of thinking about storage -- moving storage out of the database.
No comments yet.
Leave a comment
You must be logged in to post a comment.
Trackbacks are disabled.