[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Axiom Design musings

From: Raymond Rogers
Subject: Re: [Axiom-developer] Axiom Design musings
Date: Wed, 28 Jan 2015 08:01:28 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0

On 01/28/2015 07:10 AM, address@hidden wrote:
Axiom is at the beginning of another major transition.

There have been several major transitions in Axiom which were the
result of design choices.

====================( User Interface )============
    ====      ====     ====     ====    ==== ...
    ====      ====     ====     ====    ====
 (history)   (undo)  (reading) (eval)  (print)

Things like eval and printing are supported by the algebra

====================( User Interface )============
    ====      ====     ====     ====    ==== ...
    ====      ====     ====     ====    ====
 (history)   (undo)  (reading) (eval)  (print)

and that is supported by the databases

====================( User Interface )============
    ====      ====     ====     ====    ==== ...
    ====      ====     ====     ====    ====
 (history)   (undo)  (reading) (eval)  (print)

But life is so much more complex than that. For instance, some of the
algebra is hard coded in Lisp, such as the coercions from one domain
to another. There is also algebra performance optimizing code written
in Lisp.

====================( User Interface )============
    ====      ====     ====     ====    ====
    ====      ====     ====     ====    ====
 (history)   (undo)  (reading) (eval)  (print)
                                |- (algebra)
                                +-- (databases)
                              (coercion, performance)

There is shared code used by both the interpreter and the compiler
(book volume 9).

====================( User Interface )============
    ====      ====  |   ====     ====    ====
    ====      ====  |   ====     ====    ====
 (history)   (undo) | (reading) (eval)  (print)
                    |            |- (algebra)
                    |           +-- (databases)
               (compiler)       |
                              (coercion, performance)

There is code to support "external code", notably hyperdoc,
graphics, and the browser

====================( User Interface )================
    ====      ====  |   ====     ====    ====     ====
    ====      ====  |   ====     ====    ====   (socket)
 (history)   (undo) | (reading) (eval)  (print)    +-> hyperdoc
                    |            |- (algebra)      +-> graphics
                    |           +-- (databases)    +-> browser
               (compiler)       |
                              (coercion, performance)

>From a "bottom-up" perspective there is code to support multiple
Common Lisps, infinite precision arithmetic, sockets, performance
macros, multiple semantics (MACLISP vs VMLisp vs Common Lisp). There
are subsystems such as the Burge parser and the Charybdis mathematics
printer which need to be packaged into coherent wholes, organized,
and explained. There is legacy code to purge such as the Saturn
and Aldor interfaces.

Since Axiom is a "typed system" there needs to be an effort to
recognize, name, classify, categorize, and explain the types of the
data structures in the interpreter. Work has started to provide every
Lisp function a "signature line" using these types, just like the
algebra above it.  The lisp signatures need to compile to optimization
declarations for the Lisp compiler which will improve Axiom
performance.  Code needs to be rewritten to be more functional rather
than modifying structured arguments when it makes sense. This will
support the future "proof system" effort.

All of this needs to be thought about and organized in ways that will
support understanding. Developers need to understand the printing
mechanism. Mathematicians need to understand the coercion interpreter
system. Users need to understand the undo mechanism.

This latest transition is slowly taking shape. It will involve
massive writing efforts and massive code refactoring.  It will involve
building things that exist nowhere such as a mechanism to hyperlink
and cross-reference everything to everything (Crystal).

There are future transitions "in plan", such as developing a proof
mechanism (book volume 13). There are tools to provide proofs at
various interfaces (e.g. math to spad (COX), spad to lisp (ACL2), lisp
to C (LLVM tool), C to machine (FX)).

The current "gold standard" for literate software is the Pharr and
Humphrey's book "Physically Based Rendering" which I highly recommend.
If the algebra was written in that style it would make it easier to
understand the algorithms and the underlying mathematics.  But we must
raise our eyes past that level as Axiom is well over a million lines
of code and multiple books.

That "30 Year Horizon" looks mighty close.

Stay tuned....

I think the goal is certainly correct and in and of itself a contribution to any CAS,

An eccentric recommendation: I think the categories/classifications should have a target structure of Database access.  Without a structured organization of the organization (a meta-organization if you will)  the result will still be difficult to navigate.
A Lewis Carrol, Charles Lutwidge Dodgson, caution on maps

‘That’s another thing we’ve learned from your Nation,” said Mein Herr, “map-making. But we’ve carried it much further than you. What do you consider the largest map that would be really useful?”

“About six inches to the mile.”

“Only six inches!” exclaimed Mein Herr. “We very soon got to six yards to the mile. Then we tried a hundred yards to the mile. And then came the grandest idea of all! We actually made a map of the country, on the scale of a mile to the mile!”

“Have you used it much?” I enquired.

“It has never been spread out, yet,” said Mein Herr: “the farmers objected: they said it would cover the whole country, and shut out the sunlight! So we now use the country itself, as its own map, and I assure you it does nearly as well.”


 Two views on life:
life is an art not to be learned by observation.
George Santayana:Interpretations of Poetry and Religion
It's kinda nice to participate in your life
Raymond Rogers 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]