Шаг 26.
Основы языка Haskell. Основные типы данных, операции, способы определения функций. Литературное (грамотное) программирование

    На этом шаге мы рассмотрим это понятие.

    Литературное программирование - это способ программирования, при котором код гораздо легче прочитать неспециалисту. В основе литературного программирования лежит идея о том, что лучший способ передачи сообщения - совмещение формального и неформального способов.

    Такой подход обеспечивает естественную основу для переключения между естественным языком (русским, английским и т.п.) и формальным языком (C, Lisp, ML, C# и т.п.) и их совмещения.

    Литературное (грамотное) программирование (англ. Literate Programming - грамотное, культурное программирование) - это концепция, методология программирования и документирования программного кода.

    Термин и саму концепцию разработал Д.Кнут (1981) при разработке системы компьютерной вёрстки TEX. Он писал: "Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций "Что делать?" для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер".

    Для понимания литературного программирования вспомним объяснения в курсах программирования, написанные фразами на псевдокоде на "человеческом" языке. Они понятны, если код труден, и скрывают под одной фразой-"оператором" множество других вложенных абстракций и/или программного кода на непосредственно машинном языке.

    Литературное программирование в некотором смысле - это "программирование на псевдокоде" с помощью произвольных фраз, которые затем раскрываются как макросы с помощью утилиты из исходного файла, который включает в себя одновременно документированные текстовые объяснения концепций, сам код и псевдокод.

    Поговорим о сущности подхода.

    Литературное программирование - это метаподход к написанию программ, т.е. парадигма, применимая к любой (процедурной, функциональной, декларативной, объектно-ориентированной) компьютерной программе на любом машинном языке.

    Литературное программирование является системой макросов, создаваемая из фраз на естественном языке, которые превращаются в метаязык над конкретным языком программирования. Пользование этими фразами подобно объяснению алгоритмов на псевдокоде, но в случае литературного программирования они становятся точными "новыми операторами" метаязыка. При этом:

    Другими словами, программа мыслится не как иерархия, "сверху вниз" или "снизу вверх", но как взаимозависимая сеть концепций (отсюда название первой системы литературного программирования - WEB) и создается как "поток мысли", проходящий по этой сети в связном, логичном виде, что внешне делает форму описания похожей на литературное эссе. Программист, таким образом, отказывается от привязки к порядку, предписанному компьютеру.

    Литературное программирование используется в следующих случаях:

    Перечислим ряд ошибочных представлений о литературном программировании:

    Приведём инструменты литературного программирования:

  1. WEB - система программирования для языка Паскаль;
  2. CWEB - версия WEB, разработанная для документирования С, C++ и Java;
  3. FWEB - система программирования для языка Fortran;
  4. pyWeb - система, позволяющая создавать программы на любом языке программирования и описывать их с помощью произвольного языка разметки, например, HTML, LaTeX, reStructured Text;
  5. Rambutan - система программирования для языка Java.


   Замечание (важное). Литературное программирование не превращает сложную программу в простую - это лишь один из способов программирования.

    На следующем шаге мы рассмотрим литературный код на языке Haskell.




Предыдущий шаг Содержание Следующий шаг