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, Love 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.