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.