Clojure Programming Alters Thinking Patterns

It has been a little over a year working with Clojure; I have had a lot of help from the Clojure community along the way; and despite not having a lot of production Clojure code to show for my efforts, I feel my progress has been good; the year about what I expected. What I did not expect, however, was the teachings of the Clojure luminaries have come true. Learning Clojure has altered my thinking patterns and for the better.

As I return to upgrade an Automatic Meter Reading (AMR) water system written two¬† years ago and primarily in Python, I’m beginning to write new code the way I write Clojure code, bottom up, looking at specific functions first, and then weaving those functions together in higher order logic.

It is not practical and absolutely not necessary to re-write a stable Python/Django front-end system in Clojure, but already, I am looking for modules that would support intra-process communications between programs written in each language. I see the benefit of writing more of the sophisticated water use reports at least using Clojure’s functional influence, if not fully writing the reports in Clojure itself.

I’m glad I know Python. I can get something up and running that I can understand two years later, and sustain it without blowing up a system that runs 24×7. But, if I never write another Clojure program, which is unlikely, I’ll certainly be altered by Clojure’s influence permanently.



Filed under Clojure, python

3 responses to “Clojure Programming Alters Thinking Patterns

  1. Nice article and I second your experience. Learning the Clojure / Lisp way of thinking about programming has changed the way I write Ruby. Fortunately, Ruby itself has strong Lisp heritage, so I feel I can transfer the lessons from Clojure to it relatively painlessly. One curious thing is that within Lisp, both “bottom-up” and “top-down” styles are used with great flexibility. I use the former to stitch together a program from small, targeted functions. I use the latter to express a DSL that expresses the domain of a problem, and then figure out the logic to “make it work”.

    I’ve written about the “initial shock” of Lisp exposure here:

  2. This has been exactly my experience as well. Clojure has made an enormous impact on my thought process and how I approach problems, though I wrote Python & JS for production.

    • Octopusgrabbus

      I definitely do not want the “if I never program in it again… ” part to come to pass, however. I like Clojure as a language.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s