Форум OlegON > Разговоры на отвлеченные темы > Беседка > Интересное

Теория ошибок : Интересное

23.04.2024 13:36


16.01.2007 18:06
OlegON
 
Ошибки так же неисчерпаемы, как и атом.

* Аксиома: В любой программе есть ошибки.
* Закон пропорциональности: Чем более программа необходима, тем больше в ней ошибок.
Следствие: Ошибок не содержит лишь совершенно ненужная программа.
* Фундаментальный закон теории ошибок: На ошибках учатся.
Следствие 1: Программист, написавший программу, становится ученым.
Следствие 2: Чем больше программист делает ошибок, тем быстрее он становится ученым.
Следствие 3: Крупный ученый-программист никогда не пишет правильные программы.
Замечание: На то он и ученый.
* Указание начинающему программисту: Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.
* Закон находимости ошибок: Программист может обнаружить ошибку только в чужой программе.
Следствие: Ошибке не все равно, кто ее обнаружит.
* Совет начинающему программисту: Никогда не исправляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопроводительной документации как особенность программы.

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

* Ошибки могут следовать друг за другом.
* От перестановки двух эквивалентных ошибок результат не меняется (коммутативность эквивалентных ошибок).
* Две последовательные ошибки можно объединить в одну, более сильную.
* Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращатся к ней по мере необходимости из любого места программы.
* Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконечный.
* Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).
* Ошибки допускают многократное вложение друг в друга. Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
* Свойство четности ошибок: Если написанная программа сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задание.
Формулировка вышеприведенного свойства, предназначенная для политиков: Ошибка, повторенная дважы, перестает быть ошибкой.

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

* Во время исполнения ошибки имеют наивысший приоритет. Прервать исполнение ошибки может только другая, более активная ошибка.
* Запросы операционной системы к ошибкам ошибками могут игнорироваться.
* Запросы ошибок к операционной системе игнорироваться не могут.
* При работе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.
* На ЭВМ с параллельной архитектурой может выполнятся несколько ошибок одновременно.

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

* Системные программы облегчают процесс написания прикладных программ и их ошибок.
* Определение: Тестирование - это процесс нахожения ошибок в тесте. Хороший тест должен содержать ошибки, компенсирующие их нехватку в тестируемой программе.
* Языковый редактор, призванный уберечь программиста от синтаксических ошибок, позволяет вносить в программу весьма хитроумные ошибки, которые не удаётся обнаружить ни транслятором, ни отладчиком. Обычный текстовый редактор таких возможностей не предоставляет.
* Программа-транслятор, предназначенная для перевода программ с языка высокого уровня на машинный язык, при переводе порождает ошибки. Ошибки, которые содержались в исходном описании, переводятся безошибочно.

Заключительный совет тем, кто до него добрался: До начала работы над проектом следует тщательно продумать все необходимые ошибки и связи между ними. Это значительно упростит работу над ошибками в самом проекте.
Часовой пояс GMT +3, время: 13:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.