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