[EMAIL PROTECTED] wrote:
(1) Many languages have an eval function that lets you effectively have
"macros" just like Lisp....e.g. Python, Ruby and Javascript IIRC.
I think there's a qualitative difference between LISP / FORTH and other
languages in this regard. I've seen C functions that take the source,
write it to a file, compile it into a DLL and load it. Not quite the
same thing.
It's a question of seamlessness, in part. You can actually extend the
language in LISP and FORTH in a way you can't in other languages. FORTH
even lets you change the syntax to the point where you can have literals
for types that weren't in the language before - strings aren't "built
in" in FORTH, and integers are barely special-cased, for example.
It's so easy in LISP that major parts of your program wind up running at
compile time - sometimes as much as 30% of the code is macros. You'd be
in trouble if 30% of your Python code was calls to eval.
(2) Functions and data are not essentially the same thing any more than
nouns and verbs are essentially that same thing. They can only
be *represented* by the same language/alphabet.
Yet this was rather a novel concept back then - that you could have
machines that actually modified themselves as they ran. It's still very
rare - it's still a big selling point if your van can take out the back
seats to carry something big. Most of the computing hardware was very
hard-wired at the time to do only one task. Those that were more
flexible were programmed by reorganizing which wires went where inside
the machine.
(3) This notion can be traced back to "stored program concept" credited to
ENIAC authors. They realized data and instructions could be stored
in the same hardware as if they were the same thing. But!!! an instruction
is only *represented* by an integer.
No it's not. Both integers and instructions are patterns of bits. It's
not an integer any more than it's an instruction or (for that matter) a
floating point number. :-) One program interprets it as an integer,
another as an instruction. It wasn't uncommon for assembly programs to
add instructions from different parts of their code together, using them
as constants.
--
Darren New / San Diego, CA, USA (PST)
It's not feature creep if you put it
at the end and adjust the release date.
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg