Noweb

De la Viquipèdia, l'enciclopèdia lliure
Noweb

TipusProgramació literària
Versió inicial1989
Versió estable2.11b
Llicènciallicència BSD de 2 clàusules Modifica el valor a Wikidata
Disponible en
Característiques tècniques
Sistema operatiuMultiplataforma
Escrit enC, Awk i Icon
Format de fitxer de lectura
Noweb (en) Tradueix Modifica el valor a Wikidata
Format de fitxer d'escriptura
Noweb (en) Tradueix Modifica el valor a Wikidata
Equip
Creador/sNorman Ramsey
Més informació
Lloc webhttp://www.cs.tufts.edu/~nr/noweb/
Stack ExchangeEtiqueta Modifica el valor a Wikidata

Noweb és una eina de programació literària creada des del 1989 fins al 1999 per Norman Ramsey,[1] i dissenyada per ser simple, fàcilment ampliable i independent de llenguatge. Tal com fan WEB i CWEB, els components principals de noweb són dos programes: "notangle", que extreu el codi font per a la màquina des dels texts originals, i "noweave", que genera la documentació formatada correctament per a imprimir. Noweb pot treballar amb documentació escrita en TeX, LaTeX, HTML i troff i funciona amb qualsevol llenguatge de programació. A part de la simplicitat, aquesta és l'avantatge més gran envers WEB, que necessita diferents versions per funcionar amb altres llenguatges que no sigui Pascal. (I d'aquí vé la necessitat d'eines com CWEB que funciona amb C i altres llenguatges similars.)

Text d'entrada de Noweb[modifica]

El text d'entrada de noweb conté codi font del llenguatge de programació intercalat amb la documentació. Així doncs, l'entrada consisteix en el que s'anomena fragments, que tant poden ser fragments de documentació com fragments de codi.

Un fragment de documentació comença amb una línia on el primer caràcter és l'arrova (@) seguida per un espai o un caràcter de salt de línia. Els fragments de documentació no tenen nom i normalment s'escriuen en LaTeX, però també poden estar escrits en HTML, TeX i troff.

Els fragments de codi sí que tenen nom i comencen amb

<<nom del fragment>>=

en una línia tot sol. El doble angle esquerre (<<) ha d'estar a la primera columna.

Cada fragment acaba quan comença el següent. Si la primera línia del fitxer no és la marca del començament d'un fragment s'assumeix que és la primera línia d'un fragment de documentació

Els fragments de codi no es tracten de manera especial per les eines de noweb—poden estar en qualsevol ordre i, quan és necessari, simplement es concatenen. Referències a altres fragments de codi és desreferencien i s'extreu el codi font al complet del fragment demanat.

Exemple d'un programa senzill en noweb[modifica]

Aquest és un exemple d'un programa "hola món" amb documentació:

\section{Hola món}
Aquest petit programa en \textsf C escriu el missatge "hola món" al terminal.
<<holamon.c>>=
/*
<<llicència>>
*/
<<capçaleres>>
int main(int argc, char *argv[]) {
<<escriu el missatge>>
return 0;
}
@
Per escriure el missatge es pot fer servir la funció \texttt{puts} o bé \texttt{printf}.
En aquest programa s'ha decidit fer servir \texttt{printf}.
<<escriu el missatge>>=
printf("Hola món!\n");
@
Tot i que és tècnicament opcional, per ajudar a comprovar errors d'utilització de tipus
errori durant la compilació és millor incloure la capçalera \texttt{stdio.h} que declara
la funció \texttt{printf}.
<<capçaleres>>=
#include <stdio.h>
@
El mateix programa en PHP resulta més senzill.
<<holamon.php>>=
<?php
/*
<<llicència>>
*/
echo "Hola món!\n";
?>
@
\section{Llicència}
La llicència per a distribuir aquest programa és la següent:
<<llicència>>=
Aquest programa és de domini públic.

Assumint que el document anterior és en un fitxer anomenat 'holamon.nw', l'ordre per extreure la documentació en format HTML és:

noweave -filter l2h -index -html holamon.nw | htmltoc > holamon.html

... per a extreure-la en format LaTeX:

noweave -index -latex holamon.nw > holamon.tex

Per obtenir el codi font a compilar o a executar:

notangle -Rholamon.c holamon.nw > holamon.c

notangle -Rholamon.php holamon.nw > holamon.php

Compatibilitat[modifica]

noweb defineix un format de fitxer específic i un fitxer molt probablement intercalarà tres formats diferents (noweb, LaTeX i el llenguatge pel programari). Això no ho solen reconèixer altres eines de desenvolupament i, com a conseqüència, utilitzar noweb exclueix l'ús d'eines de documentació del codi o de UML.

Notes[modifica]

Enllaços externs[modifica]