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

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

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

1. Ошибка 2000 года

Ошибка 2000 года, также известная как ошибка 2000 года или ошибка тысячелетия , была проблема кодирования, которая, по прогнозам, вызовет компьютерный пандемониум. В 90-х годах большинство компьютерных программ указывало четырехзначный год в сокращенной версии. Таким образом, 1990 год читается как 90, 1991 год записывается как 91 и т. Д. Сокращая четырехзначный год до двух, кодировщики таким образом экономят ценную память. Но компьютеры не могли распознать 2000 как просто 00. Проблема еще больше усугублялась тем, что 2000 год был високосным. Некоторые программные приложения не учитывали лишний день.

Многие опасались, что проблема 2000 года может обрушить компьютеры и электронику по всему миру. Я помню свой первый DVD-плеер с блестящей наклейкой «Y2K Compliant». В то время как 2000 год прошел довольно спокойно с точки зрения программного обеспечения, обновление компьютеров и приложений во всех отраслях обошлось примерно в 300 миллиардов долларов. Компьютеры не ломались. Жизнь шла своим чередом. Но не обошлось и без кучи денег и работы, которая, согласно отчетам Slate, могла быть пустой тратой.

Почему это одна из худших программных ошибок: Паника 2000 года была чрезвычайно дорого, на сумму 300 миллиардов долларов. Кроме того, ресурсы были перенаправлены на устранение этой потенциальной проблемы.

2. Ошибка Heartbleed

Обнаруженная в библиотеке OpenSSL ошибка Heartbleed Bug представляет собой опасную уязвимость системы безопасности. Протокол безопасности транспортного уровня (TLS) использует криптографическую библиотеку OpenSSL. Из-за широкого использования в TLS Heartbleed быстро распространился. Эта ошибка позволяет практически любому человеку в Интернете читать память на машинах, на которых запущены затронутые итерации OpenSSL. Может быть прочитано до 64 Кбайт системной памяти. Хотя Heartbleed Bug была раскрыта публике в 2014 году, она появилась в 2012 году..

Ошибку вызвала неправильная проверка ввода из-за отсутствия проверки границ в расширении пульса TLS. Так как это была ошибка в расширении Heartbeat, имя Heartbleed появилось. В статье 2014 года в The Register сообщается, что 1,5% самых популярных сайтов с поддержкой TLS остаются уязвимыми для ошибки Heartbleed. Однако реализации TLS, помимо OpenSSL, остались нетронутыми. Таким образом, ошибка Heartbleed не затронула версию TLS для Windows и службы сетевой безопасности Mozilla. Патч в конечном итоге устранил проблему с OpenSSL версии 1.0.1g. Добавив проверки границ для предотвращения переполнения буфера, Heartbleed Bug была успешно исправлена.

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

3. Вирус World of Warcraft воспринимается слишком буквально

World of Warcraft однажды пострадал компьютер вирус другого сорта. В 2005 году цифровая чума проникла на несколько игровых серверов. Тысячи персонажей стали жертвами вируса крови. Разработчик WoW Blizzard представил Хаккара, бога крови. Сильный противник заразил персонажей испорченной кровью. В то время как инфекция крови изначально предназначалась для поражения игроков в непосредственной близости от тела Хаккара, переход от игрока к игроку происходил за пределами игрового мира. Это непреднамеренное средство распространения вируса крови, порожденного игровыми питомцами. Более того, неигровые персонажи (NPC) стали носителями.

Архимонд стал первым зараженным сервером. Персонажи низкого уровня мгновенно умирали. Даже могущественные персонажи длились недолго. Несмотря на то, что из-за сбоя кодирования вирус увековечился через NPC и домашних животных, выпуск вируса за пределами королевства Хаккара не планировался. Хотя тысячи игроков погибли, в World of Warcraft нет постоянной смерти. Blizzard исправила вирус крови с перезапуском сервера. Но не раньше, чем трупы игроков усеяли ландшафт WoW .

Почему это одна из худших ошибок программирования: Итак, World of Warcraft может не представлять проблемы с безопасностью данных или опасный для жизни сценарий – но геймеры серьезно относятся к своим развлечениям. Blizzard часами сбрасывала серверы. Интересно, что поведение игроков в игре имитировало то, что могло бы произойти в реальной эпидемии с безудержной вспышкой, паникой и крахом цивилизации. Не играли в WoW ? Начните с этого полного руководства для новичков.

4. Therac-25

