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