> traditional syntaxes are a way of representing an AST in text,
Actually, no. They're a way of unambiguously representing said AST. The just happen to be a lousy way of doing so. Let's see why.
> and commonly considered to be "better" by the particular language's adherents
Interestingly enough, almost none of those adherents actually know their favorite language's syntax.
Why do I say that? Because very few people know the full precedence of expressions. So, they break expressions in unnecessary places and/or add redundant parentheses.
And, the few folks who actually do know their language's syntax know better than to actually use that syntax because they know that the person reading their code doesn't know it, so they, the experts, are forced to over-parenthesize.
> What representation is "better" really boils down to taste and opinion.
And then there's the problem of manipulating said AST. To do so for a traditional language requires a parser and a bunch of datastructures, which every project reimplements. Everything that you need for lisp is built-in.
And then there's the fact that Lisp's AST macro processing is built into the language processing scheme.
> Sure, you don't get to apply proper macros, but Java/Ruby/etc. programmers don't care about that.
The C programmers care, but they're used to being abused by C's macro system.