На этом шаге мы рассмотрим это понятие.
Литературное программирование - это способ программирования, при котором код гораздо легче прочитать неспециалисту. В основе литературного программирования лежит идея о том, что лучший способ передачи сообщения - совмещение формального и неформального способов.
Такой подход обеспечивает естественную основу для переключения между естественным языком (русским, английским и т.п.) и формальным языком (C, Lisp, ML, C# и т.п.) и их совмещения.
Литературное (грамотное) программирование (англ. Literate Programming - грамотное, культурное программирование) - это концепция, методология программирования и документирования программного кода.
Термин и саму концепцию разработал Д.Кнут (1981) при разработке системы компьютерной вёрстки TEX. Он писал: "Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций "Что делать?" для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер".
Для понимания литературного программирования вспомним объяснения в курсах программирования, написанные фразами на псевдокоде на "человеческом" языке. Они понятны, если код труден, и скрывают под одной фразой-"оператором" множество других вложенных абстракций и/или программного кода на непосредственно машинном языке.
Литературное программирование в некотором смысле - это "программирование на псевдокоде" с помощью произвольных фраз, которые затем раскрываются как макросы с помощью утилиты из исходного файла, который включает в себя одновременно документированные текстовые объяснения концепций, сам код и псевдокод.
Поговорим о сущности подхода.
Литературное программирование - это метаподход к написанию программ, т.е. парадигма, применимая к любой (процедурной, функциональной, декларативной, объектно-ориентированной) компьютерной программе на любом машинном языке.
Литературное программирование является системой макросов, создаваемая из фраз на естественном языке, которые превращаются в метаязык над конкретным языком программирования. Пользование этими фразами подобно объяснению алгоритмов на псевдокоде, но в случае литературного программирования они становятся точными "новыми операторами" метаязыка. При этом:
Другими словами, программа мыслится не как иерархия, "сверху вниз" или "снизу вверх", но как взаимозависимая сеть концепций (отсюда название первой системы литературного программирования - WEB) и создается как "поток мысли", проходящий по этой сети в связном, логичном виде, что внешне делает форму описания похожей на литературное эссе. Программист, таким образом, отказывается от привязки к порядку, предписанному компьютеру.
Литературное программирование используется в следующих случаях:
Вы говорите: "Здесь был использован запрещённый приём, он работает, потому что..." - и расписываете в мельчайших подробностях причины и основные положения;
Перечислим ряд ошибочных представлений о литературном программировании:
Приведём инструменты литературного программирования:
На следующем шаге мы рассмотрим литературный код на языке Haskell.