On Sun, 4 Jan 2009 09:40:10 +0000 (GMT Standard Time) Arthur Norman wrote:

> Bill Page wrote:

>> Reduce, Maxima and Axiom are members of the same generation
>> but originated in rather different environments. All are written in
>> Lisp. Reduce is written in a very well documented Lisp dialect
>> called "Standard Lisp"
> What you say above is true in one sense, but in practical terms and
> the terms that most people should think of, REDUCE is written in its
> own language, "rlisp".   There are almost 300K lines of rlisp, and in
> the parts of the tree that are "really" Reduce you will hardly see any
> raw lisp at all. In the PSL build side there is a grand total of 442
> lines of raw lisp used to get the bootstrap up to rlisp working. In
> the CSL side there may seem more, but the files you see are
> generated by expanding rlisp master sources.

Thank you very much for this clarification.

> So yes there is an internal abstraction level that is "Standard Lisp"
> and the list of functions that are provided there matters. But the
> Lisp underneath is NOT looked at by general Reduce developers.
> The code of the Lisp system provides storage management, bignum
> arithmetic, load-on-demand services, checkpointing etc, and organises
> one level of the user-interface. It in effect has the status of the
> "kernel" in Maple or Mathematica, and may end up customised to
> support Reduce better.

So for REDUCE "Standard Lisp" plays the role of an abstract virtual machine something like the Java VM?

It sounds reasonable perhaps then to equate rlisp in REDUCE with BOOT in Axiom which seems to play a similar role, i.e. a "Lisp without parenthesis". But Axiom introduces another even higher level language called SPAD in which almost all of the algebraic code is implemented. Perhaps "rlisp" is closer to SPAD?

Can you recommend a document that emphasizes "rlisp" as a programming language independent of it's use to implement REDUCE?

In contrast as I understand it, most development in Maxima does take place in Lisp.

> So a Reduce developer should not think of themselves as a Lisp
> progammer - they do not code in parenthesised notation at all. The
> Codemist and ZIB people have then been supporting this "reduce
> kernel" under the pretence that it is a Lisp, and if there were LOTS
> of Lisp enthusiasts around it might have made sense to promote
> their work in a more general manner. But in general when I an
> working on CSL I am not a Lisp programmer - I am a C programmer
> working on the implementation of an algebra system kernel that
> happens to have selected a lisp-style abstraction layer to be the
> boundary between my responsibility (around 100K lines) and the
> rest of Reduce...

From experience in at least two open source computer algebra projects: Axiom and Sage, it seems to me that the choice of programming language can have a big impact on the success or lack of success in this kind of project. The desire of the project leader of the open source version of Axiom to remove BOOT and replace the generated Lisp code with handcrafted Lisp, was one factor that lead to the forking of that project. Unlike Maxima, the Axiom project has been relatively unsuccessful in attracting Lisp-oriented developers.

The Sage project on the other hand started with an existing popular high level "scripting" language called Python, motivated in part by it's popularity in other applications. The extent to which Lisp is required to support integration with non-Python components (e.g. Maxima is incorporated into Sage at a fairly deep level), it is viewed by the Sage developers as a liability. Sage includes a component called "Cython" which translates a subset of Python into "C" for efficiency and for interfacing with external libraries - most of which are implemented in C or C++.

So I think that when presenting REDUCE to a larger developer audience it will be important to emphasis the role that "rlisp" plays in REDUCE.

> Now while CSL is coded in C, PSL is mostly coded in "syslisp"
> which is Lisp plus expensions that give access to resources such
> as machine arithmetic and addressing - I think the important
> aspect of that is not the Lisp bit but the Sys bit. But it is Winfried
> Neun at ZIB who is in change of that...

It will be interesting to see how the problems of bootstrapping PSL will be solved in the open source REDUCE project. For example, is it possible to bootstrap PSL using Clisp or some other Lisp more commonly available on computers today?

Bill Page.