axiom-developer
[Top][All Lists]
Advanced

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

RE: [Axiom-developer] size issue with noweb


From: Bill Page
Subject: RE: [Axiom-developer] size issue with noweb
Date: Fri, 21 Apr 2006 14:11:22 -0400

On April 21, 2006 11:42 AM Tim Daly (root) wrote:
> 
> David Mentre wrote: 
> > In practical terms, beside just comments, do you need help on
> > the code? I could give a try to a notangle in Common Lisp but 
> > you would be probably much more efficient than me (and the code
> > would probably be cleaner :-) . However, I could try to write a 
> > noweb->new-latex-syntax filter in Python. What do you think of
> > it?

Knuth's "web" syntax involving << ... >>, @ and [[ ... ]] is
certainly arcane, especially when compared to the TeX syntax
invented by the same author, but I think simply replacing one
with the other is not much of a gain. In fact I presume that
is why no one has bothered to do this before now.

When it comes down to it, "web" and noweb are pretty old
literate programming technology. Although literate programming
still is not very popular, there have been a few improvements
in the tools since the early days. I think if we are going to
change the literate programming tools used in Axiom, we would
be better off adopting a newer approach rather than re-inventing
old methods.

I think one such tool that such be seriously considered is
Leo.

http://webpages.charter.net/edreamleo/front.html

Leo even has tools for some noweb conversions.

> 
> until this massive project settles down i don't have the time to
> undertake the project. at some point the little slices of noweb
> time are eating away at my code-compile-check (CCC) loop. since
> this is the main workday loop every second counts. at some point,
> probably when my CCC loop hits 1 minute per change, it makes
> sense to stop real work, code the lisp version of noweb, and then
> continue. since my productivity is inversely related to the CCC
> time i need my CCC loop to be instantaneous.

Surely this way of programming must be extremely foreign to a
lisp programmer! Working with one large document and repeatedly
reprocessing the whole thing and recreating the program each
time you want to test something is certainly not the way most
people use lisp. Even when programming in less "dynamic"
languages like Python or even C, one usually modifies only a
small part of the program and does the minimum amount of
*incremental* work required to test it.

This is one of the problems with the traditional literate
programming tools. This was solved by the invention of 'untangle' -
the opposite of 'tangle' - which allows you to edit and work
with individual code chunks (or small sets of such chunks) and
to automatically maintain and update the larger literate
document of which these chunks form only a part. For example
Leo has this capability.

> 
> there is nothing like a large project to foster tool
> development :-)
> 

I think it would be a big mistake to waste time writing yet
another literate programming tool as part of the Axiom project.
But if even one other person here is interested in helping,
then I think I have finally got to the point where I want
to invest the time in putting the Axiom source in the Leo
environment. I don't expect that this will necessarily appeal
to everyone (There are some people here who are simply
fanatical about their choice of editor and programming
language :), but Leo's "directed acyclic graph" outline
seems almost tailor made for Axiom's highly interrelated
code - especially at the level of the Axiom library SPAD
and Aldor code.

Recently Simon Michael, the author of the ZWiki software on
which the Axiom Wiki is based, has experimentally moved the
source for ZWiki to Leo

http://leo.zwiki.org/FrontPage

This is a much smaller project than Axiom but I think working
with ZWiki's python code in this way is a good way to used
to Leo's approach to organizing a large project in the form
of an "outline"

http://en.wikipedia.org/wiki/Leo_%28editor%29

Regards,
Bill Page.






reply via email to

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