Meat Space has kept me away from coding. There is a problem yet to
be solved. Wonder if I can solve it with code?
Trying to evaluate literate programming tools. The @ escape sequences
just doesn't feel right. Not sure why. The question is what should
the main work file be? Should it be a documentation file? Should it
be a source code file? Should it just be something different?
The traditional LP tools make the work file a documentation file.
Some of the piss-poor recent additions make it the source file.
I suppose I shouldn't complain since people are documenting better
thanks to the javadoc,doc++,et al. No I think I will complain.
ocaml has a web tool. It uses comments like the latter. But it doesn't
have the same forced order as Java or C++. So it say why have a separate
file when the main reason for LP is solved by the language? Except its
not solved. Enter .ml and .mli files. I guess they missed just the one
day of class. But they do raise the important question should the
work file just be source code so tools can better understand it?
Which reminds of #line from C. If C has a plus side #line would be it.
Apparently ocaml has #line capabilities but I missed it.
So what is important in LP? In no particular order.
flexible order of elaboration
automatic support for browsing. Indexing. Cross-Reference
typeset documentation, especially diagrams and mathematics
Pretty printing code.
A tool might be made from ctags, a2ps, vim/emacs syntax highlight, LXR
and compiler generated cross refs(eg NetRexx).
While rummaging for LP stuff found some UI language stuff...maybe.
Toward a Calculus of Signatures. I'll have to finish reading it
to see if it really relates.
Deadly Sins. While
based on compiler writing they apply to all programs. Learn it, Live it,
Wow! I just thought of a good p2p application. Poker! Card Games. File
sharing is weak. But Games. Now there is a fun app. No more central
server bullshit. Any of the games would work. Warcraft. Civ.
I'm slow on the whole p2p thing. Mainly cause I´m not into music or movies.
Lets steal more ideas.
Hypertext indexing for literate programs
Even simple hypertext browsers like Netscape or Internet Explorer can make a
literate program dramatically easier to understand.
Unfortunately, all existing literate-programming tools assume they are indexing
and cross-referencing a single document. This project is to develop
inter-document cross-reference tools
Accurate cross-reference for literate programs
The Noweb literate-programming tool currently uses an approximate algorithm to
compute cross-reference information. The project is to figure out how the Noweb
framework can be changed to provide for completely accurate cross-reference
information, and to develop one or more accurate cross-reference tools. There
are many front ends that might be adapted for cross reference, supporting
languages like Java (Sun javacc), C (lcc front end), C++ (Edison Design Group
front end), Standard ML (Moscow ML front end or ML Kit), and Modula-3 (Compaq
SRC front end).
Pretty printer generation
Pretty printing technology is well developed, but it is not well realized in
flexible software. This project is to adapt existing pretty printing technology
so it can work with any programming language and in a variety of contexts,
including standalone ASCII pretty printer, literate-programming tool, and
PostScript or FrameMaker.
As a bonus, one might consider extending TeX with support for pretty printing.
Just weave together lxr, noweb, a2ps and latex? to solve those problems.
I can't think of where to get the cross-reference code. But I don't
fully understand the problem.
Need to reorganize this into something coherent.