Questions for using Lisp language to built the computeralgebra systems.
Subject: Questions for using Lisp language to built the computeralgebra systems.
From: Richard Fateman
Date: Tue, 18 Sep 2007 07:42:15 -0700
Of course lisp is not essential. Several lisp implementations are built with
a core of C, some assembler, and considerable coding in the core Lisp system
to build up the whole lisp system. For example, every lisp compiler is
written in lisp. so are many of the "too many functions".
So C is essential. And even that is not, since there are cross compilers so
all you need is a C compiler on a different computer.
There are not too many lisp dialects. There is one, but with different
implementations and extensions.
There are more C implementations.
Your understanding of RISC is precisely wrong. The point of RISC is that
only some features need to be implemented in hardware because they can be
combined in software to produce all the desired operations. Thus a RISC
implementation has more software.
The REDUCE implementation is in something called STANDARD LISP defined by
Tony Hearn and his collaborators.
This is not a subset of common lisp.
The fact is that if you have an implementation of Maxima in lisp then you
have this structure
<CORE C / assembler code implements mini-Lisp>
<more Lisp implemented in mini-Lisp> ......
maybe this is your RISC system?
<even More Lisp implemented in above level, e.g. compiler, web support etc>
<Maxima lisp layer>
<Maxima language shared code>
<Front ends etc in random languages like emacs, TK, TexMacs, WX, Java,
SAGE,...>
So some of your language comments have, in some sense, been incorporated in
the history of Maxima.
More in next msg.
RJF
_____
From: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu]
On Behalf Of mrkmhrsh at yahoo.co.jp
Sent: Tuesday, September 18, 2007 3:49 AM
To: maxima at math.utexas.edu
Subject: Questions for using Lisp language to built the
computeralgebra systems.
I think the most drawback of the computer algebra system built on the Lisp
system
is that since the Lisp system makes so much pointer references
to make access to the lisp cells it is slow on the pipelined and cached
systems.
(Even the cdr-coding could reduce the pointer references, tagged pointer
access
means every reference of pointer can causes the branch or the pipeline jam
to make
the computation slow.
Even today's procedural languages like Fortran 9x have the recursive
function
and pointers and record-type data definition mechanism. (It is static and
lacks the dynamic type as the language which Lisp has.) Do you think writing
generic computer algebra system like Maxima using for example Fortran9x or
Java
is too difficult ?
Another drawback is that there are so many Lisp dialects.
Common Lisp system as the language contains too many functions defined
and against the kind of ideas of the "reduced instruction sets" system.
(Only to have the instructions which are frequently used or unable to be
eliminated. )
Like portable common lisp for Reduce, I think it might be better that for
the maxima
to define the minimum required set of lisp functions, and then other
functions
can be defined using lisp.
How do you think lisp is so essential or not? (I might be wrong.)