БИБЛИОТЕЧКА
ПРОГРАММИСТА
Г. К. БОРОВИН
М. М. КОМАРОВ
B. C. ЯРОШЕВСКИЙ
Ошибки- ловушки
при программировании
на фортране
БИБЛИОТЕЧКА
ПРОГРАММИСТА
Г. К. БОРОВИН, М. М. КОМАРОВ,
В. С. ЯРОШЕВСКИЙ
ОШИБКИ-ЛОВУШКИ
ПРИ ПРОГРАММИРОВАНИИ
НА ФОРТРАНЕ
Под редакцией
Ю. М. БАЯКОВСКОГО
МОСКВА «НАУКА»
ГЛАВНАЯ РЕДАКЦИЯ
ФИЗИКО-МАТЕМАТИЧЕСКОЙ ЛИТЕРАТУРЫ
198 7
ПРЕДИСЛОВИЕ ТИТУЛЬНОГО РЕДАКТОРА
У книги, с которой вы начинаете знакомиться, не совсем обычное
название. Необычен и ее жанр. Это — не монография, не учебник, не
задачник. Можно, наверное, назвать такую книгу хрестоматией, в
которой собраны примеры, позволяющие совершенствовать искусство
программирования на фортране. Конечно, если приходится от случая к случаю писать небольшие
программы, можно обойтись весьма поверхностньми представлениями
о языке. Зачастую и программировать-то нет нужды — в библиотеке
отыщется готовая, ранее уже кем-то написанная программа.
Однако при решении больших и сложных задач (а именно для
решения таких задач создаются и совершенствуются вычислительные
машины) прикладной программист вынужден провести иногда довольно
глубокое экспериментальное исследование транслятора. Инструментом
нужно владеть в совершенстве и пользоваться им разумно и
эффективно. К сожалению, в документации, которой располагает программист,
содержится, как правило, лишь самая общая информация о языке и ке
обсуждаются особенности реализации тех или иных его конструкций,
а реализованы они могут быть по-разному. Как-то проводилось
исследование шести различных трансляторов языка фортран, и оно
показало, что только одна конструкция (а именно — CONTINUE) во всех
трансляторах интерпретируется одинаково. При составлении больших программ необходимо учитывать
множество порой противоречивых факторов. Важны и микросекунды,
которые затрачиваются на выполнение оператора, и килобайты, которые
займет программа в памяти. К тому же полезно обеспечить мобильность
программы — возможность решения задачи на разных машинах. Использование тонких, нетривиальных особенностей языка (а тем
более транслятора) неизмеримо повышает риск появления ошибок. Считают, что количество ошибок растет экспоненциально с
увеличением длины программы. В «программистском фольклоре» бытует
утверждение, согласно которому «в любой работающей программе есть хотя
бы одна ошибка». Стадия отладки и тестирования программ
чрезвычайно трудоемка. По некоторым оценкам на нее приходится 40—50 %
времени, затрачиваемого на производство программы. Принято даже
считать, что «хороший программист не тот, который не допускает ошибок,
а тот, который их быстро находит». Новичка ошибки обескураживают,
приводя его в полнейшее уныние. Стоит ли удивляться: в институтах
технике отладки не учат, а формальных правил отладки вообще не
существует. В этих условиях настоящая книга может служить
существенным подспорьем. Основываясь на своем богатом опыте и опыте своих
коллег, авторы собрали, можно сказать, хрестоматийные примеры
ошибок, имеющих самую разную природу. Легкость отладки в значительной мере зависит и от стиля
программирования.