I think you're focusing on the wrong part of Abstract Syntax Tree. Lisp, fundamentally, has no syntax. It's just trees. That's the crux of how you write it. When fleitz said that he doesn't like the parens, I was just commenting, perhaps in too pithy a fashion, that the parentheses are incidental to the language. A vessel to hold the substance, as a glass holds water, if you will.
I see what you mean. But I don't think that's what he meant by Lisp.
After all, if you believe that, then Python is a Lisp too[1]. And when people say "Lisp", they don't mean "Scheme and CL and [...] and Python".
Sure, like any class of languages, there is not a single syntax. But every lisp has a syntax. And the languages people associate with the class "Lisp" use parens. And in many peoples' opinions, there are better ways of representing an AST. Like indentation, for example. Or curly brackets.
You'll notice that in the first paragraph there, he says:
> Python supports all of Lisp's essential features except macros, and you don't miss macros all that much because it does have eval, and operator overloading, and regular expression parsing, so some--but not all--of the use cases for macros are covered.
Macros are a huge part of Lisp. Were they not, I don't think you'd see Lisp programmers defending the bare bones not-syntax so fiercely.
For what it's worth, if you get good at a language, you start decomposing things into trees yourself when you're faced with some tricky code.
Yes, exactly. The power of Lisp's 'syntax' is that anything expressible as an s-expr can be written in Lisp. This is not the case with other languages, even though they are all parsed into s-exprs. The parser simply can't produce certain s-exprs.
*Actually, I'm not 100% sure that this is true - it would be more accurate to say that I am not aware of any other language that can be used to produce an arbitrary s-expr, but that such may indeed exist. If anyone can correct me on this point it would be much appreciated :-)