Noweb , estilizado en minúsculas como noweb , es una herramienta de programación alfabetizada , creada en 1989-1999 por Norman Ramsey, [1] y diseñada para ser simple, fácilmente extensible e independiente del lenguaje. [2] [3]
Autor (es) original (es) | Norman Ramsey |
---|---|
Versión inicial | 1989, hace 31–32 años |
Lanzamiento estable | 2.12 / 28 de junio de 2018 [1] |
Repositorio | ![]() |
Escrito en | C , AWK e Icon |
Sistema operativo | Multiplataforma |
Disponible en | inglés |
Tipo | Programación alfabetizada |
Sitio web | www ![]() |
Como en WEB y CWEB , los componentes principales de Noweb son dos programas: " notangle ", que extrae el código fuente "máquina" de los textos fuente, y " noweave ", que produce documentación imprimible con un formato agradable.
Noweb admite backends 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).
La entrada de Noweb
Un texto de entrada de Noweb contiene el código fuente del programa intercalado con la documentación. Consiste en los llamados fragmentos que son fragmentos de documentación o fragmentos de código .
Un fragmento de documentación comienza con una línea que comienza con un signo de arroba (@) seguido de un espacio o una nueva línea. Un trozo 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 con troff.
Los fragmentos de código se nombran. Un fragmento de código comienza con
<< nombre del fragmento >> =
en una línea por sí mismo. El corchete de doble ángulo izquierdo (<<) 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.
Los fragmentos de código no se tratan especialmente con las herramientas de Noweb; se pueden colocar en cualquier orden y, cuando sea necesario, simplemente se concatenan. Las referencias de fragmentos en el código se desreferencian y se extrae todo el código fuente solicitado.
Ejemplo de un programa Noweb simple
Este es un ejemplo de un programa "hola mundo" con documentación:
\ section { Hola mundo }Hoy me desperté y decidí escribiralgo de código, así que comencé a escribir Hello World en \ textsf C.<< hola.c >> =/ * <> * /#include int main (int argc, char * argv []) { printf ("¡Hola mundo! \ n "); return 0;}@\ noindent \ ldots, luego hice lo mismo en PHP.<< hola.php >> = php / * <> * / echo "¡Hola mundo! \ n ";?>@\ section { Licencia }Más tarde, ese mismo día, un abogado me recordó las licencias.Asi que aqui esta:<> = Este trabajo 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:
noweave -filter l2h -index -html hello.nw | htmltoc> hola.html
... y en formato LaTeX :
noweave -index -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 intercale tres formatos diferentes (Noweb, LaTeX y el idioma utilizado para el software). Esto no es reconocido por otras herramientas de desarrollo de software y, por lo tanto, el uso de Noweb excluye el uso de UML o herramientas de documentación de código.
Ver también
Notas
- ^ a b "Página de inicio de Noweb" . 24 de abril de 2016 . Consultado el 21 de marzo de 2018 .
- ^ Ramsey, N. (septiembre de 1994). "Programación alfabetizada simplificada" . Software IEEE . 11 (5): 97-105. doi : 10.1109 / 52.311070 . Consultado el 3 de diciembre de 2018 .
- ^ Johnson, Andrew L .; Johnson, Brad (1 de octubre de 1997). "Programación alfabetizada con Noweb | Linux Journal" . www.linuxjournal.com . Consultado el 3 de diciembre de 2018 .