Friday, August 28, 2015

Thoughts on Clojure After Using It For Six Months

When I was in high school, in the late 1970s, “pocket” scientific calculators were hot. They were portable computation devices that hadn't even existed a decade prior, were incredibly expensive when they came out, but were now reasonable birthday presents for the budding geek. There were several manufacturers, but the only ones that mattered were Texas Instruments (TI) and Hewlett Packard (HP). The cool kids all had HPs.

There's no question: HP calculators were better. A TI calculator was about half the price of an HP calculator with the same features, but it reached that price point by cheaper build quality. You could drop an HP calculator down a flight of stairs without ill effect, but a TI would start to have keyboard problems within a year of normal use. In fact, that's how I got my first calculator: my father's TI stopped working, he sent it to TI for repair, but bought another before it returned.

Another difference between TI and HP was that the former used algebraic notation: “1 + 2 =” while the latter used reverse Polish notation (RPN): “1 ENTER 2 +”. From the perspective of a calculator designer, RPN makes a lot of sense: algebraic notation requires more work, and the transistors that performed that work could be put to better use elsewhere. Or put another way — one intended to taunt an HP-wearing geek — RPN-based calculators were less advanced than algebraic calculators.

Here's the interesting part: the vast majority of those HP aficionados were convinced that RPN was the reason that HP calculators were better.


Walter GR said...

The last sentence is a little ambiguous...

Did you mean to imply that the vast majority of Clojure aficionados are convinced that parentheses alone are the reason Clojure is better?

Or that the vast majority of Clojure aficionados are convinced that S-expressions, which enable things like easy construction of macros and - say - easy(ier) structural editing, are the reason Clojure is better?

Or neither of those, and that there's some other reason why Clojure is better?

Or have I missed your point all-together? :)


Keith Gregory said...

I think I answered this in my followup post, but here's the one-line summary: there were a lot of things that made LISP remarkable, so I feel the focus on S-expressions is misplaced.

Incidentally, I do plan a future post on macros, but I'm still working through my thoughts.