* OSCON 2011 - Clojure: Changing the way you think about Change ** Description Clojure's approach to state makes it particularly well-suited for concurrency, but understanding the way it separates out state from immutable values will give you a good grasp on how functional programming makes dealing with change much easier and how you can adapt that strategy to your codebase. ** Abstract Rather than attempt to give a general overview, this talk will start with a brief overview of what Clojure offers, followed by a dive into its philosophy of state and identity. Programming involves working with values. All languages treat numbers as values; 42 never changes even though you can add and subtract from it to get different numbers. Functional programming treats data structures as values as well; you don't change them, you perform operations on them that result in new variations. Clojure's model allows you to associate a single identity with a series of values modeled as change over time. Since they are immutable, concurrent processes can work with old versions freely, and there are no surprises when things shift under your feet. A good understanding of state and values helps you write more robust code no matter the language.