10 худших ошибок в программировании

Автор:
Dante
Печать
дата:
29 марта 2012 11:07
Просмотров:
5723
Комментариев:
13
10 худших ошибок в программировании


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

Самый первый компьютерный баг в истории был обнаружен в 1945 г., когда инженеры нашли в корпусе компьютера Harvard Mark II мотылька. Этот мотылек закорачивал контакты — и компьютер сбоил. Инженеры сделали запись в журнале событий «Первый случай обнаружения бага» (по-английски «bug» означает «насекомое»). С тех пор компьютерные сбои принято называть багами.

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

1. 28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению к Венере. Из-за поломки антенны корабль потерял связь с земными службами управлениями и перешел на собственную систему пилотирования. Но эта система содержала обидный маленький баг. В результате аппарат полетел совсем не в ту сторону и его пришлось подорвать над Атлантическим океаном. Последующее расследование установило, что в процессе программирования системы навигации была совершена маленькая опечатка — при вводе одной из формул был пропущен один символ.

2. 1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрили баг (отчет в формате PDF) в канадское программное обеспечение, управлявшее газовыми трубопроводами. Советская разведка получила это ПО как объект промышленного шпионажа и внедрила на Транссибирском трубопроводе. Результатом стал самый большой неядерный взрыв в истории человечества.

3. 1985–87 гг. Несколько человек получили смертельную дозу облучения во время сеансов радиационной терапии с медицинским ускорителем Therac-25. Основанная на предыдущей версии ускорителя, «улучшенная» модель Therac-25 могла генерировать два вида излучения: слабое электронное бета-излучение и нормальное рентгеновское излучение. Еще одно «улучшение» состояло в том, что вместо электромеханической защиты пациента в устройстве была реализована программная защита, якобы более надежная. Обе новые функции были некорректно реализованы неопытным программистом, результатом чего стали как минимум пять смертей и огромное количество несмертельных случаев переоблучения.

4. 1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерный червь (так называемый червь Морриса) заразил от 2.000 до 6.000 компьютеров менее чем за сутки, эксплуатируя уязвимость в реализации функции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имела ограничения на максимальную длину.

5. 1988–96 гг. Генератор случайных чисел Kerberos в течение нескольких лет широко использовался в различных системах шифрования. Предполагалось, что программа должна выбирать ключ случайным образом из многих миллиардов чисел, но генератор случайных чисел выбирал из гораздо меньшего набора численностью примерно в миллион. Как результат, в течение восьми лет любой пользователь мог без труда проникнуть в компьютерную систему, которая использовала модуль Kerberos.

6. 15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версии прошивки междугородних коммутаторов привела к тому, что коммутатор перезагружался, если получал специфический сигнал от соседнего коммутатора. Но беда в том, что этот сигнал генерировался в тот момент, когда коммутатор восстанавливал свою работу после сбоя. В один прекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился, он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры не установили на коммутаторы предыдущую версию прошивки.

7. 1993 г. Широко разрекламированный процессор Intel Pentium неправильно производил деление с плавающей запятой, ошибаясь на 0,006%. Хотя эта проблема реально коснулась немногих пользователей, но стала настоящим кошмаром для имиджа Intel. Поначалу фирма согласилась менять процессор только для тех пользователей, которые могли доказать, что им в вычислениях нужна подобная точность, но затем согласилась поменять процессор всем желающим. Этот баг стоил Intel около $475 млн.

8. 1995–96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработке IP-пакетов позволяла порушить практически любую операционную систему, отправив ей через интернет специальный пакет («пинг»).

9.
4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетней работы европейских ученых, гордость стран Евросоюза, взорвалась через 40 секунд после своего первого старта. Только научное оборудование на борту ракеты стоило около $500 млн, не говоря о множестве побочных финансовых последствий. Система автоподрыва ракеты сработала после остановки обоих процессоров в результате цепочки ошибок. Началом этой цепочки послужило переполнение буфера, поскольку система навигации подала недопустимо большое значение параметра горизонтальной скорости. Дело в том, что система управления Ariane 5 переделывалась из Ariane 4, а там такого большого значения не могло быть теоретически. В целях снижения нагрузки на рабочий компьютер инженеры сняли защиту от ошибок переполнения буфера в этом программном модуле, поскольку были уверены, что такого значения горизонтальной скорости не может быть в принципе — и просчитались.

10. Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целая серия инцидентов, вызванная тем, что ПО для планирования радиационной терапии производства американской компании Multidata Systems International неправильно рассчитывало дозы облучения для пациентов. Программа позволяла врачу нарисовать на компьютерном экране расположение защитных металлических щитов, которые защищают тело от радиации. Но программа позволяла манипулировать только четырьмя щитами, тогда как врачи хотели задействовать пять. Они нашли способ «обхитрить» программу, если нарисовать все пять щитов в виде единого блока с дыркой посередине. Единственное, чего они не знали, что программа рассчитывает разные дозы радиации в зависимости от того, как нарисована дырка. Если рисовать ее особым образом, то устройство выдавало двойную дозу радиации. Как минимум восемь человек погибли, а еще 20 получили переоблучение. Врачи, которые должны были вручную перепроверять расчеты программы, были осуждены за убийство.

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

1 не понравился
156 понравился пост
 
Незарегистрированные посетители не могут оценивать посты
 
 
 
 

 
 
 
 

