[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

Reply via email to