Новеб

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

Noweb , стилизованный под строчные буквы как noweb , — это инструмент для грамотного программирования , созданный в 1989–1999 годах Норманом Рэмси [1] и разработанный так, чтобы быть простым, легко расширяемым и независимым от языка. [2] [3]

Как и в WEB и CWEB , основными компонентами Noweb являются две программы: « notangle », которая извлекает «машинный» исходный код из исходных текстов, и « noweave », которая создает красиво отформатированную печатную документацию.

Noweb поддерживает TeX , LaTeX , HTML и бэк-энды troff и работает с любым языком программирования. Помимо простоты, это главное преимущество перед WEB , которому нужны разные версии для поддержки языков программирования, отличных от Pascal . (Отсюда необходимость CWEB , который поддерживает C и подобные языки.)

Вклад Noweb

Текст ввода Noweb содержит исходный код программы, перемежаемый документацией. Он состоит из так называемых кусков , которые являются либо кусками документации , либо кусками кода .

Кусок документации начинается со строки, которая начинается со знака @, за которым следует пробел или новая строка. Кусок документации не имеет имени. Куски документации обычно содержат LaTeX, но Noweb также используется с HTML, простым TeX и troff.

Фрагменты кода имеют названия. Фрагмент кода начинается с

<<имя фрагмента>>=

на отдельной строке. Двойная левая угловая скобка (<<) должна быть в первом столбце.

Каждый фрагмент завершается началом другого фрагмента. Если первая строка в файле не отмечает начало фрагмента, предполагается, что это первая строка фрагмента документации.

Инструменты Noweb не обрабатывают фрагменты кода особым образом — они могут быть размещены в любом порядке и, при необходимости, просто объединяются. Ссылки на фрагменты в коде разыменовываются, и весь запрошенный исходный код извлекается.

Пример простой программы Noweb

Это пример программы «Hello World» с документацией:

\section { Привет, мир }Сегодня я проснулся и решил написатьнемного кода, поэтому я начал писать Hello World на \textsf C.<<привет.c>>=/* <<лицензия>>*/#include <stdio.h>int main(int argc, char *argv[]) { printf("Привет, мир! \n "); вернуть 0;}@\noindent  \ldots затем я сделал то же самое в PHP.<<привет.php>>=<?php /* <<лицензия>> */ echo "Привет, мир! \n ";?>@\раздел { Лицензия }Позже в тот же день какой-то юрист напомнил мне о лицензиях.Итак, вот оно:<<лицензия>>=Данная работа находится в общественном достоянии.

Предполагая, что приведенный выше код помещен в файл с именем «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. ^ ab "Noweb home page". 24 апреля 2016 г. Получено 21 марта 2018 г.
  2. ^ Рэмси, Н. (сентябрь 1994 г.). «Упрощенное грамотное программирование». IEEE Software . 11 (5): 97– 105. doi :10.1109/52.311070. S2CID  18593796. Получено 3 декабря 2018 г.
  3. ^ Джонсон, Эндрю Л.; Джонсон, Брэд (1 октября 1997 г.). «Грамотное программирование с использованием Noweb | Linux Journal». www.linuxjournal.com . Получено 3 декабря 2018 г. .
  • Официальный сайт
  • Домашняя страница Нормана Рэмси
  • notangle онлайн-страница руководства
  • noweb.py – клон noweb с открытым исходным кодом, написанный на Python
  • noweb.php – клон noweb на PHP
Взято с "https://en.wikipedia.org/w/index.php?title=Noweb&oldid=1256696644"