Lisp versions, was: Re: fresh-line



On Thu, 2005-03-31 at 00:57, Robert Dodier wrote:
> I have to say I'm completely in agreement w/ Prof Fateman
> on this point. The existence of multiple incompatible 
> versions of Lisp is a historical accident which, for
> reasons beyond my comprehension, has been perpetrated
> indefinitely. This situation doesn't help Maxima at all,
> and the extremely valuable time of some contributors
> is dissipated in resolving arbitrary minor differences.

Robert,

I strongly disagree with your statement above. I see a number of
misconceptions in the discussion on this topic:

1) Which version(s) of Lisp we support.

In principle, I would like to support ANSI Common Lisp, and nothing
else. In the real world, that has to be qualified:
   a) None of the Lisp implementations exactly match the ANSI standard.
   b) The standard itself is not enough to specify everything Maxima
needs.

We also support the most recent release of GCL. Since GCL is trying to
become an ANSI CL implementation, this is a problem I hope will mostly
go away in the future. If you are arguing to drop GCL right now, that
should be a different discussion.

2) What we gain from compatibility with multiple implementations of ANSI
Common lisp.

The primary reason to work with a standard first and an implementation
second is to reduce the coupling between Maxima and the vagaries of a
particular implementation. This is a basic software engineering
principle. I am well aware that many software projects, particularly
free software projects, are done with a slap-dash, "if it works on my
machine, that must be good enough" manner, but I'm not willing to do
that kind of work on Maxima. After all, I do software development
professionally -- I would be embarrassed to work on an unprofessional
project outside of work.

In addition to reducing coupling, having multiple lisps available for
testing is tremendously useful for development. Unfortunately, there are
bugs in all lisp implementations. When I find code that doesn't do what
I think it should do, I find it tremendously useful to see if another
implementation behaves the same way. Let's face it, no Lisp
implementation will ever get the kind of dedicated testing that a C
compiler like GCC has. Making life simpler in the face of buggy Lisp
implementations is tremendously useful.

3) The amount of effort that goes into maintaining compatibility with
multiple lisps.

I really don't find compatibility issues to take up much of my time, and
I probably spend as much or more time on them as anyone. If you are
basing your idea of what the developers are doing based on the contents
of the mailing list, you are being seriously misled. Every mailing list
I've ever seen contains mostly blather. The work that gets done is
mostly in spite of what gets discussed on the list. When I am trying to
get something seriously accomplished, I try not to read the list at all,
which is why I am so behind right now.

--Jim