Noweb
Z Wikipedii
noweb to wolny (wolny jak słowo) zestaw narzędzi do 'programowania piśmiennego', (ang. literate programming) stworzony w latach 1989-1999 przez Normana Ramseya [1], z założenia prosty, łatwy do rozbudowy i obsługujący dowolne języki programowania.
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.
[edytuj] Plik wejścia dla noweb
Plik przetwarzany przez programy noweb składa się z kawałków (zwanych z angielska 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 nastepuje 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 >>=.
[edytuj] Przykładowy program
Poniższy plik stanowi prawidłowe 'wejście' dla narzedzi 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
[edytuj] Linki zewnętrzne
| Nowy argument za usunięciem mumii Lenina |
|
W mauzoleum na Placu Czerwonym w Moskwie znajduje się już nie więcej niż 10 proc. ciała Lenina - powiedział deputowany Dumy Państwowej Rosji Władimir Miedinski, co - jego zdaniem - jest jeszcze jednym argumentem za usunięciem mumii z mauzoleum.
|
| Wyświetlacze oszczędniejsze dzięki teleskopom |
|
Dzięki nowemu mechanizmowi, nad którym pracują naukowcy z University of Washington i Microsoft Research, monitory i telewizory będą pobierać mniej mocy, nie tracąc nic z obecnego poziomu kontrastu i jasności.
|
| "Księga gatunków obcych inwazyjnych w Polsce" |
|
Bernikla kanadyjska, wagisz japoński, spichrzel surinamski, wodożytka nowozelandzka, pomrowiec budapeszteński - w sumie 302 gatunków zwierząt, w tym przede wszystkim stawonogów, mięczaków i strunowców zawiera "Księga gatunków obcych inwazyjnych w faunie Polski", opublikowana na stronie internetowej Instytutu Ochrony Przyrody PAN w Krakowie. Prezentowane opracowanie jest pierwszą w Polsce próbą kompleksowego zbadania i scharakteryzowania zjawisk związanych z napływem na nasze tereny obcych...
|
| Unikalny cmentarz ugrofiński |
|
Archeolodzy odkryli w okolicach miasta Suzdal w Rosji unikalne miejsce pochówku członków plemienia Ugrofinów, pochodzące z początków I tysiąclecia n.e. - donosi serwis internetowy icRussia.
|
| Soczewki kontaktowe z elektronikÄ… |
|
Opracowano prototyp nowoczesnych soczewek kontaktowych, w których wnętrzu zatopiony jest układ elektroniczny oraz diody LED. Jest to przysłowiowy "kamień milowy" dla dziedziny nauki, która zajmuje się miniaturyzacją układów scalonych, donosi "LaserFocusWorld".
|