Jump to content

Новеб

Новеб
Оригинальный автор(ы) Норман Рэмси
Первоначальный выпуск 1989 г., 34–35 лет назад.
Стабильная версия
2.12 / 28 июня 2018 г .; 6 лет назад ( 28.06.2018 ) [1]
Репозиторий
Написано в C , AWK и значок
Операционная система Кросс-платформенный
Доступно в Английский
Тип Грамотное программирование
Лицензия Лицензия BSD-2-пункт
Веб-сайт www .cs .пучки .edu /~ нет /noweb / Отредактируйте это в Викиданных

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 или инструментов документации кода.

См. также

[ редактировать ]

Примечания

[ редактировать ]
  1. ^ Перейти обратно: а б «Главная страница Noweb» . 24 апреля 2016 года . Проверено 21 марта 2018 г.
  2. ^ Рэмси, Н. (сентябрь 1994 г.). «Грамотное программирование упрощено» . Программное обеспечение IEEE . 11 (5): 97–105. дои : 10.1109/52.311070 . S2CID   18593796 . Проверено 3 декабря 2018 г.
  3. ^ Джонсон, Эндрю Л.; Джонсон, Брэд (1 октября 1997 г.). «Грамотное программирование с использованием Noweb | Linux Journal» . www.linuxjournal.com . Проверено 3 декабря 2018 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bce3cb482ee869c68c247fa8ae0d6f28__1703764740
URL1:https://arc.ask3.ru/arc/aa/bc/28/bce3cb482ee869c68c247fa8ae0d6f28.html
Заголовок, (Title) документа по адресу, URL1:
Noweb - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)