1. 13
  1. 3

    Excellent article, as always

    There are advantages though to having a simple, regular syntax. Tools like syntax highlighters, linters, formatters, structured editors etc become much easier to write. It’s also easier to learn and remember the syntax (the clojure examples in this article are the first I’ve written in years but I didn’t have to look up the syntax or the core data manipulation functions).

    It seems that this dodges the actual qualitative reason why parenthesis matter for lisps. They makes macros work: http://calculist.org/blog/2012/04/17/homoiconicity-isnt-the-point/.

    1. 2

      The bigger benefit is this: When I write code in most languages the mental representation that I use for thinking about data in memory is a murky sort-of-boxes-and-arrows thing. When I write code in clojure my mental representation is literally just the data literal syntax.

      Part of the reason that programming is so difficult to learn is that most of what is happening is invisible by default and can only be inspected with active effort.

      Yes! I think Rich Hickey likes to talk about “reifying” things; this post makes a great case for that idea. When I was learning to code, so many languages just hand you a black box and expect you to know what to do with it. If you haven’t already developed skill in looking up API docs and such (as well as understanding common data structures implicitly), that’s really hard to deal with. Clojure almost always gives you something you can understand at a glance, and it makes a big difference. I may be a better programmer now, but I’m still thrown when I use a language that won’t let me just print whatever random value, which includes most static ones.

      By the way: I can’t see a date on this post. Looks like it’s new, but it’d be nice to include the time of posting somewhere on the page, if the author is reading.