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