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