Interpreter vs compiler



>>>>> "Stavros" == Stavros Macrakis <macrakis at alum.mit.edu> writes:

    Stavros> Raymond:
    >> >> I have thought about always translating Maxima's input into Lisp and
    >> >> then running the Lisp code, instead of interpreting the internal s-expr
    >> >> representation.

    Stavros> You could of course do this, but if you want to preserve current
    Stavros> Maxima semantics, in the absence of additional information
    Stavros> (declarations), you'd end up with simple things like f(x) being
    Stavros> translated to...

    Stavros> ...do you really want to debug
    Stavros> running code that looks like that?
    >> 
    >> No, of course not.  But you rarely need to debug the assembly output
    >> from a C compiler either.  Unless you're the compiler writer, in which
    >> case you might. :-)

    Stavros> But in your proposal, if I understood it correctly, there would be no
    Stavros> interpreter, only a compiler.  So if you get an error in the middle of
    Stavros> your code, it would have to be reported in terms of that running code,
    Stavros> not in terms of the constructs that the user/programmer entered.  In
    Stavros> modern compiled language environments, source-level debugging is
    Stavros> handled by a system which keeps track of the correspondence between
    Stavros> source code and compiled code (and often doesn't support source-level
    Stavros> debugging at higher levels of optimization).  Yet another layer to
    Stavros> add....

Yep.  Obviously it can be done, but it's now growing to be a very,
very large task, for somewhat unclear benefits....

Ray