Компьютеры давно стали частью нашей жизни. Без сложного, напичканного микросхемами оборудования уже не может обойтись ни армия, ни медицина, ни промышленность. Но чем сложнее прибор, тем больше у него шансов сломаться. Статистика показывает, что причиной отказа чаще всего является совсем маленький, до поры до времени незаметный баг.
Боевые кенгуру
Маленькие ошибки в программах принято называть багами (по-английски «bug» означает «насекомое»). Название это появилось 9 сентября 1945 года, когда ученые Гарвардского университета во главе с "бабушкой программирования" Грейс Мюррей Хоппер, обнаружили среди многочисленных реле и контактов гпервого легенадрного компьютера обыкновенного мотылька.
Насекомое закорачивало контакты, и в результате компьютер давал сбои в работе. Инженеры сделали в журнале дежурств соответствующую запись: «Первый случай обнаружения бага», а виновника — мотылька, «подшили к делу» — приклеили скотчем рядом с надписью.
Забавное событие, связанное с багами, произошло в австралийских воздушных войсках. Командование ВВС Австралии велело программистам смоделировать на компьютере поведение кенгуру при появлении в воздухе боевых вертолетов. Для начала, надо сказать, что сейчас в армиях всего мира используются компьютерные игры — имитаторы военной техники для обучения будущих пилотов боевых машин. Главное в таких программах — создание обстановки, максимально приближенной к боевой. Ландшафт, техника, «враги» — все должно быть «как настоящее».
В австралийской армии подобные программы — с солдатами, танками вертолетами и прочим, уже имелись, вот только кенгуру в них не фигурировали. Программисты принялись за дело. Чтобы не выполнять лишнюю работу, они взяли уже готовый программный объект — пехоту, и просто заменили солдат на кенгуру…
Демонстрация проводилась в присутствии высших военных чинов армии США. Все началось прекрасно: вертолеты «взлетели», стада мирно пасущихся кенгуру в ужасе разбежались в разные стороны. Но тут случилось странное: кенгуру, первоначально попрятавшись за холмами, внезапно сгруппировались и предприняли атаку на вертолеты невесть откуда взявшимися зенитно-ракетными комплексами. Они даже успели «сбить» пару боевых машин, пока вконец расстроенные австралийцы не прервали демонстрацию программы. Американцы пребывали в шоке, в конце концов, это же министерство обороны и подобные шутки здесь просто неуместны. А может и в самом деле кенгуру способны воевать?
Все объяснялось маленькой ошибкой программистов. «Поменяв» солдат на кенгуру, они забыли «отобрать» у тех амуницию. В результате кенгуру атаковали…
Загадка Мертвого моря
Гораздо менее безобидно выглядел компьютерный сбой в ВВС Израиля. В компьютеры нескольких истребителей установили новый процессор на автопилот и отправили самолеты в испытательный полет — вдоль границы страны.
Все шло прекрасно, пока летчики не достигли Мертвого моря. Как только под брюхом первого самолета появилась морская гладь, автопилот тут же вышел из строя, и летчики были вынуждены перейти на ручное управление. То же самое произошло и с другими истребителями…
Как только пилоты вернулись на базу, новый процессор тут же отправили на доработку и дополнительные тесты. Все шло прекрасно, автопилот проходил все испытания и безотказно работал до тех пор, пока самолет не приближался к Мертвому морю.
Инженеры долго ломали головы, пока наконец не нашли маленький просчет в программе компьютера. Дело в том, что новый автопилот рассчитывал высоту самолета исходя из нулевой отметки мирового океана. А Мертвое море находится ниже этого уровня. В какой-то момент истребитель, пролетая над морем, опускался до нулевой отметки. Компьютер начинал делить на нуль и благополучно «зависал».
Космические потери
«Космические» проблемы, создаваемые ошибками в программах, появились давным-давно. 28 июля 1962 года американский исследовательский космический аппарат «Маринер I» стартовал по направлению к Венере.
Однако из-за поломки антенны корабль потерял связь с земными службами управления и перешел на собственную систему пилотирования. Но, как выяснилось в последствии, в процессе программирования этой системы была допущена маленькая опечатка — при вводе формул кто-то из инженеров пропустил один символ. В результате аппарат полетел совсем не в ту сторону, и его пришлось подорвать над Атлантическим океаном.
Гораздо более неприятный инцидент произошел 4 июня 1996 года. Новая ракета-носитель «Ариан-5», на разработку которой ушло десять лет научной работы и семь миллиардов долларов, взорвалась через 40 секунд после своего первого старта. Ракету и оборудование стоимостью пятьсот миллионов долларов разнесло на мелкие кусочки. Не будем углубляться в технические подробности, достаточно сказать, что причиной разрушения ракеты стал как человеческий фактор, так и цепочка компьютерных ошибок. Программисты, переделывавшие систему управления «Ариан-5» из предыдущей — «Ариан-4», просто не учли, что новая ракета будет летать быстрее…
Много лет назад из-за маленького дефекта своего изделия серьезно пострадала широко известная компания «Intel». Хотя ее работа и не относилась напрямую к космосу, но финансовые потери были поистине «космическими». Новый процессор, производя деление с плавающей запятой, допускал погрешность всего в 0,006%. Мало кто из покупателей мог доказать, что ему необходима такая точность в вычислениях, но компанию завалили судебными исками. И в результате фирма потеряла на своем изделии ни много, ни мало 475 миллионов долларов.
Смертельные ошибки
Но это самые безобидные следствия компьютерной погрешности. К сожалению, иногда жертвами подобных просчетов становятся люди.
В ноябре 2000 года в Панаме, в Национальном институте рака произошла целая серия пренеприятнейших инцидентов. В этом заведении практиковалось лечение рака с помощью радиационного облучения.
Для расчета дозы облучения использовалась компьютерная программа одной серьезной американской фирмы. Программа позволяла врачу нарисовать на компьютерном экране расположение защитных металлических щитов, которые закрывают тело от радиации, оставляя предназначенный для облучения участок.
Но программа при этом позволяла манипулировать только четырьмя щитами, тогда как врачи хотели задействовать пять. Они нашли способ «обойти» компьютер, то есть нарисовать все пять щитов в виде единого блока с дыркой посередине. Единственное, чего они не знали, что программа рассчитывает разные дозы радиации в зависимости от того, как нарисована дырка. Если рисовать ее особым образом, то устройство выдавало двойную дозу радиации.
В результате такой самодеятельности восемь пациентов погибли, а еще двадцать заболели лучевой болезнью. Врачи-«программисты», которые на самом деле должны были вручную перепроверять все расчеты программы, но не делали этого, были осуждены за убийство.
Бесспорно, что компьютеризация существенно облегчает человечеству жизнь. Но любая «умная» машина может дать сбой, программы для компьютеров пишут люди, а человеку свойственно ошибаться. Чаще всего неполадки в компьютерах не наносят существенного вреда, но описанные случаи показывают, что иногда совсем маленькие ошибки влекут за собой крупные финансовые потери и даже человеческие жертвы. И кто знает, не станет ли в ближайшее время какой-нибудь незаметный баг причиной глобального вооруженного конфликта?
- 7176 просмотров