|
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:
I think the goal is certainly correct and in and of itself a contribution to any CAS,Axiom is at the beginning of another major transition. There have been several major transitions in Axiom which were the result of design choices. m) ====================( User Interface )============ ==== ==== ==== ==== ==== ... ==== ==== ==== ==== ==== (history) (undo) (reading) (eval) (print) Things like eval and printing are supported by the algebra ====================( User Interface )============ ==== ==== ==== ==== ==== ... ==== ==== ==== ==== ==== (history) (undo) (reading) (eval) (print) (algebra) and that is supported by the databases ====================( User Interface )============ ==== ==== ==== ==== ==== ... ==== ==== ==== ==== ==== (history) (undo) (reading) (eval) (print) (algebra) (databases) 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.... Tim 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 |
[Prev in Thread] | Current Thread | [Next in Thread] |