noweb
noweb – zestaw narzędzi do programowania piśmiennego (ang. literate programming), stworzony w latach 1989–1999 przez Normana Ramseya eecs.harvard.edu, z założenia prosty, łatwy do rozbudowy i obsługujący dowolne języki programowania. Jest wolnym oprogramowaniem.
Podobnie jak w systemach WEB i CWEB głównymi programami/składnikami noweb są: notangle, który ekstrahuje kod źródłowy programu oraz noweave, który przetwarza wejście na „drukowalną” dokumentację.
noweb standardowo potrafi tworzyć dokumenty w formatach TeX, LaTeX, HTML oraz troff. Poza prostotą, możliwość użycia dowolnego języka programowania stanowi główną przewagę nad WEB, który to potrzebował przeróbek by wspierać języki programowania inne niż Pascal. W celu umożliwienia używania C oraz podobnych języków powstał projekt CWEB.
Plik wejścia dla noweb
[edytuj | edytuj kod]Plik przetwarzany przez programy noweb składa się z kawałków (ang. chunks) kodów źródłowych poprzeplatanych z dokumentacją.
Kawałki dokumentacji są zwykle pisane z użyciem składni LaTeX, jednak łatwo można użyć dowolnego innego formatu. W pliku źródłowym rozpoczyna je znak '@', po którym następuje spacja lub koniec linii.
Kawałki kodu w pliku źródłowym mogą być umieszczone w dowolnej kolejności, a notangle w razie potrzeby łączy je razem, układa w odpowiedniej kolejności, rozwija odwołania i kopiuje (prawie) bez zmian na wyjście. W pliku źródłowym rozpoczyna je nazwa danego kawałka ujęta w znaki << oraz >>=.
Przykładowy program
[edytuj | edytuj kod]Poniższy plik stanowi prawidłowe wejście dla narzędzi noweb:
@ \chapter{Hello world} Dziś był dobry dzień na napisanie jakiegoś kodu. Zacząłem od pisania ,,Hello World'' w języku C: <<hello.c>>= /* <<licencja>> */ #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello World!\n"); return 0; } @ Potem przyszła pora na PHP: <<hello.php>>= <?php /* <<licencja>> */ echo "Hello world!\n"; ?> @ \section{Licencja} Jeden z prawnie-świadomych kolegów przypomniał o licencji. Oto ona: <<licencja>>= This work is placed in public domain. Te programy umieszczam w domenie publicznej. Możesz z nimi robić co zechcesz. @
Przyjmując, że powyższy kod znajduje się w pliku „hello.noweb”, polecenie produkujące dokumentację w formacie HTML wygląda tak:
noweave -filter l2h -index -html hello.noweb | htmltoc > hello.html
a w formacie LaTeX:
noweave -index -latex hello.noweb > hello.tex
Kody źródłowe programów ekstrahujemy poleceniami:
notangle -Rhello.c hello.noweb > hello.c
notangle -Rhello.php hello.noweb > hello.php
Linki zewnętrzne
[edytuj | edytuj kod]- Strona domowa programu noweb
- Strona domowa Normana Ramseya
- Strona z dokumentacji programu notangle. cs.virginia.edu. [zarchiwizowane z tego adresu (2006-02-21)].