Грамотное программирование

Грамотное программирование

Грамотное программирование (ГП; англ. Literate Programming) — концепция, методология программирования и документирования. Иногда это словосочетание (ошибочно переводят как)/[образно называют] "литературное программирование". Термин и саму концепцию разработал Дональд Кнут в 1981 году при разработке системы компьютерной вёрстки TeX.

Способ понять ГП — вспомнить объяснения в курсах программирования, написанные фразами на «псевдокоде» на «человеческом языке». Они понятны, когда сам код труден, и скрывают под одной фразой-«оператором» множество других вложенных абстракций и/или программного кода на непосредственно машинном языке.

ГП в некотором смысле есть «программирование на псевдокоде» произвольными фразами, которые затем раскрываются как точные макро с помощью утилиты из файла-текста, который включает в себя одновременно документированные текстовые объяснения концепций, сам код и псевдокод.

Содержание

Сущность подхода

  • ГП есть цельный мета-подход к написанию программ, то есть «парадигма», применимая на мета-уровне к любой (процедурной, функциональной, декларативной, объектно-ориентированной) машинной программе на любом машинном языке;
  • ГП есть система макро, создаваемая из фраз на человеческом языке, которые становятся «метаязыком» над конкретным языком программирования. Пользование этими фразами подобно объяснению алгоритмов на «псевдокоде», но в случае ГП они становятся точными «новыми операторами» метаязыка;
  • программа и документация более не пишутся как машинный код с примечаниями. Само конструирование программы идёт в порядке, определяемом логикой мысли (или объяснений), где макро на «псевдокоде» играют роль абстракций (над абстракциями и/или кодом) для ясности мысли. Меняется кардинально порядок следования в программе, он не машинный, а тот, который требует логика;
  • технически ГП делается с помощью утилиты, которая одной командой запускает препроцессор, раскрывает все макро и «спутывает», «запутывает» («tangle») логическое изложение в машинный код, который потом можно компилировать или запускать как обычно. Другая команда «сплетает» («weave») из этого общего для программы и объяснений файла сформатированную документацию (для печати, веба и т. д.).

Другими словами, программа мыслится не как иерархия, top-down или bottom-up, но как «взаимозависимая сеть концепций» (отсюда название первой системы ГП — «Web») и создается как «поток мысли», проходящий по этой сети в связном, логичном виде, что внешне делает форму описания похожей на литературное эссе. Программист, таким образом, отказывается от привязки к предписанному машиной порядку.

Ошибочные представления

Система ГП, которую Кнут предлагал как альтернативу «структурному программированию» 1970-х годов, несмотря на доказанную эффективность[источник не указан 660 дней], мало распространена из-за непонимания: многие думают, что ГП — лишь система документирования или система форматирования обычных комментариев. На самом деле, программа практически без комментариев может быть ГП, равно как и многословные примечания сами по себе не создают ГП-подхода.

Самое частое непонимание относится к роли системы макро, позволяющей строить произвольные системы абстракций над абстракциями и к изменению порядка следования кусков от машинно-ориентированного к тому, который требует мышление. Так, абсолютно неверно считать ГП-программированием использование систем документирования интерфейсов вроде JavaDoc, doxygen, DOC++, autoduck, POD.

Пример ГП

Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций «Что делать?» для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер.

Дональд Кнут, http://community.livejournal.com/ru_perl/249441.html

Существующие инструменты

См. также

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Полезное


Смотреть что такое "Грамотное программирование" в других словарях:

  • Литературное программирование — или (английский термин намеренно двусмыслен) Грамотное программирование (англ. Literate Programming) концепция, методология программирования и документирования. Термин и саму концепцию разработал Дональд Кнут в 1981 году при разработке системы… …   Википедия

  • Кнут, Дональд Эрвин — В Википедии есть статьи о других людях с такой фамилией, см. Кнут. Дональд Эрвин Кнут Donald Ervin Knuth …   Википедия

  • Искусство программирования — The Art of Computer Programming Автор: Дональд Кнут Жанр: Информатика …   Википедия

  • Д. Кнут — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Дональд Кнут — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Дональд Эрвин Кнут — Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Кнут, Дональд — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Кнут Д. — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Кнут Д. Э. — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия

  • Кнут Дональд Эрвин — Дональд Эрвин Кнут Donald Ervin Knuth Дата рождения: 10 января 1938 (71 год) Место рождения: Милуоки, Висконсин, США Гражданство …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»