Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
close form

Заполните форму в два простых шага ниже:

Ваши контактные данные:

Шаг 1
Поздравляем! У вас есть промокод!

Тип желаемой лицензии:

Шаг 2
Team license
Enterprise license
** Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности
close form
Запросите информацию о ценах
Новая лицензия
Продление лицензии
--Выберите валюту--
USD
EUR
RUB
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Бесплатная лицензия PVS‑Studio для специалистов Microsoft MVP
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Для получения лицензии для вашего открытого
проекта заполните, пожалуйста, эту форму
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
Мне интересно попробовать плагин на:
* Нажимая на кнопку, вы даете согласие на обработку
своих персональных данных. См. Политику конфиденциальности

close form
check circle
Ваше сообщение отправлено.

Мы ответим вам на


Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок:

  • Промоакции
  • Оповещения
  • Спам

>
>
Баги из СССР

Баги из СССР

20 Фев 2017

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

0479_Bugs_from_the_USSR_ru/image1.png

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

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

0479_Bugs_from_the_USSR_ru/image2.png

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

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

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

0479_Bugs_from_the_USSR_ru/image3.png

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

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

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

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

0479_Bugs_from_the_USSR_ru/image4.png

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

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

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

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

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

0479_Bugs_from_the_USSR_ru/image5.png

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

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

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

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

0479_Bugs_from_the_USSR_ru/image6.png

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

Популярные статьи по теме


Комментарии (0)

Следующие комментарии next comments
close comment form