Hackernoon logoClojure has been around for about 8 years, Clojurescript for about 6. by@alexdixon

Clojure has been around for about 8 years, Clojurescript for about 6.

Author profile picture

@alexdixonAlex Dixon


If a relative giant like Angular can crash and rewrite itself completely(to the point where it’s not even the same entity anymore) what chance does a small unknown compiled language has? Sure it sounds cool, but if I have 10 hours a week to devote to learning something new, I would not “waste” it on something that many people consider experimental at best.

Clojure has been around for about 8 years, Clojurescript for about 6. I don’t see them as experimental. Neither does Walmart.

Granted, Angular is a framework and Clojure is a language, but I think it’s worth considering rewrites in general. What are the necessary conditions for me to even consider a rewrite? Typically, it’s because I got something fundamentally wrong.

Clojure and Clojurescript haven’t been rewritten. Powerful features have been added via libraries that supplement the language (clojure.core.async, clojure.spec). But the core is the same. Things like data structures, ways of defining variables, modules, and function syntax have not changed. Javascript has introduced new ways of doing each of these during the same time period. Maybe those changes weren’t strictly necessary, but there doesn’t appear to be any motivation for changes like that in Clojure. Maybe they got it right the first time.

It’s not only about track record, it’s about the fact that most of us lost so much time learning things that were obsolete 3, 6 or 12 months later, that choosing our next time investment is done more carefully.

We should absolutely think carefully about the choices we make as developers, because they effect us every day, and long term, it really adds up. This was perhaps my primary motivation in publishing this article.

Consider Lisp in general and Clojure as just the most modern, accessible version of it. The features that define Lisp and that it introduced — conditionals, garbage collection, dynamic typing, higher order functions, recursion, a REPL, self-hosting, among others — have not become obsolete. We tend to view them as features of modern languages. Lisp’s syntax hasn’t become obsolete either. Someone who learned Lisp 59 years ago could read and write Clojure.

There’s an apparent division to me here: In the family of programming languages, there’s Lisp, and then there’s everything else. Everything else changes substantially, branching off to add features or a different syntax. C -> C++ -> Java -> Python -> Ruby -> Javascript -> ???.

But there is no Lisp++. In 59 years, its basic syntax, features, and principles have not changed. Why?

I’d encourage anyone interested in programming to spend time learning a Lisp. Clojure might be the easiest to pick up, and if you end up liking it, it has an abundance of practical applicability. It may feel fundamentally different, and I think it is. ReasonML or “the cool new thing” may not feel so different, and perhaps that should be telling. If it seems so similar to the place we left, perhaps we haven’t gone all that far.

Hacker Noon is how hackers start their afternoons. We’re a part of the @AMIfamily. We are now accepting submissions and happy to discuss advertising & sponsorship opportunities.
To learn more, read our about page, like/message us on Facebook, or simply, tweet/DM @HackerNoon.
If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories. Until next time, don’t take the realities of the world for granted!


Join Hacker Noon

Create your free account to unlock your custom reading experience.