Pull to refresh
281.78
PVS-Studio
Static Code Analysis for C, C++, C# and Java

Баги из СССР

Reading time 4 min
Views 28K
История — это опыт, который позволяет современному поколению не наступить вновь на грабли. Но в программировании, как и в других активно развивающихся областях, такой идеальный сценарий не всегда возможен. Почему? Потому что появляются новые языки программирования, многие процессы становятся сложнее, а машины умнее. В этой статье я приведу две реальные истории. Что их объединяет? Во-первых, время — все они произошли в СССР; во-вторых, люди — каждая история могла пойти по другому сценарию, если бы главные герои не проявили свои лучшие/худшие человеческие качества; в-третьих, конечно же, программирование, иначе статья была бы просто неуместна в нашем блоге.

Picture 6

Как доказать, что ты настоящий программист?


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

Picture 7


Она неоднократно приводилась на разных сайтах, поэтому сделаю лишь краткий пересказ. В 1983 году талантливый математик Мурат Уртембаев попал по распределению на АВТОВАЗ. Молодой человек был преисполнен энтузиазма, но руководство не вдохновилось приходом нового специалиста, поставив его на рядовую должность.

Тогда Уртембаев решил доказать — он отличный программист и достоин уважения (высокой должности, отдыха в санатории, хорошей зарплаты, в конце концов). План Уртембаева был таков: он написал патч к программе-счетчику, отвечающей за ритм циклов подачи узлов на линию конвейера. Патч вызвал бы сбой в автоматике, заданные детали не поступили бы в нужное время, и на производственной линии возник бы хаос. Устранить его вызвался бы сам Мурат, открыв тем самым глаза начальства на особые способности недооцененного сотрудника.

Но что-то пошло не так. Вставить дискету с вирусом не составило труда. Патч должен был сработать в день выхода Уртембаева из отпуска, что отводило от него подозрения. В тоже время, он смог бы провести геройское спасение АВТОВАЗа. Но видимо Мурат был действительно не очень хорошим программистом, потому что автоматика начала сбоить за 2 дня до часа Х. На конвейер запчасти поступали не в том порядке и не в то время. Инженеры судорожно искали техническую ошибку, а о возможности бага в коде подумали в последнюю очередь. Неисправный фрагмент кода был найден, но сбои продолжались.

Picture 10


Совесть или тщеславие заставили Мурата Уртембаева признаться в содеянном. Программиста осудили за хулиганство, дав условный срок и обязав возместить заводу стоимость двух «Жигулей».

Интуиция против фактов


Эта история также получила широкую огласку, хотя далеко не все ее факты доступны широкой общественности. Почему? Потому что речь идет о возможности начала ядерной войны! Сентябрь 1983 года — обстановку в мире нельзя назвать благоприятной. Рейган, занимающий на тот момент пост президента США, открыто называет СССР "Империей зла". Любое вызывающее действие одной из сторон могло привести к разрыву натянутой струны хрупкого мира и началу войны.

В 100 км от Москвы на ночное оперативное дежурство командного пункта Серпухов-15 вступил советский офицер Станислав Евграфович Петров. Подполковник лично следил за ситуацией на мониторе, отображающем картинку со спутников.

Picture 8


Наблюдение велось за территорией США. Вдруг на табло появилось предупреждение… США запустили ракету! Взвыла сирена, началась автоматическая проверка системы, ее результат — все исправно, ошибки нет! Нагнетала обстановку тревожно завывающая сирена, а, между тем, Петрову нужно было принять взвешенное решение. Вариантов действия было два:

  1. Действовать по инструкции. Видя, что ракеты летят в сторону СССР, Петров должен был нажать кнопку. Дежурные имели наготове ядерный чемоданчик, который следовало доставить главе СССР Юрию Андропову. Времени на ответный удар было менее 30 минут. Если бы СССР запустил ракеты — в ночь на 26 сентября 1983 года началась война.
  2. Довериться интуиции. Станислав Евграфович рассуждал так: «Ракетного нападения нет, компьютер взбунтовался — дура-машина. Я компьютерщик, я их делал. А раз я их делал, то умнее меня, своего создателя, она быть не может» (источник). Нельзя было игнорировать и тот весомый факт, что: "… ракетные атаки с одной базы не начинаются, взлетают со всех сразу".

Данные с компьютера Петрова дублировались вышестоящим лицам, которые находились в некотором недоумении: Почему Станислав Евграфович медлит и не подтверждает атаку? Ему позвонили. Подполковник доложил: «Информация ложная».

Интуиция и опыт не подвели подполковника Петрова. В последствии было доказано — сбой в работе системы произошел из-за влияния внешних факторов, прежде не учитываемых: датчики спутника были засвечены солнечным светом, отраженным от высотных облаков (источник). А компьютер не смог распознать ложный сигнал.

Оценка поступка подполковника Петрова была неоднозначной. В СССР бюрократию уважали, а Станислав Евграфович повел себя в разрез инструкции. По логике, его следует наказать. С другой стороны, все прекрасно понимали, нажми он кнопку тревоги, наша сторона выпустила бы ракеты. Реальные ракеты, а не точки на карте — результаты ошибки программы. В итоге, от начальства Петров получил устный выговор. Вскоре он ушел из Армии. В звании подполковника.

Picture 9


Совершенно иначе к поступку советского офицера отнеслись в США. Он, однозначно, был признан героем и получил премию «Человеку, предотвратившему ядерную войну» ООН. Но Станислав Евграфович Петров по-прежнему живет в России, в скромной квартире во Фрязино. Сам себя героем не считает, но о событиях 1983 года вспоминает охотно.

Если вас заинтересовала биография подполковника Петрова Станислава Евграфовича, то можете посмотреть документальный фильм "Человек, который спас мир".

Пофилософствую


На всех современных промышленных и, тем более, военных объектах установлено необходимое программное обеспечение. Почти все процессы автоматизированы, а, следовательно, участие в работе людей становится менее необходимым. Но при этом возрастают требования к качеству программного обеспечения. Для этого на этапе его разработки рекомендуется использовать дополнительные средства проверки кода, в том числе я не могу не назвать наш статический анализатор PVS-Studio :). В ходе работы также следует проводить анализ безопасности программного кода, в частности поиск недекларированных возможностей (программных закладок) с помощью специализированных инструментов. Это обезопасит производство от повторения ситуации с автовазовским хакером.

Picture 2

Но, возвращаясь к выводу, отмечу, ни одна программа не имеет интуиции, эмоций и желаний. Так можно ли назвать ее решение беспристрастным? Можно ли полностью довериться искусственному интеллекту? Тогда, следуя прописанному алгоритму, в 1983 году СССР запустили бы ракеты. Уважаемые читатели, предлагаю вам порассуждать на тему: «Можно ли доверить программе принятие важного решения или ответственность должен нести человек?»
Tags:
Hubs:
+36
Comments 47
Comments Comments 47

Articles

Information

Website
pvs-studio.com
Registered
Founded
2008
Employees
31–50 employees