Молодой монах принял постриг, и в монастыре ему первым заданием было помогать остальным монахам переписывать от руки церковные уложения, псалмы, законы и т. п. Поработав так с недельку, наш монашек обратил внимание, что все монахи переписывают эти материалы с предыдущей копии, а не с оригинала.
Подивившись этому факту, он выразил свое удивление отцу-настоятелю: "Падре, ведь если кто-то допустил ошибку в первой копии, она же будет повторяться вечно, и ее никак не исправить, ибо не с чем сравнить!". "Хм, сын мой – ответил отец-настоятель, – вообще-то мы так делали столетиями… Но, в принципе, в твоих рассуждениях что-то есть!" – и с этими словами он спустился в подземелья, где в огромных сундуках хранились "первоисточники", столетиями же не открывавшиеся. И пропал.
Когда прошли почти сутки со времени его исчезновения, обеспокоенный монашек спустился в те же подвалы на поиски святого отца. Он нашел его сразу – тот сидел перед громадным раскрытым томом из телячьей кожи, бился головой об острые камни подземелья и что-то нечленораздельно мычал. По покрытому грязью и ссадинами лицу его текла кровь, волосы спутались и взгляд был безумным.
"Что с вами, святой отец? – вскричал потрясенный юноша, – Что случилось?!"
"Celebrate, – простонал отец-настоятель, – слово было:
c-e-l-e-b-r-a-t-e! А не "celibate"!"
(celebrate – празднуй, радуйся; celibate – воздерживайся (сексуальное воздержание – одна из основ католицизма)
17 ноября 2008 в 17:05
#16
ну это смотря как настроить среду разработки =) можно вообще игнорить, можно как ошибку…
17 ноября 2008 в 12:03
На присваивание в if-е компилятор выдает предупреждение.
16 ноября 2008 в 22:02
Да всегда те, кто начинает писать на Си делают ошибку в if-е:
if ( a=b ) {
…
}
И компилятор на присвоение не ругается, и дооолго можно искать эту ошибку)
16 ноября 2008 в 9:00
Во как! Шутки шутками, а от ошибок страдают реальные люди.
+++
Такие ошибки уходят во времена мэйнфреймов, когда память экономили и вместо байта инфу кодировали в биты. Например:
Таблица процедур больному:
А = Перевернуть в кровати
B = Сделать укол
C = Поставить капельницу
D = Проконсультироваться со специалистом
E = Поставить клизму
F = …
и т.д.
Допустим медсестра делает домашний визит больному, а ей система предписывает вместо D сделать E или A ))
Такое к сожалению бывало из-за ошибки в одном символе.
+++
Ладно, продолжаем …
16 ноября 2008 в 2:00
1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерный
червь (так называемый червь Морриса) заразил от 2.000 до 6.000
компьютеров менее чем за сутки, эксплуатируя уязвимость в реализации
функции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имела
ограничения на максимальную длину.
1988–96 гг. Генератор случайных чисел Kerberos в течение нескольких лет
широко использовался в различных системах шифрования. Предполагалось,
что программа должна выбирать ключ случайным образом из многих
миллиардов чисел, но генератор случайных чисел выбирал из гораздо
меньшего набора численностью примерно в миллион. Как результат, в
течение восьми лет любой пользователь мог без труда проникнуть в
компьютерную систему, которая использовала модуль Kerberos.
15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версии
прошивки междугородних коммутаторов привела к тому, что коммутатор
перезагружался, если получал специфический сигнал от соседнего
коммутатора. Но беда в том, что этот сигнал генерировался в тот момент,
когда коммутатор восстанавливал свою работу после сбоя. В один
прекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился,
он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседних
коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс.
человек остались без междугородней связи на 9 часов, пока инженеры не
установили на коммутаторы предыдущую версию прошивки.
1993 г. Широко разрекламированный процессор Intel Pentium неправильно
производил деление с плавающей запятой, ошибаясь на 0,006%. Хотя эта
проблема реально коснулась немногих пользователей, но стала настоящим
кошмаром для имиджа Intel. Поначалу фирма согласилась менять процессор
только для тех пользователей, которые могли доказать, что им в
вычислениях нужна подобная точность, но затем согласилась поменять
процессор всем желающим. Этот баг стоил Intel около $475 млн.
1995–96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработке
IP-пакетов позволяла порушить практически любую операционную систему,
отправив ей через интернет специальный пакет («пинг»).
4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетней
работы европейских ученых, гордость стран Евросоюза, взорваласьчерез 40
секунд после своего первого старта. Только научное оборудование на борту
ракеты стоило около $500 млн, не говоря о множестве побочных финансовых
последствий. Система автоподрыва ракеты сработала после остановки обоих
процессоров в результате цепочки ошибок. Началом этой цепочки послужило
переполнение буфера, поскольку система навигации подала недопустимо
большое значение параметра горизонтальной скорости. Дело в том, что
система управления Ariane 5 переделывалась из Ariane 4, а там такого
большого значения не могло быть теоретически. В целях снижения нагрузки
на рабочий компьютер инженеры сняли защиту от ошибок переполнения буфера
в этом программном модуле, поскольку были уверены, что такого значения
горизонтальной скорости не может быть в принципе — и просчитались.
16 ноября 2008 в 2:00
Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целая
серия инцидентов, вызванная тем, что ПО для планирования радиационной
терапии производства американской компании Multidata Systems
International неправильно рассчитывало дозы облучения для пациентов.
Программа позволяла врачу нарисовать на компьютерном экране расположение
защитных металлических щитов, которые защищают тело от радиации. Но
программа позволяла манипулировать только четырьмя щитами, тогда как
врачи хотели задействовать пять. Они нашли способ «обхитрить» программу,
если нарисовать все пять щитов в виде единого блока с дыркой посередине.
Единственное, чего они не знали, что программа рассчитывает разные дозы
радиации в зависимости от того, как нарисована дырка. Если рисовать ее
особым образом, то устройство выдавало двойную дозу радиации. Как
минимум восемь человек погибли, а еще 20 получили переоблучение. Врачи,
которые должны были вручную перепроверять расчеты программы, были
осуждены за убийство.
Январь 2006 г. В Израиле в результате неисправности в централизованной
системе управления дорожным движением на въездах в Тель-Авив во вторник
образовались многокилометровые автомобильные пробки. Десятки тысяч
автомобилей, не имеющих возможность въехать в город, выстроились на всех
крупных автомагистралях, сообщает израильское агентство "Курсор-Инфо".
Движение автотранспорта в нескольких близлежащих городах оказалось
парализованным. По сообщению представителей тель-авивской городской
администрации, дала сбой компьютерная программа, управляющая
переключением светофоров. Из-за ошибки продолжительность зеленого
сигнала светофора сократилась с 90 секунд до 10-20. Неисправность была
обнаружена около пяти часов утра в автоматической системе одной из двух
компаний-операторов дорожного движения мегаполиса. Руководители компании
сообщили, что сбой произошел при установке нового программного
обеспечения, которое поставила фирма из Нидерландов. Устранением ошибки
занимались ее специалисты, находящиеся в Израиле в настоящее время. К
полудню 10 января специалистам удалось восстановить нормальную работу
системы светофоров.
16 ноября 2008 в 1:05
28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению к
Венере. Из-за поломки антенны корабль потерял связь с земными службами
управления и перешел на собственную систему пилотирования. Но эта
система содержала обидный маленький баг. В результате аппарат полетел
совсем не в ту сторону и его пришлось подорвать над Атлантическим
океаном. Последующее расследование установило, что в процессе
программирования системы навигации была совершена маленькая опечатка —
при вводе одной из формул был пропущен один символ.
1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрили
баг в канадское программное обеспечение,
управлявшее газовыми трубопроводами. Советская разведка получила это ПО
как объект промышленного шпионажа и внедрила на Транссибирском
трубопроводе. Результатом стал самый большой неядерный взрыв в истории
человечества.
1985–87 гг. Несколько человек получили смертельную дозу облучения во
время сеансов радиационной терапии с медицинским ускорителем Therac-25.
Основанная на предыдущей версии ускорителя, «улучшенная» модель
Therac-25 могла генерировать два вида излучения: слабое электронное
бета-излучение и нормальное рентгеновское излучение. Еще одно
«улучшение» состояло в том, что вместо электромеханической защиты
пациента в устройстве была реализована программная защита, якобы более
надежная. Обе новые функции были некорректно реализованы неопытным
программистом, результатом чего стали как минимум пять смертей и
огромное количество несмертельных случаев переоблучения.
ж
15 ноября 2008 в 20:05
Вам-то компилятор хоть подсказывает, а в php напишешь опечатку, и всё выполнится как ни в чем не бывало. С пустой переменной))
15 ноября 2008 в 16:05
Ошибки с символами встречаются при генерации операторов, особенно объемных. Пропустишь где-нить конкатенатор или кавычку и парсишь потом каждую строчку глазками… Очень это скучно и утомительно Такое случалось в PL/SQL – приходилось сначала тестировать сгенеренный текст в sql-браузере и, если есть ошибки, доводить его до рабочего состояния
15 ноября 2008 в 15:03
Очень часто бывают веселые ошибки в символьных идентификаторах БД, где встречается руское 'С' вместо латинского 'C' =)
15 ноября 2008 в 12:02
Однажды ошибся в 1 бите… при генерации открытого ключа… клиент полгода пользовался ограниченной функциональностью, и каково было его удивление когда через пол года открылись новые возможности
15 ноября 2008 в 12:01
А я как-то раз писал какую-то сложную математическую функцию с кучей массивов и циклов, ну и разумеется в одном месте обратился к элементу массива не тем индексом (не той переменной), 2 часа потом отлаживал, почему то ошибка оставалась незамеченной:)
15 ноября 2008 в 10:04
не притча, но забавный случай..
писал как то универскую прогу на паскале, сделал какие то ошибки, в итоге вывелось на экран сначало абракадабра какая то, а в конце всей чуши куча смайликов))
забавно, когда над тобой паскаль смеется)
15 ноября 2008 в 10:03
тут далеко за примерами ходить не надо:
a:array
for a=1 to Length(a) do ….
когда кодишь на разных языках, то бывает забываешь вместо 1 писать 0 и в конце -1 ставить. Но это быстро исправляется.
Во всех остальных случаях кроме бейсика (интерпритаторов в смысле), опечатки компилятор подскажет.
15 ноября 2008 в 8:02
это скучные истории, скорее всего опечатки в кусках кода. Если компилить по частям, а не после того как все закончил, то они скучные:)
А если долаеб экстримал, то ошибки могут быть веселыми. Ну а если человек еще и очень любит инклудить:D
15 ноября 2008 в 7:05
Народ, поделитесь историями, когда из-за одного символа у вас не работали проги или системы, ну в общем в таком духе!