Программирование

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

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

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

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

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

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

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

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

2. Жук с сердечной кровью

heartbleed-ошибка
Кредит изображения: OpenClipart-Векторы через Pixabay

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

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

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

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

WoW-Поврежденный-полукровка
Изображение предоставлено WoW Wiki

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 запущена с космическим зондом, предназначенным для исследования Венеры. Однако, после запуска ракета немного отклонилась от предполагаемой траектории полета. Моряк 1 был уничтожен вскоре после взлета.

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

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

6. Сеть AT & T выходит из строя

AT & T-сети вниз
Изображение предоставлено: Unsplash через Pixabay

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

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

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

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

Стартовые mercys-Фо-мертвый
Изображение предоставлено: Vitalworks через Pixabay

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

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

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

8. Заключенный пре-альфа: досрочное освобождение

тюремная случайно-релиз
Кредит изображения: Alexas_Fotos через Pixabay

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

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

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

9. Хартфордский Колизей Фолс

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

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

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

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

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

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

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

Плохо для кода: ошибки в программировании

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

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

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

Изображение предоставлено: nouskrabs и McIek через Shutterstock.com

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика