Почему мы называем программный сбой «ошибкой»?

«Это не ошибка, это особенность». В тот или иной момент мы все слышали, как кто-то использовал эту фразу или ее вариацию, чтобы саркастически описать какое-то неисправное оборудование или программное обеспечение. Действительно, слово «ошибка» уже давно повсеместно распространено в мире инженерии и информатики, а «отладка» — процесс поиска и исправления ошибок — является общепринятым художественным термином. Но почему это? Как неформальное слово, обозначающее насекомое, стало синонимом компьютерной ошибки или сбоя?

Согласно наиболее часто повторяемой истории происхождения, в 1947 году технические специалисты, работавшие над релейным калькулятором Harvard Mk II или Aiken — первым компьютером, построенным ВМС США, — столкнулись с электрической неисправностью и, открыв механизм, обнаружили, что прилетела моль. в компьютер и закоротило одно из его электрических реле. Таким образом, первая компьютерная ошибка была буквально ошибкой, и название прижилось.

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

Первое зарегистрированное использование слова «жук» в этом контексте принадлежит американскому изобретателю Томасу Эдисону, который в письме от 3 марта 1878 года президенту Western Union Уильяму Ортону написал: «Вы были отчасти правы. Я нашел «баг» в своем аппарате, но не в самом телефоне. Это был род «callbellum». Насекомое, по-видимому, находит условия для своего существования во всех переговорных аппаратах телефонов».

 «callbellum», о котором говорит Эдисон в письме, — это не настоящий род насекомых, а скорее неясная латинская шутка, где «call» относится к телефонному звонку, а bellum — латинское слово, означающее «война» или «битва», подразумевая, что Эдисон занимается борьбой именно с этим аппаратным глюком. В письме Теодору Пушкашу, написанном позже в том же году, Эдисон более четко определяет использование этого слова: «Именно так было во всех моих изобретениях. Первый шаг — это интуиция, и он приходит со взрывом, затем возникают трудности — эта штука выдает и [именно] тогда «Ошибки» — как называются такие маленькие ошибки и трудности — проявляют себя и месяцы напряженного наблюдения, изучения и труд необходим для того, чтобы коммерческий успех или неудача наверняка были достигнуты».

Откуда сам Эдисон взял этот термин, неизвестно, хотя одна теория утверждает, что он возник из-за общей проблемы, от которой страдают телеграфные системы. В течение почти 40 лет с момента своего появления электрические телеграфы были ограничены отправкой одного сообщения за раз по одному проводу. По мере роста популярности телеграфии в середине 19-го века это ограничение стало серьезной проблемой, поскольку единственным способом разрешить отправку большего количества сообщений была прокладка большего количества телеграфных проводов – решение, которое становилось все более неэлегантным и дорогим. Это побудило изобретателей по всему миру искать методы передачи нескольких сигналов по одному проводу – практика, теперь известная как мультиплексирование. К 1870-м годам нескольким изобретателям удалось усовершенствовать работающие мультиплексные или «акустические» телеграфы, которые обычно работали путем кодирования каждого отдельного сигнала на определенной акустической частоте. Это позволяло отправлять несколько сигналов по одному телеграфному проводу, при этом только приемник, настроенный на частоту отправки определенного сигнала, мог выделить этот сигнал среди других. Среди многих изобретателей, разработавших мультиплексный телеграф, были Александр Грэм Белл и Элиша Грей, чья работа по передаче акустических частот по телеграфным проводам в конечном итоге привела их к открытию принципов, которые будут использоваться в телефоне.

Читайте также:   Действительно ли слепые люди «слышат» лучше зрячих или это всего лишь голливудский миф?

В любом случае, хотя эти первые мультиплексные телеграфы работали достаточно хорошо, они имели тенденцию генерировать фантомные сигналы в виде громких «щелчков», которые напоминали многим телеграфистам звук насекомого. Сам Томас Эдисон в 1873 году запатентовал электронный способ решения этой проблемы, который он назвал «ловушкой ошибок» или «ловушкой ошибок», предполагая, что это явление является вероятным источником этого термина.

Другая гипотеза указывает на то, что слово «жук» происходит от среднеанглийского bugge, что означает «пугающая вещь» или «монстр». Этот корень также является источником английских слов bogeyman , bugaboo и bugbear – последнее первоначально относилось к злобному духу или хобгоблину, но сегодня используется для обозначения незначительного раздражения или раздражения. Сторонники этой гипотезы поэтому утверждают, что слово «жук» в этом контексте использовалось почти так же, как и «гремлины», мифические гоблины, которых летные экипажи Второй мировой войны обвиняли в неисправностях на борту своих самолетов.

Как бы то ни было, частое использование Эдисоном этого термина в своих письмах и записных книжках привело к тому, что он широко повторялся в прессе, а статья в Pall Mall Gazette от 11 марта 1889 года сообщала: «Мистер. Эдисон… две предыдущие ночи не спал, работая над исправлением «ошибки» в своем граммофоне — выражение, обозначающее решение проблемы и подразумевающее, что какое-то воображаемое насекомое спряталось внутри и является причиной всех неприятностей».