В то время как многие ошибки программирования приводят к уязвимости или гибели игроков в игре, плохой код на самом деле может убить. Катастрофа Therac-25 произошла с аппаратом лучевой терапии Therac-25. Произведенный компанией «Атомная энергия» Канады, Therac-25 вызвал случайную передозировку радиации, убив по меньшей мере шесть пациентов. Исследования показали, что плохое программное обеспечение и недостаточная проработка системы стали причиной передозировки радиации. Во многом это было связано с трудностями при выполнении автоматизированных тестов программного обеспечения.

Передозировка Therac-25 служит напоминанием о необходимости создания кода, который легко протестировать. Машины, убивающие людей, могут звучать как научная фантастика, но инцидент с Therac-25 доказывает обратное. Но на самом деле это было результатом человеческой ошибки при кодировании, которая вызвала эти проблемы. Эксперты, в том числе Нэнси Левесон, обнаружили, что неопытные программисты создают программное обеспечение с ошибками. Более того, только один программист создал программное обеспечение, и оно было основано на коде от Therac-6 и Therac-20.

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

5. Полет древнего мореплавателя 1

НАСА использует довольно много технологий. В его New Horizons Probe используется процессор PlayStation. Вице-президент по архитектуре и разработке решений NVIDIA Марк Гамильтон регулярно ведет блог об использовании НАСА оборудования NVIDIA. Ракета Mariner 1 запущена с космическим зондом, который должен исследовать Венеру. Однако после запуска ракета немного отклонилась от предполагаемой траектории полета. Mariner 1 был уничтожен вскоре после взлета.

Небольшая ошибка программиста вызвала ошибку Mariner 1. Хотя отчеты различаются, знаки указывают на отсутствие дефиса. Согласно архивным документам НАСА, «Совет по рассмотрению полетов Mariner 1 Post установил, что пропуск дефиса в кодированных компьютерных инструкциях в программе редактирования данных позволяет передавать неверные сигналы наведения на космический корабль». Известный писатель Артур Кларк ( 2001: Космическая одиссея ) назвал катастрофу с «Маринером-1» «самым дорогим дефисом в истории».

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

6. Сеть AT&T падает

Теперь вы меня слышите? Нет. 15 января 1990 года более 50 процентов сети AT&T вышли из строя.. За девять часов без ответа осталось 75 миллионов звонков. Хотя в первоначальных отчетах обвиняли хакеров, на самом деле виноват был гораздо хуже: стандартное обновление программного обеспечения. Помните об этом в следующий раз, когда будете жаловаться на обновления Windows 10. Ошибка в одной строке кода вызвала отключение сети AT&T на несколько часов. Сам переключатель сбрасывается, но ошибка означала, что второй переключатель отправил другое сообщение. По сути, начался эффект домино, когда сеть продолжала повторять свою ошибку. В конце концов AT&T разработала решение, уменьшив нагрузку на сеть. Затем переключатели сбрасываются сами.

Несмотря на тяжелые испытания, одно-единственное утверждение нанесло вред сети. Программа была написана на C. Оператор break внутри предложения if оставался вложенным в предложение switch. Большой сбой в работе AT&T в 1990 году кажется простой проблемой. Множество пропущенных звонков или, как это было бы сегодня, куча пропущенных текстов, уведомлений в Instagram, Twitter и Snapchat. Однако отсутствие связи имело огромные денежные последствия. Такие компании, как American Airlines, понесли финансовые убытки. American Airlines получила на две трети меньше звонков из-за отключения. Отключение в 1990 году остается прекрасным примером того, почему тестирование важно. Кроме того, отключение AT&T служит напоминанием о неразрывной связи между технологиями и экономикой.

Почему это одна из худших программных ошибок: Сеть AT&T не только рухнула, но и несколько часов, которые она оставалась неработающей, привели к финансовому кризису.

7. День живых мертвецов: Госпиталь милосердия Святой Марии

В 2003 году программный сбой “убил” 8 500 человек. Медицинский центр «Милосердие Святой Марии» в Гранд-Рапидсе, штат Мичиган, ошибочно сообщил, что многие пациенты умерли из-за сбоя в их программной системе управления пациентами. Эта катастрофа из-за плохого кода довольно безобидна по сравнению с гибелью Therac-25, поскольку на самом деле никто не погиб. Тем не менее, чтение о собственной кончине сбивает с толку, особенно когда вы живы и здоровы.

