Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. |
Эта статья или раздел нуждается в переработке. |
Грамотное программирование (ГП; англ. Literate Programming) — концепция, методология программирования и документирования, в которой программа состоит из прозы на естественном языке вперемежку с макроподстановками и кодом на языках программирования[1]. Термин и саму концепцию предложил Дональд Кнут в 1981 году при разработке системы компьютерной вёрстки TeX.
Грамотное программирование подобно объяснениям на лекциях по программированию, использующим фразы на «псевдокоде» на естественном языке. Они вносят ясность в сложный код и скрывают под одной фразой множество других вложенных абстракций и программного кода на формальном языке программирования.
ГП в некотором смысле есть «программирование на псевдокоде» произвольными фразами, которые затем раскрываются как макросы с помощью утилиты из исходного файла, который включает в себя одновременно документированные текстовые объяснения концепций, сам код и псевдокод.
Другими словами, программа строится не как восходящая или нисходящая иерархия, а как «взаимозависимая сеть концепций» (отсюда название первой системы ГП — «Web») и создается как «поток мысли», проходящий по этой сети в связном, логичном виде, что внешне делает форму описания похожей на литературное эссе. Порядок изложения оказывается независим от требований транслятора языка.
Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций «Что делать?» для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер.
Система ГП, которую Кнут предлагал как альтернативу «структурному программированию» 1970-х годов, несмотря на благоприятные отзывы, не получила широкого распространения из-за отсутствия инструментальной поддержки и их интеграции[2].
Другой проблемой явилась ориентация ГП на пакетную обработку, тогда как системы программирования всё больше стали ориентироваться на средства с WYSIWYG[2].
Кроме того, распространению ГП помешали ложные представления о том, что «грамотные программы» должны быть монолитными и что ГП — противоположность гипертекста[2].
Многие полагают, что ГП — лишь система документирования или система форматирования обычных комментариев. На самом деле, программа практически без комментариев может быть написана с применением подхода ГП, равно как и многословные примечания сами по себе не создают ГП-подхода.
Самое частое непонимание относится к роли системы макросов, позволяющей строить произвольные системы абстракций над абстракциями и к изменению порядка следования кусков от машинно-ориентированного к тому, который требует мышление. Так, абсолютно неверно считать ГП-программированием использование систем документирования интерфейсов вроде JavaDoc, doxygen, DOC++, autoduck, POD.
Ещё одним заблуждением считается, что Д. Е. Кнут хотел зафиксировать подход «сверху-вниз» в разработке программных систем. На самом деле он предлагает совмещать подходы «сверху вниз» и «снизу вверх», как это следует из цитаты, приведённой в книге TeX:The program: «But the author suggests that the best way to understand this program is to follow pretty much the order of TeX’s components as they appear in the WEB description you are now reading, since the present ordering is intended to combine the advantages of the „bottom up“ and „top down“ approaches to the problem of understanding a somewhat complicated system.»
Список примеров в этом разделе не основывается на авторитетных источниках, посвящённых непосредственно предмету статьи или её раздела. |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .