DeAI Research
Source · Symposium on Dynamic Languages (DLS)

The Clojure programming language

2008Rich Hickey

cid 392873612bebb6e68b0d99c69d051fe5c32b23a1c6d6b2df9aea594c42be4032 · original · via openalex

Title: The Clojure programming language
Authors: Rich Hickey
Venue: Symposium on Dynamic Languages (DLS)
Year: 2008
Canonical: doi:10.1145/1408681.1408682
URL: https://doi.org/10.1145/1408681.1408682
Collector: openalex
OA: false

ABSTRACT
Customers and stakeholders have substantial investments in, and are comfortable with the performance, security and stability of, industry-standard platforms like the JVM and CLR. While Java and C# developers on those platforms may envy the succinctness, flexibility and productivity of dynamic languages, they have concerns about running on customer-approved infrastructure, access to their existing code base and libraries, and performance. In addition, they face ongoing problems dealing with concurrency using native threads and locking. Clojure is an effort in pragmatic dynamic language design in this context. It endeavors to be a general-purpose language suitable in those areas where Java is suitable. It reflects the reality that, for the concurrent programming future, pervasive, unmoderated mutation simply has to go. Clojure meets its goals by: embracing an industry-standard, open platform - the JVM; modernizing a venerable language - Lisp; fostering functional programming with immutable persistent data structures; and providing built-in concurrency support via software transactional memory and asynchronous agents. The result is robust, practical, and fast. This talk will focus on the motivations, mechanisms and experiences of the implementation of Clojure.