Эта страничка предназначена для периодической
публикации не очень серьезных мнений и высказываний, правил
и советов очень серьезных людей по весьма серьезным вопросам.
Содержание (разделы
и основные пункты):
-Законы Мэрфи .>>.
..немного истории
-Искусство проектирования
.>>.
..Законы корректировки
-Наука программирования .>>.
..Теория ошибок
-Законы машинного программирования
.>>.
..Постулаты Трутмена по программированию
..Первая компьютерная аксиома Лео Бейзера
..Руководство по системному программированию Штейнбаха
..Принцип IBM
Продолжение в
следующих выпусках >>
подробнее
Законы
Мэрфи
В 1949 году капитан ВВС США Эдвард А.
Мерфи-младший, инженер-исследователь, разработал устройство,
которое было отправлено на экспериментальное летное тестирование.
Первым результатом был полный крах работы не только нового
устройства, но и всего самолета. Мерфи лично проверил
все данные и оказалось, что техник смотритель подключил
прибор неправильно. В этот момент Мерфи изрек свой первый
закон :"Если существуют два способа сделать что-либо,
причем один из которых ведет к катастрофе, то кто-нибудь
изберет именно этот способ ".
Сослуживцы капитана назвали этот феномен "Законом
Мерфи".На одной из пресс-конференций проводивший
ее полковник ВВС заявил, что все достигнутое по обеспечению
безопасности полетов является результатом преодоления
"Законов Мерфи". Так выражение попало в прессу.
В последующие несколько месяцев этот "закон"
стал широко использоваться в промышленной рекламе и вошел
в жизнь.
В 1977 году в Лос-Анджелесе вышла тоненькая книжка
"Законы Мерфи". Ее автор, писатель Артур Блох,
пародируя с комической серьезностью формулировки технических
и управленческих выражений, придал бродячим остротам
и шуткам литературную законченность, сгруппировав их
в разделы.Вместе с тем, юмор этот подчас звучит грустно.
"Улыбайтесь ... завтра будет хуже" - вот философия
Мерфи. Столь же пессимистично звучат законы термодинамики,
переформулированные в теореме Гинзберга: "Выиграть
нельзя. Остаться при своих - нельзя. Нельзя даже выйти
из игры"... Но автор не теряет надежды, посвящая
книгу тем, кто отважно шествует по жизни в поисках правды,
руководствуясь одним из правил Финэйгла: "Не верьте
в чудеса - опирайтесь на них!". Вышедшая затем
в русском переводе книжка имела шумный успех. Веселые
и меткие афоризмы никого не оставили равнодушными и
пришлись по нраву нашим инженерам и ученым.
Искусство
проектирования
Первый закон корректировки
Информация, ведущая к обязательному изменению проекта,
поступит к автору этого проекта тогда и только тогда,
когда чертежи уже выполнены.
Следствие
В простых случаях, когда отчетливо виден один явно правильный
вариант и один явно неправильный вариант, часто разумнее
выбрать неправильный, чтобы быстрее приступить к неизбежным
исправлениям.
Второй закон корректировки
Чем безобиднее на вид изменение, тем большим будет его
влияние в дальнейшем и тем больше чертежей придется
изменять.
Закон прикладной неразберихи
Деталь, которую завод забыл поставить, обеспечивает
75% объема поставок. Разобравшись, вы легко обнаружите,
что завод не только забыл ее поставить, но 50% времени
ее вообще не производил.
Следствия
1. Доставка на грузовике, обычно требующая одного дня,
займет 5 дней, если вы ждете именно этот грузовик.
2. Добавив 2 недели к положенному по графику сроку на
непредвиденные задержки, добавьте еще 2 недели на непредвиденность
самих непредвиденных задержек.
Теорема Вышковского
Независимо от единиц измерения, используемых поставщиком
или покупателем, производитель будет использовать свои
собственные произвольные единицы измерения, переводимые
в единицы поставщика или покупателя с помощью странных
и неестественных коэффициентов пересчета.
Уравнения Снейфу
1. В задаче из N уравнений всегда будет N+1 неизвестная.
2. Самый необходимый предмет или самая необходимая информация
будут наименее доступны.
3. Как только вы испробуете все возможные способы решения
и не найдете подходящего, тут же найдется решение, простое
и очевидное для всех других людей.
Закон Микша
Если у веревки есть один конец, значит, у нее должен
быть и другой.
Наука
программирования
Теория ошибок
Ошибки так же неисчерпаемы,
как и атом.
Аксиома
В любой программе есть ошибки.
Закон пропорциональности
Чем более программа необходима, тем больше в ней ошибок.
Следствие
Ошибок не содержит лишь совершенно ненужная программа.
Фундаментальный закон теории ошибок
На ошибках учатся.
Следствие 1
программист, написавший программу, становится ученым.
Следствие 2
Чем больше программист делает ошибок, тем быстрее он
становится ученым.
Следствие 3
крупный ученый-пpогpаммист никогда не пишет правильные
программы.
Замечание
На то он и ученый.
Указание начинающему программисту
Если вы с первого раза сумели написать программу,
в которой транслятор не обнаружил ни одной ошибки,
сообщите об этом системному программисту.
Он исправит ошибки в трансляторе.
Закон поиска ошибок
программист может найти ошибку только в чужой программе.
Следствие
Ошибке не все равно, кто ее обнаружит.
Совет начинающему программисту
Никогда не исправляйте найденные ошибки, ибо это повлечет
за собой
появление неизвестного числа ненайденных.
Лучше опишите их в сопроводительной документации как особенность
программы.
Определение
Будем называть языком ошибок правила, в обход которых
пишутся
программы.
Язык ошибок
Ошибки могут следовать друг за другом.
От перестановки двух эквивалентных ошибок результат
не меняется (коммутативность эквивалентных ошибок).
Две последовательные ошибки можно объединить в одну,
более сильную.
Одинаковые ошибки необязательно делать каждый раз,
достаточно сделать одну, а затем обращаться к ней по мере
необходимости из любого места программы.
Ошибки могут образовывать циклы. Наиболее устойчивый
из них - бесконечный.
Ошибки могут вызывать друг друга и сами себя (рекурсивность
ошибок).
Ошибки допускают многократное вложение друг в друга.
Две одинаковые вложенные ошибки называются четной ошибкой
и
ошибкой не являются.
Свойство четности ошибок
Если написанная программа сработала правильно, то это
значит, что во время ее работы выполнялось четное число
ошибок
или программист не понял задание.
Тоже с точки зрения политика
Ошибка, повторенная дважды, перестает быть ошибкой.
Следствие
Если ты совершил дважды одну и ту же ошибку,
лучше переквалифицируйся в политики.
Взаимодействие ошибок с ОС
Во время исполнения ошибки имеют наивысший приоритет.
прервать исполнение ошибки может только другая, более
активная
ошибка.
запросы операционной системы к ошибкам ошибками могут
игнорироваться.
запросы ошибок к операционной системе игнорироваться не
могут.
при работе с файлами ошибки могут пользоваться файловой
системой базовой ОС и ее ошибками.
На ЭВМ с параллельной архитектурой может выполняться
несколько ошибок одновременно.
Системные программы
Системные программы облегчают процесс написания прикладных
программ и их ошибок.
Определение. Тестирование - это процесс нахождения
ошибок
в тесте.
Хороший тест должен содержать ошибки, компенсирующие их
нехватку в тестируемой программе.
Языковой редактор, призванный уберечь программиста от
синтаксических ошибок, позволяет вносить в программу весьма
хитроумные ошибки, которые не удается обнаружить ни транслятором,
ни отладчиком. Обычный текстовый редактор таких возможностей
не предоставляет.
Программа-транслятор, предназначенная для перевода программ
с языка высокого уровня на машинный язык, при переводе
порождает
ошибки. Ошибки, которые содержались в исходном описании,
переводятся
безошибочно.
Законы
машинного программирования
1. Любая действующая программа устарела.
2. Любая программа обходится дороже и требует больших
затрат
времени, чем предполагалось.
3. Если программа полностью отлажена, ее нужно скорректировать.
4. Любая программа стремится занять всю доступную память.
5. Ценность программы прямо пропорциональна весу ее листинга.
6. Сложность программы растет до тех пор, пока не превысит
способности программиста.
Постулаты Трутмена по программированию
1. Самая грубая ошибка будет выявлена, лишь когда программа
пробудет в производстве, по крайней мере полгода.
2. Контрольные перфокарты, которые решительно не могут
стоять
в неправильном порядке, будут перепутаны.
3. Если назначается специальный человек для контроля за
чистотой
исходной информации, то найдется изобретательный идиот,
который придумает способ, чтобы неправильная информация
прошла
через этот контроль.
Законы ненадежности Джилба
1. Компьютеры ненадежны, но люди еще ненадежнее.
2. Любая система, зависящая от человеческой надежности,
ненадежна.
3. Число ошибок, которые нельзя обнаружить, бесконечно
- в
противовес числу ошибок, которые можно обнаружить: оно
конечно
по определению.
4. В поиски повышения надежности будут вкладываться средства
до тех пор, пока они не превысят величину убытков от неизбежных
ошибок или пока кто-нибудь не потребует, чтобы была
сделана хоть какая-то полезная работа.
Закон Брука
Увеличение числа участников при подготовке опаздывающей
программы только замедляет процесс.
Законы мира ЭВМ по Голубу
1. Неточно спланированная программа требует в три раза
больше времени,
чем предполагалось; тщательно спланированная - только
в два раза.
2. Работающая над программой группа питает отвращение
к еженедельной
отчетности о достигнутых результатах, поскольку
она слишком явно свидетельствует об отсутствии таковых.
Принцип Шоу
Создайте систему, которой сможет воспользоваться даже
дурак,
и только дурак захочет ею пользоваться.
Третий закон Грида
Машинная программа выполняет то, что вы ей приказали делать,
а не то, что бы вы хотели, чтобы она делала.
Первая компьютерная аксиома Лео Бейзера
Закладывая что-то в ЭВМ, помните, куда вы это положили.
Руководство по системному программированию Штейнбаха
Никогда не выявляйте в программе ошибки, если не знаете,
что
с ними дальше делать.
Искусство обращения с машинами
Принцип ИБМ
Машина должна работать, человек - думать.
Дополнительные замечания:
Ошибка? Это не ошибка, это системная функция!
Компьютер "делает из всех нас дураков".
Если отладка - процесс удаления ошибок, то программирование
должно быть процессом их внесения. -- Э.Дейкстра
Вы уже дошли до состояния, когда у вас нет времени, чтобы
разрешить те проблемы, которые отнимают у вас все время
? --
Марк Дэвисон
Заключительный совет тем, кто до
него добрался
До начала работы над проектом следует тщательно продумать
все необходимые ошибки и связи между ними.
Это значительно упростит работу над ошибками в самом проекте.
В следующих
выпусках:
-Искусство научных исследований
..Закон научных исследований Мэрфи
-Умение вести научные исследования
..Первый закон работы в лаборатории
..Краткий определитель современных наук
..Пятый закон ненадежности
-Искусство быть экспертом
..Первое правило истории
..Бритва Хеллона
-Систематика
..Обобщенный принцип неопределенности
..Основные постулаты развитой теории систем
-Мэрфология
..Закон Мэрфи
..Комментарий Каллагена к закону Мэрфи
..Законы Чизхолма
..Законы Финэйгла
..Закон термодинамики Мэрфи
..Закон избирательного тяготения
-Развитая Мэрфология
..Расширенный закон Мэpфи
..Следствие Фарнсдика из 5го следствия
..Расширение закона Мэрфи, сделанное Гаттузо
..Закон неразумного сохранения грязи
..Закон поиска
..Закон отсутствия обратного действия
..Спасительная благодать Мэрфи
-Ситуативная Мэрфология
..Закон восстановления, предложенный Дрейзеном
..Принцип очереди
..Закон письма
..Правила рисования Вуда
-Иерархология и наука заседать
..Постулат Паркинсона
..Постулат Харриссона
..Теорема о подборе кадров Лофтуса
..Первое правило неполноценности начальства
-Умение работать и конторская мэрфология
..Шесть законов конторской Мэрфологии
..Теория выборочного контроля
-Экономэрфология и искусство управлять
делами государства
..Колбасный принцип
..Первые два политические принципы Тодда
..Уотергейтский принцип
..Правило искажения фактов
-Медицинская Мэрфология
..Шесть принципов для пациентов
..Законы ухода за больными Телеско
..Правило Бараха: Алкоголик - это тот, кто пьет больше
своего врача.
-Наука продавать и искусство продавать
..Законы покупки одежды Хедли
..Основной принцип сделки Финмэна
..Первый закон потребления Синтето
..Закон "товары-почтой" Савиньяно
-Мэрфология домашнего хозяйства
..Закон кухни О'Рейли
..Семь законов кухонного беспорядка
..Законы кухни Алисы Хэммонд
..Законы поведения потомства, предложенные Уитцлингом.
..Следствие закона Паркинсона для подростков, предложенное
Фиске
..Приложение закона Паркинсона, выведенное Рьяном
-Социомэрфология
..Законы любви, предложенные Артуром
..Правило соседства по комнате
..Наблюдение Рона для подростков
..Первый постулат Пардо (из "Закона Мэрфи I")
-Мета-законы
..Благословение Лео Роджерса на вторую книгу "Закона
Мэрфи"
..Последний закон
Спасибо за внимание.