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

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

Содержание

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

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

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

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

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

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

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

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

3 Реализации для разных языков программирования

3.1 Julia

3.1.1 Literate.jl

3.1.2 Weave.jl

3.1.3 Documenter.jl

4 Утилиты для литературного программирования

4.1 Entangled

5 Статьи

6 Библиография

Литература

1. Knuth, D.E. Literate Programming / D.E. Knuth // The Computer Journal. – 1984. – Т. 27. – № 2. – Сс. 97–111. DOI: 10.1093/comjnl/27.2.97.
2. 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. DOI: 10.18637/jss.v046.i03.
3. 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.

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

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

Похожие