mytopics
 
 

Теория ошибок

Ошибки так же неисчерпаемы, как и атом.

Аксиома:

В любой программе есть ошибки.

Закон пропорциональности:

Чем более программа необходима, тем больше в ней ошибок.

Следствие:

Ошибок не содержит лишь совершенно ненужная программа.

Фундаментальный закон теории ошибок:

На ошибках учатся.

Следствие 1:

Программист, написавший программу, становится ученым.

Следствие 2:

Чем больше программист делает ошибок, тем быстрее он делается ученым.

Следствие 3:

Крупный ученый-программист никогда не пишет правильные программы.

Замечание:

На то он и ученый.

Указание начинающему программисту:

Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.

Закон необходимости ошибок:

Программист может обнаружить ошибку только в чужой программе.

Следствие:

Ошибке не все равно, кто ее обнаружит.

Совет начинающему программисту:

Никогда не исправляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопроводительной документации как особенность программы.

Определение:

Будем называть языком ошибок правила, в обход которых пишутся программы.


Язык ошибок

Ошибки могут следовать друг за другом.

От перестановки двух эквивалентных ошибок результат не меняется (коммутативность эквивалентных ошибок).

Две последовательные ошибки можно объединить в одну, более сильную.

Одинаковые ошибки необязятельно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.

Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконечный.

Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).

Ошибки допускают многократное вложение друг в друга. Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.

Свойство четности ошибок:

Если написанная программа сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задание.

Формулировка вышеприведенного свойства,
предназначенная для политиков:

Ошибка, повторенная дважды, перестает быть ошибкой.

Взаимодействие ошибок с базовой операционной системой:

Во время исполнения ошибки имеют наивысший приоритет. Прервать исполнение ошибки может только другая, более активная ошибка.

Запросы операционной системы к ошибкам ошибками могут игнорироваться.

Запросы ошибок к операционной системе игнорироваться не могут.

При работе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.

На ЭВМ с параллельной архитектурой может выполняться несколько ошибок одновременно.

Системные программы

Системные программы облегчают процесс написания прикладных программ и их ошибок.

Определение:

Тестирование - это процесс нахождения ошибок в тесте. Хороший тест должен содержать ошибки, компенсирующие их нехватку в тестируемой программе.

Языковый редактор, призванный уберечь программиста от синтаксических ошибок, позволяет вносить в программу весьма хитроумные ошибки, которые не удается обнаружить ни транслятором, ни отладчиком. Обычный текстовый редактор таких возможностей не предоставляет.

Программа-транслятор, предназначенная для перевода программ с языка высокого уровня на машинный язык, при переводе порождает ошибки. Ошибки, которые содержались в исходном описании, переводятся безошибочно.

Заключительный совет тем, кто до него добрался:

До начала работы над проектом следует тщательно продумать все необходимые ошибки и связи между ними. Это значительно упростит работу над ошибками в самом проекте.



 
   
Сайт управляется системой uCoz