Subject: Re: Difference between LISP and C++
From: Erik Naggum <erik@naggum.no>
Date: 24 Oct 2002 14:59:43 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3244460383000601@naggum.no>

* Joe Marshall
| (In C, a missing function reference, if you can generate one, usually
| ends up with the processor attempting to execute data. [...])

  It is quite easy to produce binaries with dangling function references --
  just compile it with a different version of the dynamically linked/shared
  object libraries.  The program loader and linkage editor will then most
  likely croak on you when the program is attempted loaded by a process,
  but you could conceivably have redirected the function call to a debugger
  that would break at this point just like Common Lisp environments do.

  I think a good understanding of the loading, linking and function calling
  mechanisms in C programs in the modern Unix environment is prerequisite
  reading for someone who wants to learn how /similar/ the loading, linking
  and function calling mechanisms in Common Lisp.  If you do not understand
  how the C world actually works, the misconceptions come back to hurt you
  real bad when you try to understand Common Lisp.  If you get it right in
  the C world, the Common Lisp way is just a matter of delaying some of the
  operations, and a difference in timing is not a fundamental difference
  that should cause any sort of difficulty in understanding.  Therefore, if
  someone has problems understanding the Common Lisp way and compare to how
  different it is from the C way, must be assumed to be ignorant of the C
  way, as well.  The same probably goes for Java and C++, but I have not
  had any direct contact with people who have been led as much astray by
  these languages and their runtime environments, so I would only speculate
  and extrapolate, and this is the subject of research, not opinionating.

-- 
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.