On November 17, 2005 3:06 PM C Y wrote:
> 
> --- Bill Page wrote:
> 
> > 
> > Looking at the Axiom lisp code it is obvious that it contains
> > multiple layers and multiple styles, but I think it is not
> > correct to class this as "bizarre". Allowing such a mix of
> > layers and styles is one of the things that lisp is good at.
> > It only looks complex because it is not well documented (or
> > not documented at all).
> 
> To a point that may be true, but making old code run by
> implementing layers that mimic the behavior of older lisps
> is not something I would argue is a good thing.

But Axiom has had just such a compatibility layer for a long
time and it has served Axiom well, otherwise we wouldn't be
using Axiom today.

> It makes the code much harder to understand, because to work
> with any given part of the code you have to first understand
> what version of lisp that part of the code was written for
> (and consequently what behavioral assumptions were made) and
> then try and work with it.

I think you may be arguing based on a rather unclear idea of
just how flexible a language lisp is - any version of lisp
and especially ANSI common lisp, which for the most part is a
superset of other lisps, rather than a refinement. (Notice
that I said: for the most part.) To understand any lisp code
(pick almost anything off the web) and you will find that to
understand how something works you first have to understand
the author's design.

> For younger coders especially, that can be a high hurdle -
> they have no knowledge of obsolete standards.

I think that is wrong. Do you really think that learning to
program in Fortran is made seriously more difficult because
the year 2000 Fortran standard is radically different than
the year 1964 Fortran standard? Standards are important for
very different reasons, but learning to program is not one
of them.

> I can see layers being used to more closely match ideas
> (e.g. SPAD vs. Lisp) but defining layers to match old code
> behavior rather than making that code work with a now long
> established, agreed upon standard (Common Lisp) is one of
> the better ways to guarantee no one will ever want to touch
> the old code later on.

As I said, Axiom already has a sort of lisp-variant compatibility
layer implemented as a set of macros that is built-in to it's
design. Understand this layer is not particularly difficult.

> 
> Well, maybe it isn't "fragile" - say rather there are too many
> layers of complexity that do not directly benefit the goals of
> Axiom.  Or, from experience with Maxima, too much complexity
> in the code makes it impossible to say with certainty that any
> particular change will impact only what it is intended to impact.

I think you have it backwards. Layers, when done properly, do not
increase the complexity of the code, they decrease it. I haven't
looked much as Maxima, but I suspect that some of the "complexity"
that you talk about in Maxima is due the use of a design that
does not take advantage of this design idea.

It has been claimed here that the Maxima source is now fully
compliant with the Common Lisp standard. Is there any information
available from the Maxima developers about what changes were
necessary to attain this goal?


Regards,
Bill Page.




_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to