Теория ошибок
Ошибки так же неисчерпаемы, как и атом.
Аксиома:
В любой программе есть ошибки.
Закон пропорциональности:
Чем более программа необходима, тем больше в ней ошибок.
Следствие:
Ошибок не содержит лишь совершенно ненужная программа.
Фундаментальный закон теории ошибок:
На ошибках учатся.
Следствие 1:
Программист, написавший программу, становится ученым.
Следствие 2:
Чем больше программист делает ошибок, тем быстрее он делается ученым.
Следствие 3:
Крупный ученый-программист никогда не пишет правильные программы.
Замечание:
На то он и ученый.
Указание начинающему программисту:
Если вы с первого раза сумели написать программу, в которой
транслятор не обнаружил ни одной ошибки, сообщите об этом системному
программисту. Он исправит ошибки в трансляторе.
Закон необходимости ошибок:
Программист может обнаружить ошибку только в чужой программе.
Следствие:
Ошибке не все равно, кто ее обнаружит.
Совет начинающему программисту:
Никогда не исправляйте найденные ошибки, ибо это повлечет за собой
появление неизвестного числа ненайденных. Лучше опишите их в
сопроводительной документации как особенность программы.
Определение:
Будем называть языком ошибок правила, в обход которых пишутся программы.
Язык ошибок
Ошибки могут следовать друг за другом.
От перестановки двух эквивалентных ошибок результат не меняется
(коммутативность эквивалентных ошибок).
Две последовательные ошибки можно объединить в одну, более сильную.
Одинаковые ошибки необязятельно делать каждый раз, достаточно
сделать одну, а затем обращаться к ней по мере необходимости из любого
места программы.
Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконечный.
Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).
Ошибки допускают многократное вложение друг в друга. Две одинаковые
вложенные ошибки называются четной ошибкой и ошибкой не являются.
Свойство четности ошибок:
Если написанная программа сработала правильно, то это значит,
что во время ее работы выполнилось четное число ошибок или программист
не понял задание.
Формулировка вышеприведенного свойства, предназначенная для политиков:
Ошибка, повторенная дважды, перестает быть ошибкой.
Взаимодействие ошибок с базовой операционной системой:
Во время исполнения ошибки имеют наивысший приоритет. Прервать
исполнение ошибки может только другая, более активная ошибка.
Запросы операционной системы к ошибкам ошибками могут игнорироваться.
Запросы ошибок к операционной системе игнорироваться не могут.
При работе с файлами ошибки могут пользоваться файловой
системой базовой ОС и ее ошибками.
На ЭВМ с параллельной архитектурой может выполняться несколько
ошибок одновременно.
Системные программы
Системные программы облегчают процесс написания прикладных
программ и их ошибок.
Определение:
Тестирование - это процесс нахождения ошибок в тесте. Хороший тест
должен содержать ошибки, компенсирующие их нехватку в тестируемой программе.
Языковый редактор, призванный уберечь программиста от синтаксических ошибок,
позволяет вносить в программу весьма хитроумные ошибки, которые не удается
обнаружить ни транслятором, ни отладчиком. Обычный текстовый редактор
таких возможностей не предоставляет.
Программа-транслятор, предназначенная для перевода программ с
языка высокого уровня на машинный язык, при переводе порождает
ошибки. Ошибки, которые содержались в исходном описании, переводятся безошибочно.
Заключительный совет тем, кто до него добрался:
До начала работы над проектом следует тщательно продумать все необходимые
ошибки и связи между ними. Это значительно упростит работу над ошибками
в самом проекте.
|