DEV Community

Cover image for Learning Clojure, part I
Камило Куньа
Камило Куньа

Posted on • Updated on

Learning Clojure, part I

What's Clojure?

Clojure is a LISP Dialect originally made to run on the JVM (Java Virtual Machine) and has been ported for the .NET and JavaScript ecosystem as well.

As a LISP Clojure adopts dynamic typing functional programming as the main programming style and as it runs on JVM and is mainly written in Java it can interoperate with Java seamlessly and run the same code on any platform that runs JVM.

When Clojure was created?

Clojure was an experimental project that Rich Hickey released in 2007 after prior attempts to make interoperability between Common LISP the language he was using at his job and the greater programming ecosystems JVM and .NET.

The language is being developed as a community-driven project and has evolved a lot since its initial release as one of the most successful functional programming languages in the mainstream.

Why learn Clojure?

Let me try to sell this to you.

Many of the most regarded programmers of all time recommended that every programmer at a certain point should try a LISP dialect.

Richard Stallman, Founder of the Free Software Movement in How I do my computing:

"The most powerful programming language is Lisp. If you don't know Lisp (or its variant, Scheme), you don't know what it means for a programming language to be powerful and elegant."

Eric Steven Raymond Founder of the Open Source Initiative in How to become a hacker:

"LISP is worth learning for a different reason — the profound enlightenment experience you will have when you finally get it. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot."

Both founders of the biggest FOSS movements and authors of important open source projects have recommended that every programmer learn LISP for decades and there a many more that also did as Edsger Dijkstra, Bjarne Stroustrup, Larry Wall and Alan Kay.

Clojure is a LISP that runs in JVM one of the most popular runtimes ever created and that empowers tons of the most famous systems out there. Being a JVM language means it can access all the Java ecosystem and thus making it capable to use a very wide range of libraries and tools to make useful things.

Learning Clojure empowers you as a programmer to have the enlightenment of a LISP and the productivity and capacity of Java. If you want to build robust systems with a language with extreme expressiveness Clojure is the right language for you.

How to learn Clojure?

There are many great resources where you can learn Clojure for free.

The first one is Clojure for the Brave and True a free online book written by Daniel Higginbotham that teaches Clojure in a very fun approach and with a lot of visual content that helps to illustrate each lesson.

If you prefer something a little more practical, there is the Clojure Koans a set of Clojure exercises that help to guide you over the language syntax and rules. Each lesson is a unit test written based on a problem you have to resolve using the part of the language being taught.

If you prefer the best of the two worlds is the exercism project, a website that reunites lessons divided into chapters and lessons with community mentors to answer and help in community forums and discussions.

Where I can find help?

The Clojure community is great and there are a lot of places you can reach other clojurians.

There is the official community forum that is hosted on the language website for joining the forum you need a GitHub account, after authenticating you can post questions (and answers) in the forum.

If you prefer to use Discord you can join one (or both) the Discljord or Clojurians Discord Servers. Both are great discord communities dedicated to Clojure.

If you're on Twitter you can join the Clojure Community
there you can find a lot of tweets and people related to the language and ask for help or any question you have.

That's all folks! (At least for now)

This is just the beginning of a series of posts I will write while learning Clojure for my new job. I'm eager to start developing great applications with it and hope you continue to follow the upcoming posts.

Top comments (1)

ansfdli profile image

thanks for sharing :D