Clojure (the first talk) - Rich Hickey at LispNYC (2007)

Discover the fundamentals of Clojure, a Lisp-inspired language that prioritizes functional programming, immutable data structures, and developer productivity, and explore its innovative approaches to concurrency, macro definition, and polymorphism.

Key takeaways
  • Class is not a fundamental concept in Clojure, but rather a concept from Java.
  • The language is designed on top of data structures, and the reader creates them.
  • Clojure is a Lisp, but with a reader that extends the standard Lisp reader.
  • The language has a strong focus on functional programming, with immutable data structures and lazy evaluation.
  • Object orientation is not a core concept in Clojure, and in fact, closures and immutable state are preferred over mutable stateful objects.
  • Concurrency is a key aspect of Clojure, with support for transactional systems and efficient inter-thread communication.
  • The language has a strong focus on developer productivity, with tools like the REPL and an extensible reader that allows for macro definition.
  • Clojure can seamlessly interact with Java, and has extensive support for the Java Util collection interface.
  • Macro definition allows for the creation of domain-specific languages within Clojure.
  • Functional programming concepts, such as map, filter, and reduce, are fundamental to the language.
  • Clojure has a unique approach to polymorphism, using runtime polymorphism rather than static dispatch.
  • Immutable data structures and lazy evaluation make it difficult to write programs that modify state, but rather promote a focus on immutable data.
  • The language has a strong focus on simplicity and ease of use, with a minimalistic approach to syntax and a focus on minimizing vendor lock-in.