Отладка Mathcad-программ
Каждый, кто когда-либо серьезно занимался программированием, знает, что написать программу можно за несколько минут. Но на поиск ошибки в ней могут уйти часы, дни, недели...
Английский эквивалент термина отладка – a debugging заслуживает отдельного разговора. A bug по-английски – жучок, а приставка de означает удаление. Сам термин debug дословно можно перевести как обезжучивание. Эта калька с английского не такая уж бессмысленная. Один из первых компьютеров стал барахлить из-за того, что в его электронных внутренностях запутался таракан, закоротил контакты, обуглился и, как некий связист-камикадзе, замкнул их, внеся тем самым изменения в электронную схему машины.
К сожалению, пакет Mathcad не оборудован штатными средствами отладки. А к ним обычно относят следующую тройку инструментов:
1. Трассировка программы (Trace), когда после ее запуска цветом или жирным выделением отмечаются выполняющиеся операторы. Так можно проверить соответствие порядка выполнения операторов задуманному алгоритму. Программу можно выполнять и пошагово – очередной оператор выполняется после нажатия программистом какой-либо оговоренной клавиши. При этом можно «заходить» или не «заходить» в функции или процедуры. Не заходят в них в тех случаях, когда они отлажены и оттестированы отдельно (заранее).
Система Mathcad, выполняя операторы документа, своеобразно трассирует их. Если какой-либо оператор выполняется достаточно долго (суммируются элементы объемного вектора, например), то он оконтуривается и штрихуется зеленым цветом. Это можно было бы назвать трассировкой, если такое выделение операторов велось бы и в теле программ с циклами и альтернативами. Но система Mathcad рассматривает программу как единый оператор (второй атрибут программирования) и не подсвечивает операторы в нем, а оконтуривает и подсвечивает всю программу: «Ждите ответа!»
2. Пошаговое выполнение операторов обычно сопровождают просмотром (Watch) текущих значений всех или некоторых переменных. При этом на дисплей выводится специальное окно, где отмечаются имена переменных, их тип, текущее значение и др.
3. Критические операторы (места) программы отмечают точками останова (BreakPoint), где компилятор прекращает выполнение машинного кода. После этого программист может просмотреть значения всех или некоторых переменных (см. выше), подправить программу и дать команду на ее дальнейшее выполнение (выполнять программу далее в нормальном режиме, пошагово или даже пустить вспять, если чувствуется, что ошибка случилась ранее отмеченного места).
Но повторяем, среда программирования Mathcad лишена каких-либо специализированных средств отладки. Объяснить и в какой-то мере оправдать это можно лишь тем, что программирование – это лишь вспомогательный инструмент при решении задач[80]. Но при отладке самой программы Mathcad, по-видимому, инструменты отладки использовались. Автор об этом узнал случайно, когда работал с самой первой бета-версией Mathcad 8, нажав правую кнопку мыши с курсором, помещенным на рабочем листе. Вот что появилось на экране дисплея (рис. 6.48): локальное меню с волшебным словом «Debugger»: