The Lispers contend that the use of parens is merely a surface detail which the reader can get past with a bit of effort. This is clearly true for some people, but I don't believe it to be generally correct.
Much of what we do when reading (whether code or text) happens at a low level, way below conscious thought. This allows us to, for example, skim a list and spot the desired entry without having to think about each one. Formatting and punctuation provide guideposts that help in this process.
Similarly, the syntax of most programming languages contains a wealth of punctuation characters. A well-formatted and idiomatic program can be skimmed quickly, without the need for understanding each symbol.
Lisp, in contrast, removes all of these guideposts. So, in order to skim a Lisp program, the reader must understand at least the general nature each symbol s/he encounters. For example, a cond is a much different operator than an add.
So, although I like the benefits of Lisp, I dislike the syntax so much that I have avoided using it for decades. Fortunately, José Valim has created a language (Elixir) which provides Lisp's benefits but uses a syntax (mostly Ruby) which I find appealing.
Lisp programmers see the list/tree structure of code. The various operators have specific sub list/tree patterns.
Learning to read Lisp code is largely learning theses patterns.
Since the Lisp code is usually semi-automatically formatted and indented according to these code patterns, they are not that difficult to see. Even generated code can be viewed in pretty printed version.
I expect the XML version of Lisp can be processed to create the just-parentheses version of Lisp.
Does anyone know how hard it would be to convert the just-parentheses version of Lisp into the XML-version of Lisp?
Much of what we do when reading (whether code or text) happens at a low level, way below conscious thought. This allows us to, for example, skim a list and spot the desired entry without having to think about each one. Formatting and punctuation provide guideposts that help in this process.
Similarly, the syntax of most programming languages contains a wealth of punctuation characters. A well-formatted and idiomatic program can be skimmed quickly, without the need for understanding each symbol.
Lisp, in contrast, removes all of these guideposts. So, in order to skim a Lisp program, the reader must understand at least the general nature each symbol s/he encounters. For example, a cond is a much different operator than an add.
So, although I like the benefits of Lisp, I dislike the syntax so much that I have avoided using it for decades. Fortunately, José Valim has created a language (Elixir) which provides Lisp's benefits but uses a syntax (mostly Ruby) which I find appealing.