I'm not really selling anything. I'm seeing a deeply rooted bug in our
way of thinking programming languages. Struggling is not necessary
unless you want to punish yourself.
My experience, and I feel I have enough in C to speak untroubled, is
that not all languages are like C when it comes to laying out your
thoughts. I used to think so, all my mind was trapped in this. The
language is very well defined, but cannot understand itself. Cannot be
worked itself like we work other data, except with a gigantic piece of
software.
If the code does not reflect the layers of thoughts, of course it cannot
scale, or very slowly. You need good abstractions to solve complex
problems. And good data structure, C has that better than any other
language.
In CL I can speak my mind in terms of layers and these layers fit nice,
or are easy to fix because there is no duplicate code. This also means
very short code. This is not because of the semantics of the language, C
is much better defined at precise memory handling, but precisely because
part of the art of programming in s-exp is partly in generating the
uninteresting part of the code, or reading it with a function, checking
for some bug patterns.
I could try to explain it another way : we are compilers. We have ideas
we need to translate into C, knowing that in turn C will be compiled
into some behaviour of the system. That pipeline is broken when your
layers do not fit well into the language. To fix this we'd need macros
to generate code, but C macros generate not code but text ! How's that
in any way useful ?
Other hint debunks :
- CL is much much older than C. Again not talking about the semantics,
but at the time it was out, C compiler technology was really not state
of the art. Though it had much more focused semantics, which made it win
most system code.
- CL is not functional, it is procedural like C and can generate native
code.
- You can encode any language in s-exp. Actually this is done at AST
level though we cannot access it with these bulky C compilers.
The good features of lisp are just from symbolic expressions. What Theo
said remains true to all programming. How the language is processed is
what I'm talking about.
Any hacker not knowing a couple of Lisp macros is a waste of mind.
--
Thomas de Grivel
"I must plunge into the water of doubt again and again."