Грамотное программирование
-
История и философия грамотного программирования
- Введено Дональдом Кнутом в 1984 году
- Цель: создание программ, понятных людям
- Внедрено в Стэнфордском университете
-
Концепция грамотного программирования
- Написание логики программы на естественном языке
- Использование макросов для сокрытия абстракций
- Препроцессор для создания компилируемого кода и документации
-
Преимущества грамотного программирования
- Улучшение качества программ
- Естественная система документации
- Легкость переноса программного обеспечения
-
Отличие от создания документации
- Грамотное программирование не ограничивается генерацией документации
- Макросы скрывают фрагменты кода, а не наоборот
-
Рабочий процесс
- Создание всеобъемлющего документа
- Генерация машинного исполняемого кода
-
Пример грамотного программирования
- Программа wc literate
- Использование макросов для скрытия кода
- Запись хода мыслей в процессе написания программы
-
Замечательные примеры
- Axiom, система компьютерной алгебры
- WEB, первая опубликованная среда программирования
-
История грамотного программирования
- Кнут использовал грамотную систему программирования DOC в 1979 году
- Вдохновлен идеями Пьера-Арнуля де Марнефа
-
CWEB и другие реализации
- CWEB адаптирован для C и C++, работает в большинстве ОС
- Создает документацию в формате TeX и PDF
- Существуют другие реализации, не имеющие макросов, но позволяющие выполнять код по отдельности
-
Текстовый редактор Leo
- Редактор контуров, поддерживает noweb и CWEB
- Сочетает идеи грамотного программирования и работы с большими текстами
- Включает расширения для программирования схем и управления текстом
-
Грамотные скрипты и LaTeX
- Полный исходный текст LaTeX может быть скомпилирован без изменений
- Код может быть помечен в стиле Ричарда Берда
- Пакет LaTeX listings предоставляет среду lstlisting для оформления кода
-
Система Web 68 и TEI
- Использовала Алгол 68, но препроцессор «tang» не использовал этот язык
- Механизм настройки TEI позволяет смешивать документацию prose с фрагментами схемы
- Парадигма грамотного программирования Кнута вдохновляет на создание схем и конвейеров моделей обработки
-
Другие инструменты и концепции
- Генератор документации: документация встраивается в исходный код
- Интерфейс ноутбука: среда виртуального ноутбука для грамотного программирования
- Sweave и Knitr: инструменты для создания динамических статистических отчетов
- Самодокументируемый код: исходный код, который легко понять без документации