Early thoughts on Clojure after one weekend
I started learning Clojure this weekend, a Lisp language that’s built for concurrency. It makes you approach solving problems in a functional way. This is all new to me coming from Python; an object oriented programming. However, since I don’t have any formal background in CS all of this stuff is new to me anyway :), but I’ve gotten used to doing things the Python way.
To sum it up, you build things with lots of functions in Clojure compared to Python where you group things in categories and leverage inheritance. When I first started learning to code last year, I approached it in a very functional way. Why? Because it’s natural to think that way. The principals of the language really speak to me.
This has to be one of the most concise languages I’ve seen so far. I’m a big fan of using shorthand syntax in python and things like list comprehensions, lambdas, etc. Clojure (and Lisps in general) make dealing with data extremely concise while maintaining readability. It’s like going from a machine gun to a rocket launcher.
No way this can be your first language
Clojure is completely unapproachable for those who are learning to code for the first time (given the current state of resources). All of the tutorials I’ve found are very… academic in explaining the language without providing examples that illustrate the common expressions used in Clojure. Setting up the dev environment alone was difficult (just use Leiningen and use a mac), and those unfamiliar with Java in general, there are lots of Java-isms that are mentioned in documentation, examples, etc. that I just don’t get. There is a really amazing community behind Clojure and I will contribute what I can to help intro people to it.
I need a problem to solve
When I was learning python, I learned really fast because I was working on solving my own problems. While Clojure is more of a leisure learning activity for me, I really need to find a problem to solve with it. Clojure looks awesome for data analysis, algorithms, but if I need to make a simple web app, I know I can bang it out in 3 days (I’m boasting) in Python/Django. I’m going to take my own advice and find a project that’s in Clojure’s wheel house that scratches my own itch.
Clojure feels like moving from a coal power plant to a nuclear one. I feel like a scientist or a mathematician about to launch a rocket when I use it rather than a foreman at a construction site building an office building. Ridiculous analogies aside, Clojure has incredible potential. I’ll save my thoughts about the metaphysical philosophy I’m uncovering about Lisps for another time, but that’s my primary reason for learning it…