Noweb; простий, розширюваний інструмент для програмування літер; EWSTПерекласти

Грамотне програмування - це мистецтво підготовки програм для читачів-людей.

простий

noweb розроблений для задоволення потреб витончених програмістів, залишаючись при цьому максимально простим. Основними його перевагами є простота, розширюваність та незалежність мови - особливо помітні порівняно з іншими інструментами програмування у літературному форматі. noweb використовує 5 послідовностей управління для WEB 27. Посібник Noweb складає всього 4 сторінки; на додатковій сторінці пояснюється, як налаштувати вихід LaTeX. noweb працює "нестандартно" з будь-якою мовою програмування і підтримує TeX, латекс, HTML і бэкенд-головки. Задній кінець для підтримки повного гіпертексту або індексації займає близько 250 рядків; простіший можна написати в 40 рядків awk. Основною жертвою для WEB є те, що цей код рідко буває вражаючим. Noweb розповсюджується CTAN.

noweb використовується вже п'ятнадцять років у багатьох університетах та на промислових об'єктах. Він використовувався для десятків тисяч рядків коду такими мовами, як awk, C, C ++, Haskell, Icon, Module 3, Caml Objectives, PAL, Perl, Promela, R, Turing та Standard ML. Я веду список людей та проектів, які використовують noweb .

  • Ендрю Л. Джонсон та Бред С. Джонсон. Literatefolosindnoweb програмування. Журнал Linux, 64-69, жовтень 1997 р.
  • Норман Ремзі. Спрощене програмування грамотності. Програмне забезпечення IEEE, 11 (5): 97-105, вересень 1994 р.

ввести грамотне програмування за допомогою noweb. Стаття в журналі Linux більш проста; Стаття про програмне забезпечення пояснює, що робить noweb простим і розширюваним (і чому вони важливі).

Оригінальна стаття в журналах Linux позначена символом помилка серйозний з друк - синтаксис фрагментів>, а не такий, як показано в статті. Ця помилка виправлена ​​у веб-версії. Стаття про програмне забезпечення повна незначних помилок; надішліть мені листівку, і я із задоволенням надішлю вам передрук із виправленими помилками.

Що нового?

У 2012 році я дізнався, що не існує режиму Emacs, який підтримує Noweb, і навіть працює з Emacs 23 або Emacs 24. Найближчим є режим Дейва Лава, але він страждає від деяких серйозних проблем, пов’язаних з «непрямими буферами». Здається, сам Дейв зник з мережі.

В іншому випадку нічого нового немає. я використовую Noweb 3 дюйма кожен день, але я думаю, що причина для Noweb 3 прийшла і пішла, і я сумніваюся, що коли-небудь вийму її зі стадії "альфа" або перенесу в Lua версії 5.x, вона того варта.

Новачки повинні знати, що версії з нумерацією 2.x є зрілими і можуть бути кращими перед версією 3. Станом на 21 липня 2011 р. На даний момент прийнятою є версія 2.11b.

Ресурси WWW

Деталі та приклади доступні на WWW:

Грамотне програмування та враження

Як спочатку розробляв Дон Кнут, програмування літер передбачає друк коду: його відображення за допомогою кількох шрифтів, математичних символів, стилізованих відступів та розривів рядків. Я думаю, що це лікування було натхнене "видавничим синтаксисом" Algol 60. Однак з трьох причин я рідко використовую зразок рельєфу:

  • Більшість моїх програм редагуються принаймні стільки разів, скільки їх читають, і цікаво перемикатися між простими ASCII для редагування та вигадливими шрифтами та символами для читання. Набагато краще, щоб інструмент алфавітного програмування відображав код точно так, як він написаний. (Я вірю в типографські відмінності назв творів.)
  • Prettyprinting - це обов’язково залежна від мови функція, і я не встигаю створювати гарні принтери для кожної з багатьох мов, якими я користуюся.
  • Мій досвід роботи з маркуванням полягає в тому, що це, як правило, відволікає людей від реальної роботи з програмування та письма. Люди проводять багато часу, базікаючи з симпатичними принтерами, намагаючись отримати результат як слід.

Я бачу місце для друку - друк може бути корисним для архівних програм, які читаються набагато частіше, ніж їх редагують, наприклад, якщо вони з’являються в опублікованих книгах чи журналах. noweb підтримує досить друк за допомогою фільтрів "досить друк", і в каталозі contrib noweb є кілька таких фільтрів, включаючи той, який я вже писав, тому було б краще розвіяти всі чутки про те, що я не буду використовувати доситьпринтер.

Будемо на зв'язку

Мені подобається чути від користувачів мережі; якщо вам сподобався noweb, чому б не надіслати мені місцеву листівку для моєї колекції? Моя адреса: Норман Ремзі
Кафедра комп'ютерних наук, зал Халліган
161 Ave College
Університет Тафтса
Медфорд, Массачусетс 02155
Ви також можете надіслати електронний лист на адресу [email protected] .

Де взяти веб-сторінку

Для користувачів Linux ми рекомендуємо отримати пакет Debian. Для інших спробуйте CTAN. Я також намагався зробити RPM Red Hat; Я був би вдячний почути, якщо це спрацює.

(Примітка для старих: noweb все ще відображається на CTAN, але оскільки ми почали розповсюджувати зараз, на початку 1990-х, наші ідеї про те, як змінити ситуацію, а також наші ідеї про те, що чудово - з моменту краху цього близько 2003 року, я більше не рекомендую отримувати noweb від CTAN.) Доступні попередньо скомпільовані двійкові файли для Debian та NetBSD 1.3.x (g).

Подяка

  • Дякую Престону Бріггзу за визнання Ахо-Корасіка та корисні дискусії.
  • Дякую Дейву Хенсону за cpif.
  • Завдяки Дейву Лаву за чаклунство LaTeX.
  • Дякую Джозефу Рейнольдсу за те, що він попросив мене вирішити [[. ]]] .
  • Дякуємо Аарону Роббінсу за роботу з троффом (нарешті!).
  • Дякуємо Біллу Тросту за оригінальний оригінальний HTML.
  • Дякую Лі Віттенбергу та Філу Міллеру за бінарні файли DOS.
  • Дякуємо Лі Віттенбергу та Карлу Грегорі за основу «Посібника на одній сторінці» .
  • Дякую Garret Prestwood за початковий інтерфейс труб і буферів, що використовуються у версії 3.

Авторське право

Noweb є авторським правом 1989-2011 років Норманом Ремзі. всі права захищені.

Ви маєте право безкоштовно користуватися та розповсюджувати nowe для будь-яких цілей. Ви маєте право змінювати noweb і створювати похідні роботи за умови збереження повідомлення про авторські права, але результат не може бути названий noweb без моєї письмової згоди. Ви можете робити все, що завгодно, за допомогою програм, створених за допомогою noweb. Ви навіть можете продати навіть noweb, наприклад, як частину дистрибутива CD-ROM, за умови, що те, що ви продаєте, є правдивим, повним і незмінним noweb .

Не будучи елітарним, все, що заважатиме усвідомленому програмуванню стати основним методом, полягає в тому, що воно вимагає роздумів та дисципліни. Основний трафік встановлюють люди, які хочуть швидких результатів, використовуючи майже ті самі методи, що й усі інші, і інформоване програмування ніколи не матиме такого виду апеляції. Це не відступає від його корисності як підходу. -Петрік Т. Дж. Макфі