Clojure is a modern Lisp dialect that runs on the Java Virtual Machine. Created by Rich Hickey, it emphasizes immutability and functional programming while providing practical access to Java’s ecosystem.
Origins
Rich Hickey spent two years developing Clojure before its 2007 release. He wanted a Lisp for the modern age—one that could leverage the JVM’s performance and libraries while embracing functional programming principles.
Key Features
Clojure introduced distinctive concepts:
- Persistent data structures: Immutable but efficient through structural sharing
- Software transactional memory: Safe concurrent updates
- Protocols and multimethods: Flexible polymorphism
- Homoiconicity: Code as data, enabling powerful macros
- REPL-driven development: Interactive programming workflow
Design Philosophy
Hickey’s philosophy shapes Clojure:
- Simple vs. Easy: Simplicity (few concepts) matters more than ease (familiarity)
- Immutability by default: Mutable state is opt-in
- Data over objects: Plain data structures over complex objects
- Leverage the host: Full interop with Java ecosystem
Impact
Clojure proved that:
- Lisp could be practical for modern development
- Immutability could work in real applications
- Functional programming could run on the JVM
- Old ideas (1958’s Lisp) could solve new problems (concurrency)