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. _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
