Литературное программирование

Литературное программирование.

Содержание

1 Общая информация

  • Автором метода является Дональд Кнут [2].
  • Распространённое название: Грамотное программирование.
  • Литературное программирование — метод разработки, нацеленный на повышение познаваемости программ и основанный на встраивании исходного кода в документацию.
  • Познаваемость программы — свойство исходного кода и сопроводительной документации, которое характеризует объём умственных усилий, затрачиваемых читателем на понимание программы в целом и её частей в частности.
  • Объектом воздействия в литературном программировании является мозг человека, а не компьютер.

1.1 Идеология метода

  • Программа оформляется как книга.
  • Исходный код разбивается на кусочки и рассредотачивается по документации.
  • Кусочки кода связываются посредством гиперссылок.
  • Первична документация.
  • За основу берётся описание программы, в которое вставляются кусочки исходного кода.
  • Для встраивания кода в документацию применяется специальная разметка текста.

2 Принципы реализации методики литературного программирования

  • Программа составляется из кусочков (фрагментов).
  • Каждый фрагмент содержит блок кода и описывающую его документацию.
  • Фрагменты связываются гиперссылками.
  • Все фрагменты хранятся вместе, в одном физическом источнике.

2.1 Служебные программы

  • Программа weave обрабатывает источник и формирует документ, предназначенный человеку.
    • В этом документе программа представлена в виде книги для чтения, в которой код перемежается с описанием.
  • Программа tangle извлекает из того же самого источника исходные коды и формирует из них файлы, предназначенные компилятору.
    • В этих файлах программа представлена в том виде, как того требует целевой язык программирования.

3 Статьи

Литература

1. Kery M. B. The story in the notebook / M. B. Kery, M. Radensky, M. Arya [и др.] // Proceedings of the 2018 chi conference on human factors in computing systems. – ACM, 2018. – Сс. 1–11.
2. Knuth D. E. Literate programming / D. E. Knuth // The computer journal. – 1984. – Т. 27. – № 2. – Сс. 97–111.
3. Schulte E. A multi-language computing environment for literate programming and reproducible research / E. Schulte, D. Davison, T. Dye, C. Dominik // Journal of statistical software. – 2012. – Т. 46. – № 3.

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие