Главная страница проекта ИНФОРМАТИКА-21

Наука Школе

Некоторые заповеди грамотного программирования

1   Начинать проектировать модуль с интерфейсов процедур и формулировки того, что предполагается о состоянии вычислительного процесса при входе в процедуру, и что ожидается на выходе из нее (пред- и пост-условия).

2   Каждое уточнение модуля должно быть небольшим и обозримым.
3   Каждое уточнение должно приводить к синтаксически правильной программе.
4   После каждого уточнения программа должна быть семантически правильной в той степени, в какой это требуется на данном шаге уточнения.

5   Почаще нажимать Ctrl+K!

Пункты 2-4 составляют фундаментальный метод разработки программ, известный как пошаговое уточнение — step-wise refinement (см. статью Вирта в Comm. ACM, Vol. 14, No. 4, April 1971; статья доступна здесь).

Пункт 1 является исходной точкой для пошагового уточнения. Здесь еще говорят о проектировании, управляемом интерфейсами (interface-driven design), а также о проектировании по контрактам (design by contract). Создание программы должно начинаться с задания интерфейсов процедур (прежде всего экспортируемых) и пред- и пост-условий — точно так же как решение любой задачи начинается с ее постановки. Проектирование интерфейсов и задание пред- и пост-условий — ключевой элемент постановки задачи в программировании.

Выполнение пунктов 2-4 позволяет сохранять интеллектуальный контроль за правильностью создаваемой программы, помогая устранять ошибки (как синтаксические огрехи вроде опечаток — п.3, так и смысловые — п.4) на возможно более ранней стадии.

Рекомендация пункта 5 имеет смысл только в контексте пп.2-4: она бессмыссленна, если процесс разработки не удовлетворяет требованиям пп.2-4 (а также при работе с медленными компиляторами для сложных языков). Здесь — одно из важнейших преимуществ, доставляемое минимализмом языка Оберон/Компонентный Паскаль и четкостью его дизайна, обеспечивающего исключительную быстроту компилятора. Быстрый компилятор подобного типа был впервые построен Виртом для предшественника Оберона — языка Модула-2 с систематическим применением принципа пошагового уточнения; см. здесь.

Правило 5 означает, в частности, что если компилятор обнаружил несколько ошибок, то устранять их нужно, как правило, по одной (обычно начиная с первой), каждый раз повторяя компиляцию (см. также здесь).

Главная страница проекта ИНФОРМАТИКА-21

Наука Школе