Привычка Эдисона и его так называемой «команды по борьбе с бессонницей» не спать всю ночь, чтобы решить особенно сложные технические проблемы, вызывала особое восхищение у прессы: в 1916 году журнал Munsey’s Magazine сообщил: «Они работали как злодеи, когда [были]» ловлю жука. Это означает, что они ищут какое-то недостающее качество, количество или комбинацию, которые добавят что-то к идеальному целому».

Этот термин был впервые официально стандартизирован инженером Томасом Слоаном в его «Стандартном электрическом словаре» 1892 года, который определял «ошибку» как «любую неисправность или неполадку в соединениях или работе электрического оборудования».

Три года спустя «Стандартный словарь английского языка» Фанка и Марча определил этот термин для широкой публики как «неисправность в работе квадруплексной системы или любого электрического устройства».

Таким образом, к началу 20 века этот термин прочно утвердился в инженерных кругах и вскоре начал проникать в повседневное употребление. Одним из примечательных ранних упоминаний было рекламное объявление Baffle Ball в 1931 году — первого в мире коммерчески успешного автомата для игры в пинбол, — в котором с гордостью гласило: «В этой игре нет ошибок». Писатель-фантаст Айзек Азимов еще больше популяризировал этот термин в своем рассказе 1944 года «Поймай кролика», написав: «US Robots пришлось устранять ошибки из множества роботов, а ошибок было много, и их всегда было по крайней мере полдюжины». ошибки оставлены для полевых испытаний».

Несмотря на то, что термин «ошибка» используется уже более 70 лет, только после вышеупомянутого инцидента с молью в 1947 году термин «ошибка» стал неразрывно связан с областью информатики. Насекомое, о котором идет речь, было обнаружено в реле № 7 Гарвардского корабля Mark II ранним утром 9 сентября. Позже в тот же день ночная смена сообщила об инциденте лейтенанту ВМФ Грейс Хоппер, пионеру вычислительной техники, которая позже продолжила разработку FLOW-MATIC — прямой предок COBOL и один из самых первых языков программирования высокого уровня.

Читайте также:   10 книг, которые были запрещены без уважительной причины

В любом случае, в 15:45 Хоппер заклеил слегка хрустящую мотылька скотчем в бортовой журнал компьютера, радостно отметив рядом с ним: «Первый реальный случай обнаружения ошибки».

Как отмечает британский эксперт по кибербезопасности Грэм Клули, причудливая запись в бортовом журнале Грейс Хоппер ясно указывает на то, что термин «ошибка» был хорошо известен в то время, но:

«…хотя несомненно, что операторы Harvard Mark II не придумали термин «ошибка», было высказано предположение, что инцидент способствовал широкому использованию и принятию этого термина в лексиконе компьютерного программного обеспечения».

Страница исторического бортового журнала с сохранившейся молью сохранилась до наших дней в коллекции Смитсоновского музея естественной истории в Вашингтоне, округ Колумбия, хотя в настоящее время она не выставлена на всеобщее обозрение. А в память о печально известном инциденте программисты всего мира отмечают 9 сентября как «День тестировщика», напоминая всем о жизненно важной роли, которую играют те, кто неустанно охотится и уничтожает различные сбои, ошибки, гремлины и призраки в каждом машина.

Бонусный факт

 Хотя мы склонны думать об ошибках в программном обеспечении как о незначительных неприятностях и неудобствах, в худшем случае, в зависимости от того, чем управляет часть программного обеспечения, они могут иметь серьезные последствия в реальной жизни. Одним из наиболее ярких примеров этого является трагический случай с Therac-25, аппаратом для лечения рака с компьютерным управлением, производимым компанией Atomic Energy of Canada Limited начиная с 1982 года. Устройство содержало высокоэнергетический линейный ускоритель электронов, который можно было либо нацелить на непосредственно на пациента или на выдвижную металлическую мишень, генерируя рентгеновский луч, который может достичь опухолей, находящихся глубже внутри тела. Аппарат также мог работать в режиме «полевого освещения», в котором для наведения электронного или рентгеновского луча на пациента использовался обычный световой луч.

В то время как компания AECL добилась отличных показателей безопасности на своих более ранних машинах Therac-6 и Therac-20 благодаря использованию механических блокировок и других функций физической безопасности, Therac-25 полностью отказался от них, а ее конструкторы полагались исключительно на управляющее программное обеспечение машины для обеспечения безопасности. обеспечить безопасность. К сожалению, это программное обеспечение содержало две серьезные программные ошибки, которые вскоре привели к трагедии. Первый из них позволял перевести электронный луч в режим рентгеновского излучения без установки металлической рентгеновской мишени, а второй позволял активировать электронный луч, пока машина находилась в режиме полевого освещения. В обоих случаях это привело к бомбардировке пациентов электронным лучом, в 100 раз более мощным, чем предполагалось. Первоначальным эффектом этого было мощное ощущение удара электрическим током, из-за которого один пациент, Рэй Кокс, прыгнул со стола и убежал из процедурного кабинета. В период с 1985 по 1987 год шесть пациентов в Канаде и США получили массивную передозировку радиации, что привело к тяжелым радиационным ожогам, острому радиационному отравлению и – в случае трех пациентов – к смерти.

Последующее расследование выявило поистине шокирующую степень халатности AECL в разработке Therac-25. Хотя о двух смертельных ошибках было сообщено во время разработки управляющего программного обеспечения, поскольку программное обеспечение было напрямую скопировано с более ранних моделей Therac-6 и Therac-20, а эти машины имели идеальные показатели безопасности, отчет и ошибки в конечном итоге были проигнорированы.

Конечно, более ранние машины полагались на механические блокировки для обеспечения безопасности, и их программное обеспечение было написано с учетом этого, в результате чего программное обеспечение управления Therac-25 практически не имело встроенных средств защиты от сбоев и не имело возможности сообщать оператору о потенциально смертельных ошибках. Еще более тревожно то, что программное обеспечение никогда не было представлено на независимую экспертизу и даже не тестировалось в сочетании с аппаратным обеспечением Therac-25 до тех пор, пока сами машины не были установлены в больницах. Действительно, на протяжении всего цикла разработки Therac-25, похоже, мало уделялось внимания возможности ошибок программного обеспечения, приводящих к опасным сбоям, при этом анализ режимов отказов, проведенный в 1983 году, был сосредоточен почти исключительно на потенциальных сбоях оборудования. Сбой программного обеспечения упоминается в отчете только один раз, при этом вероятность того, что машина выберет неправильную энергию луча, указана как 10 -11 , а вероятность того, что она выберет неправильный режим, как 4 × 10 -9 — без каких-либо обоснований для любого числа. Эта абсолютная уверенность в программном обеспечении в конечном итоге способствовала продлению кризиса. После первых двух случаев передозировки в 1985 году FDA приказало AECL провести расследование и представить решение. Отказываясь верить, что виновато программное обеспечение, AECL пришла к выводу, что проблема связана с микропереключателем, используемым для управления позиционированием проигрывателя машины, и в 1986 году представила это исправление в FDA. Это, конечно, не помогло решить проблему, что привело к еще трем передозировкам, прежде чем истинная причина была наконец выявлена.

Читайте также:   Рейтинг паспортов мира 2023-2024 года

Как только неисправность была обнаружена, FDA объявило Therac-25 «дефектным» и обязало AECL разработать полный набор корректирующих модификаций. Все они были реализованы к лету 1987 года, но как только Therac-25 был возвращен в эксплуатацию, другой пациент в Якиме, штат Вашингтон, получил массивную передозировку и через три месяца умер от радиационного отравления. Этот инцидент был вызван еще одной ошибкой программного обеспечения – переполнением счетчика – из-за которого обновленное программное обеспечение пропустило критический шаг безопасности и убрало рентгеновскую мишень из электронного луча. После шести инцидентов семьи жертв подали на AECL многочисленные иски, все из которых были урегулированы во внесудебном порядке. С тех пор о каких-либо авариях не сообщалось, а оригинальные установки Therac-25 продолжали работать без происшествий в течение почти двух десятилетий.

Дело Therac-25 стало плодотворным примером в области безопасности и системной инженерии, ярко иллюстрирующим опасность слепого доверия уже существующему программному обеспечению и недостаточного тестирования аппаратного и программного обеспечения вместе как целостной системы. Это также служит ярким напоминанием о том, что в нашем современном, гиперсвязанном мире влияние программного обеспечения не ограничивается внутренней частью компьютера; иногда они могут выскользнуть в физический мир – с разрушительными результатами.

Макфадден, Кристофер, Происхождение термина «компьютерная ошибка», «Интересная инженерия», 12 июня 2020 г., https://interestingengineering.com/the-origin-of-the-term-computer-bug

Была ли первая компьютерная ошибка настоящим насекомым? Лексико, https://www.lexico.com/explore/was-the-first-computer-bug-a-real-insect

Уайман, Амелия, Первая в мире компьютерная ошибка, Глобальное тестирование приложений, https://www.globalapptesting.com/blog/the-worlds-first-computer-bug-global-app-testing

Ласкоу, Сара, Томас Эдисон был одним из первых последователей слова «ошибка», Atlas Obscura, 16 марта 2018 г., https://www.atlasobscura.com/articles/who-coined-term-bug-thomas-edison

Магун, Александр и Израиль, Пол, Знаете ли вы? Эдисон придумал термин «ошибка», IEEE Spectrum, 1 августа 2013 г., https://spectrum.ieee.org/the-institute/ieee-history/did-you-know-edison-coined-the-term-bug

Левесон, Нэнси и Тернер, Кларк, Расследование несчастных случаев на Therac-25, IEEE 1993, https://web.archive.org/web/20041128024227/http://www.cs.umd.edu/class/spring2003/ cmsc838p/Разное/therac.pdf

Фабио, Адам, «Убит машиной: Терак-25», Hackaday, 26 октября 2015 г., https://hackaday.com/2015/10/26/killed-by-a-machine-the-therac-25/