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
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
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
- Strona domowa programu noweb
- Strona domowa Normana Ramseya
- Strona z dokumentacji programu notangle. cs.virginia.edu. [zarchiwizowane z tego adresu (2006-02-21)].
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.