Noweb

De Viquipèdia
Dreceres ràpides: navegació, cerca
Noweb
Autor original Norman Ramsey
Versió inicial 1989
Versió estable 2.11b
Escrit en C, Awk i Icon
Sistema operatiu Multiplataforma
Disponible en Anglès
Tipus Programació literària
Lloc web http://www.cs.tufts.edu/~nr/noweb/

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'avantage 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 | modifica el codi]

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 | modifica el codi]

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 | modifica el codi]

noweb defineix un format de fitxer específic i un fitxer molt probablement intercalarà tres formats diferents (noweb, LaTeX i el llenguate 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 | modifica el codi]

  1. Lloc de l'autor

Enllaços externs[modifica | modifica el codi]