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