R
Rahul Jain
I don't find C's syntax particularly complex at all -- though I'm the
first to admit that this may be due (in part) to having used it nearly
as long as I have Lisp.
The description of the structure of C code is objectively more complex
than for Lisp code.
I have to admit this is an argument that surprises me -- while I agree
that C code generally has more (and better) structure that most Lisp
code, this is the first time I've seen even the most rabid advocate of
a language claim that its lack of structure was actually an advantage.
This is what allows Lisp to be what it is: a language where you add
features as you want them. With a complex microsyntax, the structure of
the parsed code won't be the same as the structure of the code itself.
Is a for loop really 3 individual syntactic elements one after the
other, or is it one element with three parts? if/else blocks become even
more complex. How would I define a new type of operator like that so
that the parser is able to cope with it? In Lisp, the parser already can
cope with arbitrarily structured code, because the code contains its own
structure.
The syntax of C obfuscates structure only to the least perspicacous of
observers.
My comment above about a for loop's syntax should explain what I was
talking about.
...or at the end, or in a property list, or just about anywhere else
you feel like putting it.
In that case, you're not writing Lisp code. You're defining some data
structure that's manipulated by some code into Lisp code, maybe. The
specification of Lisp's evaluation semantics is as I said.
I won't bore you with the (ancient) code
that did it, but I have some old Lisp here that accepts input in
postfix format (as non-list S-expressions, natch) and prints turns
them into normal infix notation.
It's not inputting Lisp code, then. It's using a custom parser.
I suspect what he's really missing is the fact that Lisp is almost
always written using an editor that's aware of Lisp syntax to at least
a fairly reasonable degree, so indentation and some sort of
highlighting to match parentheses is extremely common -- though in
fairness it should be pointed out that it's common primrarily because
machine help is nearly an absolute necessity to compensate for the
paucity of Lisp syntax.
Of course, but I find that I can't deal with Java code effectively
without the same features, either. I ignore microsyntactic noise in both
Lisp and Java, I suppose.