Clojure Introduction and Resources
What is Lisp?
Lisp is a family of programming languages, first conceived in 1958. The name comes from "List processor," because lists are the primary data structure in the language.
Lisp has a long history and an interesting culture . The language treats code as data, making it highly recursive and expressive. Experienced Lisp developers can write new features, faster because of the language's power and conciseness.
What is the Java Virtual Machine?
The JVM is a virtual computer that compiles and runs Java, and other languages. JVM is an idea, not a specific piece of software — one of the most popular implementations of the JVM is HotSpot from Oracle.
The idea behind Java and the JVM is that you can write a program in Java (or another supported language), and compile it for the JVM. Then, you can run it on any computer that runs a JVM. This makes it extremely portable — you can write code once, and run it anywhere.
Clojure: Lisp on the JVM
Java is everywhere, which means that Java Virtual Machines are everywhere. Creating a version of Lisp that runs on the JVM made it possible to run Lisp anywhere. That was the primary motivation for creating Clojure, and a great reason to learn the language.
Another benefit is that Clojure provides access, via the JVM, to countless tools and third-party libraries written in Java. This gives Clojure a development ecosystem that is more powerful than those previously available to any Lisp dialect.
Clojure Programming is an extensive open source wikibook on the language.
Learn X in Y minutes, Where X=clojure is a good one-sitting intro to the language, for people with existing programming skills in other languages.
Clojure — Functional Programming for the JVM is a detailed tutorial aimed at Java developers.
The Clojure Language is a 25-part video tutorial series introducing the language.
Clojure Distilled is a must-read tutorial/essay that covers not just the syntax and vocabulary of the language, but the philosophy behind it; it attempts to distill how Clojure developers think about problems, and explores a way of solving problems that will likely be new for developers coming from other languages.
Other Resources for Learning Clojure
Try Clojure, is an online Clojure interpreter, letting you get some experience Clojure in the browser before installing it locally.
ClojureTV has video tutorials and live talks about a variety of Clojure development topics.
4clojure is an interactive learning site with programing exercises in Clojure.
Full Disclojure is another video channel with tons of great Clojure tutorial videos.
A Clojure Newbie Guide is a helpful resource pointing the new Clojure developer to all the essential tools and resources that form the Clojure ecosystem.
Clojure Reference Material
The Clojure Style Guide is a community-written guide to best practices for writing clear, maintainable Clojure code.
Clojure Cheatsheet is a quick reference page for all the little things you just have to remember.
Community and Ongoing Learning
Clojure Subreddit is a very active forum for asking questions and interacting with the Clojure community;
Clojure Google Group and Mailing List is a good place to ask questions and get support for Clojure development;
Disclojure is a popular site for Clojure news and events;
Planet Clojure aggregates the most important articles from the top Clojure blogs.
Books about Clojure
There are a lot of books about Clojure. Here are the ones that the Clojure community recommends again and again:
Clojure for the Brave and True (2015), by Daniel Higginbotham, is a must-read guide to the language. It is also available to read free online, and forms the basis for a fantastic website full of Clojure resources.
The Pragmatic Bookshelf has several excellent books on Clojure:
Programming Clojure (2012), by Halloway and Bedra;
Mastering Clojure Macros: Write Cleaner, Faster, Smarter Code (2014), by Colin Jones;
Clojure Applied: From Practice to Practitioner (2015), by Vandgrift and Miller;
Web Development with Clojure: Build Bulletproof Web Apps with Less Code (2016), by Dmitri Sotnikov.
Practical Clojure (2010), by VanderHart and Sierra, and Pragmatic Bookshelf's Programming Clojure (mentioned above) were the first two books published about the Clojure language. The Pragmatic book contains more and better code samples, while this book from Apress has more coherent explanations. These two books set the tone for how most Clojure developers think about the language, and should therefore be read by anyone serious about learning it.
Clojure Programming (2012), by Emerick, Carper, and Grand, is a very clear introduction to the language, especially for people coming from web-oriented programming and scripting languages like PHP and Python.
Living Clojure (2015), by Carin Meier, is a very practical guide to the language, with the helpful assumption that the reader understands programming in general. The book includes a structured learning plan designed for either self-study or corporate training.
Should I learn Clojure?
It is a widely-accepted truism that every developer should learn Lisp, even though you probably won't use it. But now that the power of Lisp has been combined with the ubiquity of Java, its a language that is both good to learn and exceptionally useful.
Good Clojure developers are highly sought after and well paid, and the language is growing in popularity.
If you're looking for programming skills to set you apart from other developers, Clojure is one of the best tools to add to your kit — and to your resume.
Further Reading and Resources
We have more guides, tutorials, and infographics related to coding and development:
Common Lisp: Intro, Resources, and FAQ: learn about this very popular version of Lisp.
Scheme Programming: Scheme is an educational language based on Lisp.
Java: Introduction, How to Learn, and Resources: check out our detailed guide on becoming a Java programmer.
What Code Should You Learn?
Confused about what programming language you should learn to code in? Check out our infographic, What Code Should You Learn?
It not only discusses different aspects of the languages, it answers important questions such as, "How much money will I make programming Java for a living?"