Комментарии

 
 

 
 
 
prizrak02
Дата:
(29 марта 2012 11:19)
#1
Классный, интересный и познавательный пост! Спасибо автору!!!
Томск [ссылка]
21 / 2
 
 
 
 
 
 
indy
Дата:
(29 марта 2012 11:45)
#2
Все эти примеры, а особенно последний, еще раз показывают, что никогда нельзя в полной мере доверять компьютерам. Ведь программы для компьютеров создают люди, а людям свойственно ошибаться.

Факт. Тестировать ПО надо. Тем более тестировать с пристрастием там где от него зависят жизни.
Томск [ссылка]
26 / 2
 
 
 
 
 
 
Alexander333
Дата:
(29 марта 2012 12:24)
#3
2. 1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрили баг (отчет в формате PDF) в канадское программное обеспечение, управлявшее газовыми трубопроводами
Какой нахрен отчет в формате PDF?
Томск [ссылка]
17 / 1
 
 
 
 
 
 
Ник Парабеллум
Дата:
(29 марта 2012 12:48)
#4
забываю ставить ; =(
 
не знаешь что сказать - говори с набитым ртом
Томск [ссылка]
18 / 5
 
 
 
 
 
 
Barret
Дата:
(29 марта 2012 13:07)
#5
А про запуск Р-36 Воевода (Сатана по НАТО) что не написали? Там тоже одна ошибка кода - ракета была выпущена из шахты, а двигатель не запустился. Ракета упала обратно в шахту и взорвалась. Перепутаны были всего нолик с единичкой в коде запуска двигателя.
Томск [ссылка]
7 / 2
 
 
 
 
 
 
Ri-tyan
Дата:
(29 марта 2012 14:13)
#6
в двоичном коде нолик и единичка этот небо и земля. и никаких промежутков.
ужас, конечно, почему-то сразу на ум приходит Скайнет...и становится грустно
 
Тот, кто находит удовольствие в уединении либо дикий зверь, либо Бог. Аристотель
Томская область > Северск [ссылка]
7 / 1
 
 
 
 
 
 
123456789
Дата:
(29 марта 2012 14:27)
#7
Советская разведка получила это ПО как объект промышленного шпионажа и внедрила на Транссибирском трубопроводе.
обьясните мне , а то я не въе6ycь
Значит если государство пи3дит у иностранцев ПО( программное обеспечение), то это Промышленный Шпиёнаж, а если обычные граждане пользуют найденное в сети ( заметьте! не пизженное) , то это пиратство?
Томск [ссылка]
12 / 1
 
 
 
 
 
 
Терминатор
Дата:
(29 марта 2012 15:09)
#8
123456789,
ты мягкое с теплым не путай, когда государство п*здило тогда и гражданам можно было этож при СССР еще было, сейчас вова с димой типа легально все обставляют.

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

Barret,
зная нутро некоторых советских ракет, есть большое сомнение что запуск двигателей там зависел от ноликов и единичек в программе, там автоматика на механике или на элементарных электронных схемах без всяких там программных мудростей.
Томск [ссылка]
7 / 1
 
 
 
 
 
 
ZomBTV
Дата:
(29 марта 2012 17:17)
#9
Многие из Случаев знал
 
Чем тупее система образования, тем умнее правительство в глазах подрастающего поколения.
Приморский край > Спасск-Дальний [ссылка]
0 / 0
 
 
 
 
 
 
Barret
Дата:
(29 марта 2012 17:48)
#10
Цитата: Терминатор
Barret,
зная нутро некоторых советских ракет, есть большое сомнение что запуск двигателей там зависел от ноликов и единичек в программе, там автоматика на механике или на элементарных электронных схемах без всяких там программных мудростей.

Назови ракеты, которые ты знаешь? Ты их с реактивными снарядами не путаешь?
Томск [ссылка]
2 / 1
 
 
 
 
 
 
Хыш_
Дата:
(29 марта 2012 17:55)
#11
такое название...) я сначала подумала, что тут будет что-нибудь из теории, типа "всегда проверяйте на ошибки, идеальной программы не бывает и т.д." А тут забавно-забавно :)
баш:

Препод по информатике в институте рассказывает про свою основную работу (прогает системы управления для авиации).

- Там где я работаю, ошибки неприемлемы. Из-за одной такой ошибки пилоты сильно пересрались.
- ???
- 150-тонный грузовой самолет на полной скорости вместо того, чтобы повернуть на 15 градусов, стал уверенно разворачиваться на 345 - в другую сторону)
 
Мы всех сначала обманем. А потом...
Томск [ссылка]
2 / 0
 
 
 
 
 
 
Xiary
Дата:
(29 марта 2012 19:40)
#12
11. Internet explorer 6
 
"Без страха он бросается в бой, а вот женитьба вызывает в нём леденящий ужас. Не это ли доказательство его истинной мудрости?"©
Томская область > Северск [ссылка]
1 / 0
 
 
 
 
 
 
kdw71
Дата:
(29 марта 2012 20:49)
#13
Спасибо автор.Очень интересно smile
 
Продам Кислородный бизнес.http://www.avito.ru/tomsk/oborudo vanie_d lya_biznesa/biznes_kislorodnyj_bar_15342 8530+79539220500
Томск [ссылка]
0 / 0
 
 
 

 
 
 
 
 
 
 
 

Информация

 
 
 
 
 
 
 
 
 

Оставлять свои CRAZY комментарии могут только зарегистрированные пользователи.
Пожалуйста пройдите простую процедуру регистрации или авторизируйтесь под своим логином. Также вы можете войти на сайт, используя существующий профиль в социальных сетях (Вконтакте, Одноклассники, Facebook, Twitter и другие)

 
 
 
 
 
Наверх