You should check out the content here: https://wiki.c2.com/?LispLanguage
And I recommend the linked pages as well, like: https://wiki.c2.com/?LostInaSeaofParentheses and https://wiki.c2.com/?EssExpressions
As for me, I think there is something about the conceptual symmetry of Lisp and it’s recursive nature as well.
Symmetry and Recursion I feel are everywhere in natural structures like Fractals. Repeating patterns, with the same pattern repeated within itself, and again… Those things have a kind of natural aesthetic.
Compare:
(foo bar)
to:
foo(bar);
The former is symmetric, the latter is not. The former can be repeated inside itself as well, while the latter will change appearance when doing so:
(foo (foo bar))
foo(foo(bar));
Because of its semicolon, when repeated inside it doesn’t have it, when outside you need it.
And I would say, like with Fractals, there is a kind of mental aesthetic when you realize that it can all be easily formalized as a mathematical formula. The Lisp syntax being easily parable and manipulated by programs gives me that same kind of meta-giggle.
It’s symmetric, it’s recursive, it repeats its pattern within itself, and it can be easily understood and manipulated by computers.
That said, I think it can also be noisy to some. Visually it does not look like prose, more like noise.
Bit if you were to frame a piece of code on canvas and put it up in a coffee shop, would you rather frame some Java or some Lisp? I think most bystanders that know nothing of programming would be more captivated by a frame of some Lisp code. I think it has a bit more of that “hacker aesthetics”, and the unfamiliarity of its visual, the noise of so many parenthesis, that I have no idea what this could be!! I think that will be more interesting to bystanders, than seeing some python where they might even be like… Oh it’s just like english, I think I can figure this out easy.
Some thing that bothers me though, is that there is some asymmety in the nesting, the tendency for things to go to the right, the “rightward drift” of Lisp.
It annoys me because it isn’t symmetric in the vertical:
foo = a
bar = b
ret = foo + bar
return ret
It looks more symmetrical in the vertical, it’s blocky, aligned, where as.in Lisp:
(let [foo a]
bar b
ret (+ foo bar)
ret)
Lisp wiggles, your eyes go right and down and back left. I think this is one of its visual issues in terms of aesthetics.
Just rewriting:
(
let
[
foo bar
bar b
ret (+ foo bar)
]
ret
)
Gives it more vertical symmetry and I think.is visually more pleasing though now figuring out the scopes as a programmer reading the code gets hard.