|
From: | Tim Daly |
Subject: | Re: [Axiom-developer] Axiom course |
Date: | Mon, 15 May 2017 14:18:58 -0400 |
TimI'd be happy to work with students who want to contribute.allowed to make the same mistake.now we have to re-discover how existing code works. New code can't beoriginally a research project not a product so nobody cared. Unfortunately,The prior authors (me included) failed to explain anything. Axiom wasto live, it needs to be possible for people to maintain, modify, and extend it.any contribution NEEDS to focus on explanation. For a system like AxiomYou should stress to any student that Axiom is literate. That means thatContributions'primitivePart', 'squareFree', etc.representation in Axiom, and explain operations like 'variables', 'resultant',the Domains, e.g. SparseUnivariatePolynomial (SUP), discuss itsdistributed, and various multivariate versions of the same. Pick one oflot of different poly representations, such as sparse/dense, recursive,A good starting point would be polynomial algorithms. Axiom supports aa lot of implementation details which classes never cover but are vital.document them. This is rather more difficult than it sounds as there arethe task would be to find the code that implements the algorithms andIf you cover a topic in class (e.g. CAD, Groebner, Berlekamp factoring, etc)a large lisp program.So instead of using 'make', we start lisp and use it to build Axiom, which isof commands to build Axiom. These would then be written as lisp functions.The task would be to trace the 'make' scripts to find out the exact sequenceis one less thing users need to pre-install and one less thing to maintain.as many tools and external dependencies as possible. Each thing we removeWe currently use 'make' to build the system. But Axiom is trying to removeRemoving Makefileswritten so it creates browser-based text rather than hyperdoc text.Some page output is generated dynamically by Axiom. This needs to beprototype code for that in the sources.input line and open a DIV section with the response. I have also written somethe sources). Some portions interact with the running Axiom to send anpre-canned scripts (some of which I've already written, as you can see fromHyperdoc was our pre-internet version of a browser. Some portions of it areseparate window.This could be done with menus or buttons in the web page rather than as acontrol because clicking on a view2d/3d image will bring up a control panel.drawing commands. Once the drawing happens there is another layer ofNow that you know the messages they need to be turned into HTML5 canvaswebsockets to display the messages in browser text and automate the replies.that is done and documented there would be an effort to use something likebe to document the message patterns from axiom to view2d and back. Onceview3d programs with HTML5 canvas-based versions. The first step wouldSpeaking of "real work on a real system" there could be several projectsthat would be useful.view2d / vew3dFor the browser-based version the graphics goal is to replace the view2d andIf a student wants to do this they should look at the book"Physically Based Rendering". This book won an Academy Award.It is the canonical example of where Axiom needs to go.Deconstructing HyperdocSome of this tracing is already done in anticipation that this rewrite willhappen. The Makefile files are documented (and generated from) theMakefile.pamphlet files.Knuth, Literate Programming, and AxiomThe 'pamphlet' files are raw latex files. You can just run latex on them.Knuth's original vision of literate programming had 2 tools, 'weave' and'tangle'. The 'weave' program takes the literate sources and generatestex-compatible output. Axiom uses latex directly so there is no need fora 'weave' program.The 'tangle' program exists, called 'tanglec' in the books subdirectory.It takes 2 arguments, the source latex file and the name of a 'chunk'.It writes the chunk contents to stdout.tanglec bookvol10.3.pamphlet "domain INT Integer" >integer.spadThis will look for a chunk with the given name, e.g.\begin{chunk}{domain INT Integer}the integer.spad source code is here\end{chunk}There is no real magic in the 'tanglec' program. It just reads the sourcefile, makes a hash table of every chunk name (concatenating repeatednames into a single block) and then writes out the requested chunk tostdout.The ultimate goal is to make every file a latex document. Mostprograms use the "pile of sand" (POS) method to organize sources.They try to provide "semantics" by clever directory names such as 'doc'.What they don't realize is that this is left-over technology from the past.I used to work on a machine with 8k, 4k of which was the operating system.If you created a file larger than 4k you crashed the system. So we invented"include" for files and "overlay linkers" (which are now virtual memoryhardware). Comments cost bytes and were frowned upon.
People STILL write 4k files and POS directories with include files despite
having 16G of memory. They still think comments are expensive and that'documentation' is worthless. We need to think of 'explanations', notdocumentation or comments. POS programming needs to die.ExplanationsOn Tue, May 9, 2017 at 5:39 PM, Tim Daly <address@hidden> wrote:No need to apologize. I know this is a busy time.The ultimate goal is to replace the hyperdoc/graphics with a browser frontend using HTML canvas for the graphics. I have made a start on this butA possible alternative is to use the Jupyter notebook. (http://jupyter.org/)I have not looked into this in detail. The student is free to talk to meabout any ideas.I'm working on a syllabus for a CMU course which seems to differ from the currentcourses taught elsewhere. Almost every course spends all of its time on thealgorithms. That's fine but it leave the topic "ungrounded". The student doesnot know how the algorithms are actually implemented and does not know howto build/test/modify an existing system with new work. It's a bit like teachingart by looking at paintings but never mentioning 90% of the subject that a realartist knows, like brushes, medium, art shows, etc. It's all nice in theory butis ultimately pointless as the student can't use the information.In the ideal case the students would be part of a group that does real workon a real system, just as art students end up painting and entering their workin art shows. I'm hoping to start a "reading group" that covers papers from thepast as well as the latest conferences. I have a set of papers on CAD startingwith the Collins 1975 paper onward which I'm starting to organize.Tim
[Prev in Thread] | Current Thread | [Next in Thread] |