Hello list,
I just wanted to add a few remarks:
1. About reimplementing Maxima in another language.
This will be extremely difficult, since Maxima uses quite
a lot of special features of Lisp. In particular, it uses
the Lisp lists and symbols, it uses the bignum and
rational number support from Lisp, and it uses the
introspection facilities in Lisp. The latter makes
things possible such as simple defining a function $foobar
on the Lisp level and then having it immediately available
as foobar() in Maxima. Try that in C++...
And of course, it is all untyped.
Having that said, I think the code base in Maxima could stand
a cleanup. For starters, the code is mostly in UPPER CASE,
although that is easy to fix. I also saw quite a number
of occurences of (go ...) (Lisp's goto construct). More
in general, the code is often difficult to read and could
use more commenting. The code is not very consistent:
that much already shows by seeing file extensions such as .lisp,
.lsp and even .LISP all used.
Another problem is all the special support for things like
Multics and the old Lisp machine. I don't see how we could
possibly hope to keep all this in sync with new additions.
Perhaps a policy should be developed on which platforms are
officially supported, and what is done with code for non-supported
platforms (retained as-is? updated to track the rest of the source,
even if it cannot be tested? simply removed?)
2. About GUI support
The current xmaxima talks over a pipe to the real maxima.
Doing the GUI
directly from Lisp would be more elegant; unfortunately, there
is no such thing as a standard GUI interface for Lisp.
So I think that the pipe idea is still the best idea:
1. The Lisp code remains portable
2. Emacs people can still use it
3. The GUI can be implemented in an arbitrary programming language.
Note that Mathematica also has the kernel in a separate process,
so this is apparently not an impediment for popularity.
One problem is that one might want nicely typeset output
(i.e. two-dimensional formulas, and not in ASCII art as
the current maxima does, but with real intergral signs.)
This could be implemented by adding a new output format to Maxima.
Using this output format, Maxima would
1. output formulas in 1D, and
2. add control sequences that indicate 2D layout and special
symbols such as integral signs and arrows.
Every front end could then typeset the output it received from
Maxima over the pipe in a manner suitable for its intended
audience. In this way, one could have both an Emacs front-end and
a C++ GUI front-end talking to the same Maxima kernel.
Just some ideas.
Greetings,
Stephan
--
Make sure you don't miss this!
http://www.win.tue.nl/scee2002
4th International Workshop on
Scientific Computing in Electrical Engineering
23-28 June 2002, Eindhoven, The Netherlands
"Share and enjoy."
-----------------------------------------------------------------------
S.H.M.J. Houben Philips Research Laboratories Eindhoven
Building: WAY3 073 Prof. Holstlaan 4
Phone: +31 40 2743497 5656 AA Eindhoven
The Netherlands
mailto:houben@natlab.research.philips.com