Noweb - Google

Noweb

Z Wikipedii

Skocz do: nawigacji, szukaj


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


Zalążek artykuÅ‚u To jest tylko zalążek artykuÅ‚u zwiÄ…zanego z informatykÄ…. JeÅ›li potrafisz, rozbuduj go.

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".
Linki: Strona g³ówna