Законы Мерфи для программистов - Тёмная сторона реальности 


Главная Статьи Бред Мёрфология Творчество Картинки и фото Об авторах 


Законы Мерфи для программистов


    Закон относительности для программистов

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

    Закон о компьютерной технологии

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

    Второй закон Вайнберга

    Если бы строители строили дома так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию.

    Закон Хагана

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

    Принцип модернизированной версии программы

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

    Следствие

    Старую версию не удастся инсталлировать повторно.

    Теория Томпсона о стабильном состоянии

    Стабильное состояние дисков - это их стопроцентное заполнение.

    Закон Пикеринга о потере данных

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

    Закон вируса

    Самый гадкий вирус будет сидеть как раз в том единственном файле, который вы не просканировали на наличие вирусов.

    Закон Кромера

    Цифровое считывание показаний позволяет получать ошибочную информацию с более высокой точностью, чем это было возможно ранее.

    Законы информации по Финэйглу

    1. Информация, которой вы располагаете, совсем не та, которую вы хотите иметь.
    2. Информация, которую вы хотите иметь, совсем не та, в которой вы нуждаетесь.
    3. Информация, в которой вы нуждаетесь, совсем не та, которую вы в состоянии получить.
    4. Информация, которую вы в состоянии получить, стоит гораздо больше того, что вы готовы заплатить.

    Успокоительное средство Брэдли

    Если компьютеры станут слишком мощными, мы сможем организовать из них комиссию, а это сразу резко снизит их возможности.

    Законы Лукаса

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

    Закон Мазура

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

    Закон Мура (упрощенный).

    Спустя каждые восемнадцать месяцев мощность компьютеров удваивается, а их цены становятся наполовину меньше.

    Постулат Перлиса

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

    Постулат Перкинса

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

    Дилемма программиста

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

    Восьмой закон программирования

    Легче изменить спецификацию, чтобы она соответствовала программе, нежели наоборот.

    Принципы построения операционых систем

    1. Компьютеры - это сточный колодец интеллекта.
    2. Нет такого уровня гениальности, которому нельзя найти соответствие в структурном устройстве операционной системы.

    Следствие компании "Microsoft"

    Требуются сотни гениев, чтобы сделать простую вещь сложной.

    Закон Флона

    Не существует такого языка программирования на котором было бы хоть чуть-чуть труднее писать плохие программы.

    Законы компьтерного программирования

     1. Любая рабочая программа уже устарела.
     2. Любая программа стоит дороже и составляется дольше, чем могла бы.
     3. Если программа представляет практическую ценность, в нее приходится вносить изменения.
     4. Если программа бесполезна, ее нужно записать.
     5. Любая программа растет до тех пор, пока не заполнит всю доступную память.
     6. Ценность программы пропорциональна количеству выдаваемых ей данных.
     7. Сложность программы возрастает до тех пор, пока не превысит способностей программиста, который должен с ней работать.

    Постулаты программирования Туатмена

     1. Если пробная система работает безупречно, не будут функционировать все последующие.
     2. Самая опасная ошибка обнаруживается тогда, когда программа функционирует уже полгода.
     3. Карточки в картотеке отдела кадров, которые невозможно перепутать, оказываются перепутанными.
     4. Взаимозаменяемые пленки не являются таковыми.
     5. Если на компьютере стоит защита от записи нежелательных данных, найдется изобретательный идиот, который изыщет способ обойти ее и ввести свои данные.

    Закон Бука

    Новое программное обеспечение плюс работник равно устаревшему программному обеспечению.

    Компьтерные законы по Голубу

     1. Нечеткая формулировка целей проекта используется для того, чтобы избежать неприятных минут при определении предполагаемых затрат на осуществление этих целей.
     2. Реализация плохо спланированного проекта занимает в три раза больше времени, чем могла бы; тщательно спланированного проекта - в два раза.
     3. Усилия, направленные на корректировку курса разработки проекта, растут в геометрической прогрессий.
     4. Группы по реализации того или иного проекта очень не любят сдавать еженедельные рапорты о своих успехах, потому что это ярко демонстрирует отсутствие успехов.

    Закон кибернетической этмологии

    В программе всегда найдется еще один "жучок" (от англ. "bug", здесь: ошибка в программе).

    Принцип Шоу

    Если вы разработали систему, понятную даже дураку, то только дурак и будет ею пользоваться.

    Принцип IBM

    Машина должна работать, а человек - думать.

    Замечание Э. Дейкстра

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

    Закон Грида

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

    Компьютерная аксиома Лео Бейзера

    Закладывая что-то в ЭВМ, помните, куда вы это положили.

    Руководство по системному программированию Штейнбаха

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

    Дополнение Марка Дэвисона

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

    Закон ненадежности

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

    Законы надежности Джилба

    1. Компьютеры ненадежны, но люди еще ненадежнее.
    2. Любая система, зависящая от человеческой надежности, ненадежна.
    3. Число ошибок, которые нельзя обнаружить, бесконечно, в противовес числу ошибок, которые можно обнаружить - оно конечно по определению.
    4. В поиски повышения надежности будут вкладываться средства до тех пор, пока они не превысят величину убытков от неизбежных ошибок или пока кто-нибудь не потребует, чтобы была сделана хоть какая-то полезная работа.

    Закон компьютера применительно к Алу

    Машина считает, человек принимает (решения).

    Закон Чарльза Портмана (ICL).

    Когда кажется, что все уже работает, все объединено в систему - вам еще осталось работы на четыре месяца.

    Классика

    Правила Фредерика Брукса-младшего

    1.Требовать и эффективности, и гибкости от одной и той же программы - все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
    2.Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
    3.Выдавать глобальные идеи - это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
    4.Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.
    5.Настойчивость руководителя может определить график выполнения задания, но не в состоянии определить срок его действительного завершения.
    6.Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
    7.Если за две минуты омлет еще не готов, у заказчика два выбора - подождать или съесть его сырым.

    Правило Чарльза Портмана, ICL
    Когда кажется, что все уже работает, все объединено в систему - вам еще осталось работы на четыре месяца.

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

    Высказывание Марка Дэвисона
    Я не знаю причины, по которой нам не следует этого делать, но, возможно, позже мы придумаем какую-нибудь.

    Закон Э. Йодана
    Пользователь не знает, чего он хочет, пока не увидит то, что он получил.

    Закон Э.Дейкстра
    На пустом диске можно искать вечно.

    Высказывание Т. Джон Уэнделла
    Ошибка? Это не ошибка, это системная функция.

    Закон М. Мичэма
    Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.

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

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

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

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

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

    Фундаментальный закон теории ошибок. На ошибках учатся.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Профессиональный программистский фольклор

    Пространство - иллюзия, дисковое пространство – тем более.

    Компьютер - устройство разработанное для ускорения и автоматизации человеческих ошибок.

    Введите любое 11-значное простое число, чтобы продолжить...

    Reset - не кнопка, а горькая необходимость.

    Любая программа, которая успешно прошла тестирование, устарела.

    Бывало ли, что Вы переставали думать, а затем забывали перезапуститься?

    Если что-то у Вас получилось кривовато, назовите это бета-версией.

    “Это не - дефект, это скрытая и редко используемая характеристика”.

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

    Природа ненавидит уравнения с дифференциалами второго порядка.

    Не позволяйте компьютеру догадаться, что вы спешите.

    Нажмите все клавиши, чтобы продолжить...

    Нажмите любую клавишу, чтобы продолжить или любую другую, чтобы выйти.

    “Стать программистом и никогда не увидеть мир”.

    Независимое программное обеспечение не будет работать с ЛЮБЫМ программным обеспечением.

    Дефектная программа является абстрактным теоретическим понятием.

    Дефекты - дети глюков!

    Слон – это Мышь, сделанная по государственному заказу.

    43-й Закон компьютерной обработки: Все что может испортиться, испор….

    Закон экстенсивного программирования Джейми Завинского: Каждая программа расширяется, пока она не сможет читать почту. Программы, которые не могут читать почту, заменяются теми, которые могут.



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