Newsgroups: comp.ai,comp.ai.genetic,comp.ai.neural-nets,comp.lang.lisp,comp.lang.c++,comp.os.msdos.programmer,comp.lang.asm.x86,comp.unix.programmer,comp.ai.philosophy
Path: cantaloupe.srv.cs.cmu.edu!rochester!cornellcs!newsstand.cit.cornell.edu!portc01.blue.aol.com!chi-news.cic.net!ddsw1!news.mcs.net!www.nntp.primenet.com!nntp.primenet.com!howland.erols.net!newsfeed.internetmci.com!in3.uu.net!world!dp
From: dp@world.std.com (Jeff DelPapa)
Subject: Re: Lisp is not an interpreted language
Message-ID: <Dzt9MJ.Gux@world.std.com>
Organization: Chaos and Confusion
References: <3250E6C3.3963@eis.uva.es> <3252DB5E.5495@sybase.com> <516844aznp.fsf@apogee.nrl.navy.mil> <54nr3t$dl7@nntp.seflin.lib.fl.us>
Date: Fri, 25 Oct 1996 02:59:06 GMT
Lines: 96
Xref: glinda.oz.cs.cmu.edu comp.ai:41650 comp.ai.genetic:10126 comp.ai.neural-nets:34201 comp.lang.lisp:23375 comp.lang.c++:221170 comp.os.msdos.programmer:80527 comp.lang.asm.x86:29938 comp.unix.programmer:51576 comp.ai.philosophy:47727

In article <54nr3t$dl7@nntp.seflin.lib.fl.us>,
Ralph Silverman <z007400b@bcfreenet.seflin.lib.fl.us> wrote:
>***************begin r.s. response********************
>
>	i guess a
>		'dynamic compiler'
>	for a language is a fancy
>	kind of interpreter...
>	whatever the name sounds like;
>	yes???

No, just a convience.  They have "regular" compilers that eat lisp and
make some sort of object as output.  "dynamic" compilers just take the
input from the keyboard, and automatically link in the new code, so
you can then call it.  This is mostly a development aid, something to
make the programmers life a bit easier.  The way I most commonly use
this, is when debugging a big program.  It is very nice to catch a
problem, (into a debugging tool), figure out what is broken, fix the
source of the functions, recompile just the changed functions, load
them into your running program that has all sorts of internal state
sitting around, and continue execution from where the problem
happened, running the new code.  (this can really speed things up when
your program is large enough for a compile/link to take most of a day,
and/or it took 3 cpu days to get to the part that has the problem.  In the
classic C "batch" model, you go change your code, recompile (hopefully
only getting the changes you want, and not the new stuff you have been
working on in another file), and start your program running from the
beginning again.

>
>	after all,
>	when a program actually has been
>		compiled and linked
>	successfully,
>	it runs from binary ...
>		NOT A SCRIPT!!!!!!!!!!!!!!!!!!!!!!!!!!
>		^^^^^^^^^^^^

Lisps have been able to do this for decades.  There are products out
there that act just like programs written in other languages, you just
run them like any other program.  Unless you saw the source code, you
couldn't tell if they were lisp, c, JOVIAL, snobol, assembler, or even
COBOL.  If you want to try one, look at WebMaker or Watson on
www.harlequin.com.

>
>	(a program compiled and linked
>	 properly is not,  routinely,
>	 recompiled at
>		runtime

Lisp gives you a choice.  Unlike more recent, less advanced languages,
most of them do both.  You typically only use the "on the fly"
compilation when you are trying to fix something, or using it as a
glorified calculator.  Most of the time you use the lisp equavalent of
make to compile a bunch of files, then use something akin to linking
to load the compiled binaries and make something you can run.  You
run the already compiled code.  (and in fact, may not have the
compiler on the machine you are running it on.  In the two examples
listed above, neither the compiler or an interpreter are included)

The incremental stuff is very helpful when you are trying to maintain
a big program.  When something breaks, you can send out a fix that
contains just the stuff that changed, not the whole executable.  Back
when I was playing with IC design tools, a bug fix would wind up as a
5kb patch binary, not the 20mb executables that the C crowd had to
ship around whenever they fixed something.  This is a real help when
the person that needs the fix is a: in Tokyo, and b: has a 9600 baud
connection.  If you have to ship all 20mb, it is not going to happen
that day -- it will take hours to transfer it as bits, and days if you
put a tape in a fedex envelope..

BTW: how do you feel about the shared library tools that cause your
program to be linked every time it is run?

>	 ...
>	 a program requiring
>		anything like that
>		^^^^^^^^^^^^^^^^^^
>		^^^^^^^^^^^^^^^^^^
>	is interpreted!!!
>	)

Hell, there are some machine codes that qualify under that metric.  If
the machine uses some sort of microcode, the "native" machine code
counts as interpreted.  (also there are a small number of C systems
that have limited incremental compilation.  (if nothing else the ones
for lispm's could do this.) -- One of the lispm vendors even had a
dynamically compiling FORTRAN)

>***************end r.s. response**********************
>Ralph Silverman
>z007400b@bcfreenet.seflin.lib.fl.us
>