Ложные сообщения о смерти не ограничивались пациентами. Эта корреспонденция отправлялась в страховые компании и службы социального обеспечения. Поскольку службы социального обеспечения и страховые компании гарантируют, что пациенты имеют право на участие в программе Medicare, это представляло серьезную проблему. Сотрудники компании St. Mary’s Mercy сообщили об ошибке пациентам, государственным учреждениям и страховым компаниям. В конечном итоге ошибка программирования не привлекла особого внимания. Неясно, исправлялась ли ошибка кодирования. Однако дальнейших ложных сообщений о смерти не поступало. Госпиталь Святой Марии Милосердия просто переключился на программное обеспечение для управления пациентами.

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

8. Prisoner Pre-Alpha: Early Release

В период с 2003 по 2005 год в Мичигане произошел сбой обработки данных. В это время компьютер Программный недостаток привел к досрочному освобождению 23 заключенных из-за ужесточения приговоров для заключенных штата Мичиган. Счастливчикам сократили сроки заключения с 39 до 161 дня. Хотя любое случайное прекращение тюремного заключения проблематично, к счастью, это были мелкие правонарушения, такие как обвинения в наркотиках и хищении.

Программное обеспечение часто направлено на автоматизацию процессов. Теоретически, если сократить объем ручного труда, наша жизнь станет проще. Однако этот случай с заключенными Мичигана, получившими досрочное освобождение из тюрьмы, еще раз доказывает ценность тестирования программного обеспечения. Незначительная ошибка программирования имеет серьезные последствия, особенно в этом примере. Только представьте, если бы освобожденные заключенные баловались более серьезными преступлениями.

Почему это одна из худших программных ошибок: Этот инцидент мог быть намного хуже, но досрочное освобождение заключенных пугает.

9. Hartford Coliseum Falls

Хотя обрушение Хартфорд Колизей в 1978 году стоило заявленных убытков в 90 миллионов долларов, все могло быть значительно хуже. Хартфорд Колизей рухнул через несколько часов после того, как фанаты покинули зал. Его крыша со стальными решетками не выдерживала веса мокрого снега. Здание рухнуло из-за простой ошибки программирования. Кодировщик программного обеспечения САПР, использованного для проектирования Hartford Coliseum, не смог учесть несколько переменных. Вместо этого программист предположил, что стальные опоры крыши столкнутся только с чистым сжатием.

Инженеры сталкиваются с множеством проблем. Использование программного обеспечения должно облегчить их работу. Однако отсутствие учета нескольких переменных приводит к огромным проблемам. Хотя вы можете просто исправить ошибку в Minecraft , программное обеспечение САПР напрямую влияет на структуры реального мира.

Почему это одна из худших ошибок программирования: Ну, по крайней мере, никто умер. Но экономический ущерб, связанный с убытком в 90 миллионов долларов, огромен.

10. У меня 99 проблем, и Pentium – один

Обычно процессоры Intel имеют лучшую производительность, чем их аналоги от AMD. Однако AMD предлагает отличное соотношение цены и производительности. Но в 1994 году микропроцессоры Intel Pentium столкнулись с серьезной проблемой.. Процессоры 486DX и Pentium имели модуль с плавающей запятой (FPU). Этот FPU был математическим сопроцессором. Процессоры Intel предыдущего поколения обрабатывали математику с целыми числами. Благодаря встроенному FPU этот чип Pentium следующего поколения обещал значительно более быстрые численные вычисления.

Pentium FPU использовал алгоритм STR по основанию 4. Неправильно введенная информация повлекла за собой несколько некорректные вычисления. Но даже незначительное отклонение может означать серьезные проблемы, как это продемонстрировано в случае обрушения Хартфорда или Therac-25. Около пяти записей из тысячи были пропущены, что лишило Pentium возможности деления длинных чисел. Intel официально заявила, что ошибка сценария вызвала проблемы с поисковой записью. В любом случае математика Pentium связана с плохим кодом.

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

Плохо для кода: случаются ошибки программирования

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

Примеров ошибок программирования предостаточно. Некоторые из них довольно безобидны, например, ошибка World of Warcraft . Другие приводят к смерти либо реальной (Therac-25), либо воображаемой (Св. Марии). Не позволяйте этим известным примерам удерживать вас от программирования. Ознакомьтесь с этим руководством по выбору правильного языка веб-программирования.

Какие исторические примеры плохого кода вы помните? Оставьте комментарий ниже со своими выборами программных ошибок!

Изображение предоставлено: Ноускрабс и МакИк через Shutterstock.com

.

Оцените статью
futurei.ru
Добавить комментарий