|
В инженерном конструировании чертежи обычно подписываются ответственным лицом, если последний считает, что они хорошо сделаны и соответствуют принятым стандартам. По окончании разработки программ их не визирует ни ответственное лицо, ни непосредственный разработчик. Игнорируются требования к ясности и стандартам стиля; интересуются лишь тем, работает ли программа, а если нет, то когда заработает.
По-видимому, целесообразно, чтобы достаточно сложные программы подписывались двумя лицами, которые бы отвечали, таким образом, за приемлемость этой программы по стилю и размеру. Это несложное требование со стороны руководителя проекта привело бы к повышению качества программ без дополнительных затрат. Если бы программисты знали, что программы будут читать и проверять, они более четко писали бы свои программы. Если второе лицо, которое должно ставить свою подпись, не может про-3*
BEGIN
COMMENT ЭТА ПРОГРАММА СЧИТЫВАЕТ ОДНО ДЕЙСТВИТЕЛЬНОЕ ЧИСЛО С ВХОДНОЙ КАРТЫ И ПЕЧАТАЕТ ЗНАЧЕНИЕ КВАДРАТНОГО КОРНЯ ИЗ ЭТОГО ЧИСЛА. ДЛЯ ВЫЧИСЛЕНИЯ КВАДРАТНОГО КОРНЯ ПРИМЕНЯЕТСЯ МЕТОД ИТЕРАЦИИ НЬЮТОНА ДО ПОЛУЧЕНИЯ ТОЧНОСТИ 10* *(—6). ОСНОВНАЯ ИДЕЯ ЭТОГО МЕТОДА ЗАКЛЮЧАЕТСЯ В СЛЕДУЮЩЕМ: ЕСЛИ X—НЕКОЕ ПРИБЛИЖЕНИЕ КВАДРАТНОГО КОРНЯ ИЗ Y, ТО (X+Y/X)/2 — ЛУЧШЕЕ ПРИБЛИЖЕНИЕ. МЫ ПОВТОРЯЕМ ВЫЧИСЛЕНИЕ ПРИБЛИЖЕНИЯ ДО ТЕХ ПОР, ПОКА НЕ ПОЛУЧИМ ЖЕЛАЕМОЙ ТОЧНОСТИ, ТО ЕСТЬ ПОКА (X**2-Y)/Y НЕ СТАНЕТ МЕНЬШЕ 10"** (—6)
ОПИСАНИЕ ПЕРЕМЕННЫХ
INPUT —ЧИСЛО, СЧИТАННОЕ С ВХОДНОЙ КАРТЫ, ТО ЕСТЬ ЧИСЛО, КВАДРАТНЫЙ КОРЕНЬ ИЗ КОТОРОГО МЫ должны НАЙТИ
APPROXIMATION — ТЕКУЩЕЕ ПРИБЛИЖЕНИЕ КВАДРАТНОГО КОРНЯ ИЗ ВХОДНОГО ЧИСЛА;
REAL INPUT, APPROXIMATION;
COMMENT УСТАНОВКА НАЧАЛЬНОГО ЗНАЧЕНИЯ — ПУСТЬ INPUT ЯВЛЯЕТСЯ НЕ ОЧЕНЬ ХОРОШИМ ПРИБЛИЖЕНИЕМ КВАДРАТНОГО КОРНЯ ИЗ INPUT, НО ДЛЯ НАШИХ ЦЕЛЕЙ ЭТОГО ПРИБЛИЖЕНИЯ ДОСТАТОЧНО;
READ (INPUT); APPROXIMATION: = INPUT;
COMMENT МЕТОД НЬЮТОНА ПРИМЕНИМ ТОЛЬКО К ПОЛОЖИТЕЛЬНЫМ ЧИСЛАМ, ПОЭТОМУ СНАЧАЛА МЫ ДОЛЖНЫ УБЕДИТЬСЯ В ТОМ, ЧТО ВХОДНОЕ ЧИСЛО ПОЛОЖИТЕЛЬНОЕ;
IF INPUT=0 THEN
WRITE (0) ELSE IF INPUT<0 THEN
WRITE ("ОШИБКА, INPUT ВНЕ ОБЛАСТИ ОПРЕДЕЛЕНИЯ"!
ELSE
BEGIN
WHILE ABS ((INPUT —APPROXIMATION*
APPROXIMATION) /INPUT) > .000001 DO APPROXIMATION : = . 5* APPROXIMATION+ INPUT/APPROXIMATION);
WRITE (APPROXIMATION)
END
END.
Рис. 1.4. Программа, приведенная на рис. 1.3, с комментариями, отступами и правильно подобранными именами переменных, честь программу и понять, что она делает, то как быть людям из группы поддержки программного обеспечения, когда придет время неизбежных изменений и эксплуатации программы?
Начинающие программисты думают, что они составляют программы для машин. Опытные программисты знают, что программы пишут для людей. Длинная цепочка людей будет читать большую часть этих программ. Вначале сам автор будет много раз читать и перечитывать программу, в то время пока пишет, тестирует и отлаживает ее. Затем все, кто должны использовать программу, будут перечитывать ее много раз. Мы учимся писать, читая. По-видимому, причина того, что мы таким же образом не учимся программировать (т. е. читая чужие программы), — недоступность большинства программ.
Существование таких никому непонятных программ объясняется тем, что программист, писавший ее, а также те, кто ее модифицировал, по-настоящему не разобрались в ней.
Такие программы подобны "черному ящику", воспринимающему входную информацию и выдающему выходную, однако никто не знает, как он работает. Поэтому эти программы нужны, пока не наступает пора неизбежных изменений; тогда программа выбрасывается и пишется новая, поскольку это легче, чем разобраться в старой.
⇐1.14. Выбор имен разделов || Оглавление || 1.16. Заключение1⇒
|