stringtranslate.com

Noweb

Noweb , estilizado en minúsculas como noweb , es una herramienta de programación alfabetizada , creada entre 1989 y 1999 por Norman Ramsey, [1] y diseñada para ser simple, fácilmente extensible e independiente del lenguaje. [2] [3]

Al igual que en WEB y CWEB , los componentes principales de Noweb son dos programas: " notangle ", que extrae el código fuente "de máquina" de los textos fuente, y " noweave ", que produce documentación imprimible con un formato agradable.

Noweb es compatible con TeX , LaTeX , HTML y troff y funciona con cualquier lenguaje de programación. Además de la simplicidad, esta es la principal ventaja sobre WEB , que necesita diferentes versiones para admitir lenguajes de programación distintos de Pascal . (De ahí la necesidad de CWEB , que admite C y lenguajes similares).

Aporte de Noweb

Un texto de entrada de Noweb contiene el código fuente del programa intercalado con documentación. Está formado por los denominados fragmentos , que pueden ser fragmentos de documentación o fragmentos de código .

Un fragmento de documentación comienza con una línea que empieza con un signo arroba (@) seguido de un espacio o una nueva línea. Un fragmento de documentación no tiene nombre. Los fragmentos de documentación normalmente contienen LaTeX, pero Noweb también se usa con HTML, TeX simple y troff.

Los fragmentos de código reciben un nombre. Un fragmento de código comienza con

<<nombre del fragmento>>=

en una línea por sí solo. El corchete angular izquierdo doble (<<) debe estar en la primera columna.

Cada fragmento termina con el comienzo de otro fragmento. Si la primera línea del archivo no marca el comienzo de un fragmento, se supone que es la primera línea de un fragmento de documentación.

Las herramientas de Noweb no tratan los fragmentos de código de forma especial: se pueden colocar en cualquier orden y, cuando es necesario, simplemente se concatenan. Las referencias a fragmentos de código se desreferencian y se extrae todo el código fuente solicitado.

Ejemplo de un programa Noweb sencillo

Este es un ejemplo de un programa "hola mundo" con documentación:

\section { Hola mundo }Hoy me desperté y decidí escribir.Un poco de código, así que comencé a escribir Hola Mundo en \textsf C.<<hola.c>>=/* <<licencia>>*/#incluir <stdio.h>int main(int argc, char *argv[]) { printf("¡Hola mundo! \n "); devuelve 0;}@\noindent  \ldots luego hice lo mismo en PHP.<<hola.php>>=<?php /* <<licencia>> */ echo "Hola mundo! \n ";?>@\sección { Licencia }Más tarde ese mismo día, un abogado me recordó lo de las licencias.Así que aquí está:<<licencia>>=Esta obra se coloca en el dominio público.

Suponiendo que el código anterior se coloca en un archivo llamado 'hello.nw', el comando para extraer el documento legible por humanos en formato HTML es:

ahora  -filtro  l2h  -índice  -html  hola.nw | htmltoc > hola.html    

...y en formato LaTeX :

ahora  -índice  -latex  hola.nw  >  hola.tex

Para extraer el código fuente de la máquina:

notangle  -Rhello.c  hola.nw  >  hola.c
notangle  -Rhello.php  hola.nw  >  hola.php

Compatibilidad

Noweb define un formato de archivo específico y es probable que un archivo combine tres formatos diferentes (Noweb, LaTeX y el lenguaje utilizado para el software). Esto no es reconocido por otras herramientas de desarrollo de software y, en consecuencia, el uso de Noweb excluye el uso de herramientas de documentación de código o UML .

Véase también

Notas

  1. ^ ab "Página de inicio de Noweb". 24 de abril de 2016. Consultado el 21 de marzo de 2018 .
  2. ^ Ramsey, N. (septiembre de 1994). "Literate programming simplify" (Programación literaria simplificada). IEEE Software . 11 (5): 97–105. doi :10.1109/52.311070. S2CID  18593796 . Consultado el 3 de diciembre de 2018 .
  3. ^ Johnson, Andrew L.; Johnson, Brad (1 de octubre de 1997). "Literate Programming Using Noweb | Linux Journal". www.linuxjournal.com . Consultado el 3 de diciembre de 2018 .

Enlaces externos