Новеб
Оригинальный автор(ы) | Норман Рэмси |
---|---|
Первоначальный выпуск | 1989 г., 34–35 лет назад. |
Стабильная версия | 2.12
/ 28 июня 2018 г [1] |
Репозиторий | |
Написано в | C , AWK и значок |
Операционная система | Кросс-платформенный |
Доступно в | Английский |
Тип | Грамотное программирование |
Лицензия | Лицензия BSD-2-пункт |
Веб-сайт | www |
Noweb , стилизованное в нижнем регистре как noweb , — инструмент грамотного программирования , созданный в 1989–1999 годах Норманом Рэмси, [1] и спроектирован так, чтобы быть простым, легко расширяемым и независимым от языка. [2] [3]
Как и в WEB и CWEB , основными компонентами Noweb являются две программы: « notangle », которая извлекает «машинный» исходный код из исходных текстов, и « noweave », которая создает красиво отформатированную документацию для печати.
Noweb поддерживает TeX , LaTeX , HTML и troff серверные части и работает с любым языком программирования. Помимо простоты, это главное преимущество перед WEB , которому нужны разные версии для поддержки языков программирования, отличных от Pascal . (Поэтому необходим CWEB , который поддерживает C и подобные языки.)
Вклад Новеба
[ редактировать ]Входной текст Noweb содержит исходный код программы, перемежающийся документацией. Он состоит из так называемых фрагментов , которые являются либо фрагментами документации , либо фрагментами кода .
Часть документации начинается со строки, начинающейся со знака (@), за которым следует пробел или новая строка. Блок документации не имеет имени. Фрагменты документации обычно содержат LaTeX, но Noweb также используется с HTML, обычным TeX и troff.
Фрагменты кода имеют имена. Кусок кода начинается с
<<chunk name>>=
на отдельной линии. Двойная левая угловая скобка (<<) должна находиться в первом столбце.
Каждый фрагмент завершается началом другого фрагмента. Если первая строка файла не отмечает начало фрагмента, предполагается, что это первая строка фрагмента документации.
Фрагменты кода не обрабатываются специальным образом инструментами Noweb — их можно размещать в любом порядке и, при необходимости, просто объединять. Ссылки на чанки в коде разыменовываются и извлекается весь запрошенный исходный код.
Пример простой программы Noweb
[ редактировать ]Это пример программы «Привет, мир» с документацией:
\section{Hello world}
Today I awoke and decided to write
some code, so I started to write Hello World in \textsf C.
<<hello.c>>=
/*
<<license>>
*/
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello World!\n");
return 0;
}
@
\noindent \ldots then I did the same in PHP.
<<hello.php>>=
<?php
/*
<<license>>
*/
echo "Hello world!\n";
?>
@
\section{License}
Later the same day some lawyer reminded me about licenses.
So, here it is:
<<license>>=
This work is placed in the public domain.
Предполагая, что приведенный выше код помещен в файл с именем «hello.nw», команда для извлечения удобочитаемого документа в формате HTML будет следующей:
noweave -filter l2h -index -html hello.nw | htmltoc > hello.html
... и в LaTeX формате :
noweave -index -latex hello.nw > hello.tex
Чтобы извлечь исходный код машины:
notangle -Rhello.c hello.nw > hello.c
notangle -Rhello.php hello.nw > hello.php
Совместимость
[ редактировать ]Noweb определяет конкретный формат файла, и файл, скорее всего, будет чередовать три разных формата (Noweb, LaTeX и язык, используемый для программного обеспечения). Это не распознается другими инструментами разработки программного обеспечения, и, следовательно, использование Noweb исключает использование UML или инструментов документации кода.
См. также
[ редактировать ]Примечания
[ редактировать ]- ^ Перейти обратно: а б «Главная страница Noweb» . 24 апреля 2016 года . Проверено 21 марта 2018 г.
- ^ Рэмси, Н. (сентябрь 1994 г.). «Грамотное программирование упрощено» . Программное обеспечение IEEE . 11 (5): 97–105. дои : 10.1109/52.311070 . S2CID 18593796 . Проверено 3 декабря 2018 г.
- ^ Джонсон, Эндрю Л.; Джонсон, Брэд (1 октября 1997 г.). «Грамотное программирование с использованием Noweb | Linux Journal» . www.linuxjournal.com . Проверено 3 декабря 2018 г.