Qu'est ce que le "Literate Programming" ?
Le "Literate Programming" est une approche de la programmation
qui met en valeur le fait qu'un programme doit pouvoir être lu
aussi bien par une personne que par un compilateur. Les outils
associés (disponibles dans les archives CTAN) vont ainsi
permettre de générer des documents combinant du code source et
du texte (souvent au format TeX). Ensuite, la documentation et
le code source seront automatiquement extraits de ce document
unique. Pour plus d'information sur ces techniques, consulter :
http://www.ius.cs.cmu.edu/help/Programming/literate.html. Il
existe également une FAQ comp.programming.literate disponible
sur ftp://ftp.inria.fr/pub/TeX/CTAN/help/comp.programming.literate_FAQ.
Remarque : À l'origine, D.E. Knuth a basé TeX sur un système
de "programmation littéraire" nommé Web. Le code
source en question était du Pascal. Aujourd'hui où
l'on ne trouve quasiment plus de compilateurs
Pascal, il a fallu écrire des outils de passage
au C. D'où l'outil Web2C actuellement utilisé. La
plupart des distributions Unix utilisent Web2c
maintenu actuellement par Karl Berry.
* WEB, est le premier outil/langage de literate programming. Il
a été créé par D.E. Knuth, qui l'a d'ailleurs utilisé pour
écrire TeX et metafont. WEB est une surcouche du langage
pascal. Il offre un indexage et des références croisées
automatiques pour les identificateurs et les procédures ainsi
qu'un pretty printing du code. Il est disponible sur
ftp://ftp.inria.fr/pub/TeX/CTAN/web/tweb/.
* CWEB, de D.E. Knuth et S.Levy, est une réécriture de WEB en C.
Cette application est simple d'accès et marche très bien. Un
clône de ce produit est CWEBx qui est un peu plus riche (donc
plus compliqué mais sans excès). Il est disponible sur
ftp://ftp.inria.fr/pub/TeX/CTAN/web/c_cpp/cweb/.
* FunnelWEB se présente en tant que surcouche de n'importe quel
langage, mais pour cette raison n'offre pas de "pretty-printing"
du code. Il en existe une variante (FunnelWEB-AC) pouvant
générer de la doc HTML, en plus de la doc TeX.
Il présente l'originalité par rapport aux autres d'avoir été
réécrit de toutes pièces, et non d'être une branche de
développement séparée de CWEB.
Il semble par ailleurs que FunnelWEB soit le seul à pouvoir
donner à l'utilisateur le contrôle total à l'octet près de son
fichier de sortie (utile pour les Makefiles, par exemple), mais
peut paraître assez rigide à un utilisateur habitué à la
puissance de fweb.
Funnel WEB, est disponible sur ftp://ftp.inria.fr/pub/TeX/CTAN/web/funnelweb.
* fweb (1.53), de J. Krommes, dérivé de CWEB, met à disposition
une FAQ sur http://www.arsc.sunyit.edu/fwebdocs/fweb.html et une
DOC sur http://w3.pppl.gov/~krommes/fweb_toc.html.
Cette application est très complète, mais un peu difficile
d'accès. Elle permet notamment de travailler en fortran (77 ou
90), RATFOR (77 ou 90), C ou C++. Elle intègre entre autres un
système de gestion de macros très complet, "à la m4" (boucles,
arguments variables, etc.), ainsi qu'un traducteur de RATFOR en
Fortran, pour ceux qui n'auraient pas le compilateur adéquat...
Elle est l'une des rares à utiliser LaTeX plutôt que TeX en
standard, ce qui permet d'utiliser toute la puissance de
celui-ci...
fweb est disponible sur ftp://ftp.inria.fr/pub/TeX/CTAN/web/fweb/.
* noweb et nuweb sont plus légers, plus fiables et très
utilisés. Ils mettent à disposition des mécanismes pour générer
des documents LaTeX ou du code source. Ils sont disponibles sur
ftp://ftp.inria.fr/pub/TeX/CTAN/web/noweb/ et ftp://ftp.inria.fr/pub/TeX/CTAN/web/nuweb/. Pour plus de détails,
consulter : http://www.cs.purdue.edu/homes/nr/noweb/.
* SpiderWEB, de N. Ramsey, dérivé de CWEB, est disponible sur
ftp://ftp.inria.fr/pub/TeX/CTAN/web/spiderweb/. SpiderWEB permet de gérer la plupart
des langages, tant que les blancs et les tabs ne sont pas
critiques, tout en assurant le pretty-printing. Quelques heures
suffisent pour ajouter un nouveau langage, sans avoir à tout
recompiler. Un certain nombre de langages sont supportés dans la
distribution (C, ADA, awk, etc.)
* DOC++ est disponible à :
http://www.ZIB-Berlin.DE/VisPar/doc++/doc++.html
Il se base sur les infos dans les commentaires. Il structure
bien les classes, mais est un peu rigide au niveau des
possibilités. Génère du LaTeX ou du HTML.
* wflman est disponible à :
ftp://ftp.keck.hawaii.edu/pub/wlupton/wflman-2.1.1.tar.Z
générateur automatique de doc au choix LaTeX, RTF, man et HTML.