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

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 году СССР запустили бы ракеты. Уважаемые читатели, предлагаю вам порассуждать на тему: «Можно ли доверить программе принятие важного решения или ответственность должен нести человек?»
Поделиться с друзьями
-->

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


  1. VolCh
    20.02.2017 12:34
    +14

    По сути решение принимает не программа, а программист. Вопрос нужно сформулировать как" может ли общество и отдельные люди доверить нам, программистам, принятия важных решений" Я бы на их месте не спешил…


    1. noonv
      20.02.2017 13:14
      +4

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


  1. enum
    20.02.2017 12:39
    +13

    В СССР багов не было!


    1. k12th
      20.02.2017 12:45
      +10

      Неправда ваша, все знают, что в СССР было всё — и баги в том числе. Но с этими пережитками буржуазного прошлого боролись, перевоспитывали их в фичи.


      1. pfemidi
        20.02.2017 13:19
        +5

        Все знают что всё было в Греции, а не в СССР.


    1. Idot
      20.02.2017 12:47

      … были фичи?


      1. leon_ti
        20.02.2017 14:14
        +3

        Задокументированные согласно Извещениям об изменениях :))


    1. Ordinatus
      20.02.2017 13:12
      +2

      Багов то вроде и небыло, однако было первое место в мире по закрытым багфиксам в релизнотсах.


    1. midday
      20.02.2017 14:06
      +3

      Все знают что в тоталитарном СССР ничего не было! Программистов тоже не было. Все что делалось — делалось в гулагах, а остальные охраняли. Вот и в истории этой недосказано, из-за бага чел уехал в магадан в гулаг, оттуда в шарашке работал до конца жизни под дулами автоматов. =D


    1. pda0
      20.02.2017 14:31

      Советские баги — самые огромные баги в мире!


    1. tehSLy
      20.02.2017 15:23
      +2

      то были фичи!


    1. Rozmysel
      20.02.2017 15:23
      +1

      Были, но из под прилавка и у спекулянтов


    1. PTM
      20.02.2017 17:20
      +3

      В СССР багов не было!

      А жигули? /sarcasm off


    1. BigEl
      22.02.2017 09:21

      А еще, как говорят, не было секса, но дети были…
      Если есть программный продукт — значит есть место и багам. Человеческий фактор всегда дает сбой, соответственно всегда есть шанс того, что ПО или алгоритм тоже будет сбоить (разово или единажды — это уже частности)


    1. monah_tuk
      22.02.2017 17:58

      Точно были! Тараканов на кухне несколько лет выводили!


  1. Oxyd
    20.02.2017 14:09
    -4

    Ну серьёзные системы пишут на более других языках(на той-же Ada, например), так что PVS не сильно и поможет…


    1. Andrey2008
      20.02.2017 14:30
      +2

      Более серьезные, это понятие относительно. Например, система управления автомобилями, критична или нет? А там вполне себе царство С. Я не говорю, что вот прям PVS-Studio спасёт мир, однако стоит понимать, что сейчас крайне большое количество ответственных системам это С (или обрезанный С++).

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


  1. vlreshet
    20.02.2017 14:18
    +10

    Возможно меня заминусуют, но никак не ожидал такой унылой статьи на вашем корпоративном блоге. Всегда было интересно вас читать. А в этот раз — две крайне известные истории, которые не слышал только ленивый, и потом «типа размышления» которые по факту — реклама продукта. Ожидал какие-нибудь интересные баги в советских микрокалькуляторах, или в клонах спектрума, да хоть в чём нибудь. А получил древнюю историю, пересказ вики, и рекламу… Тьфу.


    1. Andrey2008
      20.02.2017 14:55
      -6


      1. vlreshet
        20.02.2017 15:01
        +2

        Не совсем понятно к чему это, ну да ладно.


        1. Andrey2008
          20.02.2017 15:36
          +1

          Постоянно кто-то говорит, что хабр уже не торт, и что статьи не интересные и т.д. Однако они ничего не делают, чтобы улучшить ситуацию.

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

          Вместо критики, намного лучше и полезнее придумать и написать интересную статью. Это повысит уровень Хабра и другие будут стараться писать ещё лучше.


          1. vlreshet
            20.02.2017 15:52
            +6

            Далеко не все могут что-то делать, да и хабр это не сообщество сугубо писателей. Не у всех хватает знаний и таланта чтобы создать годную статью. Но ИМХО это не повод писать что угодно под соусом «а ты напиши лучше, раз такой умный». Если загуглить «баги в ссср» — то третья ссылка в выдаче будет на статью 2015 года, с… историей о ложном срабатывании системы защиты! Другими словами, да, но суть то не в этом. Как там написано в правилах хабра — хабр для уникального контента, да? Давайте воспринимать критику здраво.

            P.S. А ваш аргумент это что-то в стиле «сперва добейся»


            1. avost
              20.02.2017 20:37
              -3

              Не у всех хватает знаний и таланта чтобы создать годную статью.

              Ну, да. Зато у этих "всех" хватает злобы, яда и желчи, чтобы полить помоями того у кого таланта хватает.


              А ваш аргумент это что-то в стиле «сперва добейся»

              Сперва подумай, сделают ли твоё калометание мир лучше...


          1. Comdiv
            20.02.2017 16:22
            +5

            Мне статья понравилась, хотя я тоже не избежал разочарования.

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

            Было бы совсем неплохо советоваться со своим внутренним худ.советом, а то и организовать внешний.


          1. MacIn
            20.02.2017 17:57
            +6

            Вместо критики, намного лучше и полезнее придумать и написать интересную статью. Это повысит уровень Хабра и другие будут стараться писать ещё лучше.

            Это никак не отменит того, что статья — баян. Баян много хуже оригинала, опубликованного, емнип, на ГТ не более полугода назад.


      1. Rozmysel
        20.02.2017 15:53
        +1

        Совершенно естественно что те кто занят делом не стоят в очереди и не базарят попусту, а ушли по делу (вон они ходят вдалеке), а большинство уже погрузились в дело с головой так что их вовсе не видно


    1. Frankenstine
      21.02.2017 13:11

      Я знаю об баге в программируемых калькуляторах МК-52/МК-61, основанном на методах «еггогологии», позволяющем ограниченный доступ к скрытому, шестнадцатому регистру памяти калькулятора :)
      К сожалению калькулятора давно под рукой нет, рассказать подробнее не смогу :(


      1. VolCh
        21.02.2017 16:04

        Это скорее недокументированная возможность была, скрытая фича


        1. Frankenstine
          22.02.2017 14:27

          Нет, скорее всего регистр не успели доделать, либо на него не хватило физических регистров памяти. В него можно было записать только число из 7 или 8 знаков, порядок игнорировался, запятая тоже. Стереть содержимое регистра нельзя было, только записать другое число.


      1. MacIn
        21.02.2017 23:11

        Для чего используется этот регистр в норме?


        1. VolCh
          21.02.2017 23:27

          В общем и в целом обычный регистр общего назначения. Один нюанс — операции с ним нельзя произвести с клавиатуры или внести их в память обычными способами. Если память не изменяет.


          1. MacIn
            21.02.2017 23:33

            Просто интересно. Помню, 15 обычных плюс XYZT стековые. Зачем нужен еще один скрытый — непонятно. Или просто не смогли его адресовать?


            1. Frankenstine
              22.02.2017 14:29

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


              1. MacIn
                22.02.2017 15:31

                Могу предположить, что просто не смогли адресовать, кодов не хватило — до e использовались коды регистров емнип.


                1. Frankenstine
                  22.02.2017 16:01

                  Оставался код F для шестнадцатого регистра, адресовать в теории могли бы. Но что-то помешало, либо не влез код, либо не хватило регистров, либо ещё что-то — это уже только разрабочики могли бы рассказать.


  1. Lauren
    20.02.2017 21:29
    +1

    Нажми он кнопку тревоги, наша сторона выпустила бы ракеты
    .
    Система СПРН двухфакторная. Насколько я понимаю если бы он нажал на кнопку, то ему позвонили бы сверху и сказали:«Всё нормально! Наверное опять жуки завелись.»


  1. lingvo
    21.02.2017 00:02

    Вопрос в конце статьи на сегодняшний день неуместен. Программы давно уже самостоятельно принимают решения, которые могут легко нанести вред человеку. Причем это может быть сделанно как непредумышленно — если программист совершит ошибку, так и предумышленно — хакерами или заливкой вредоносного кода.
    Вопрос на сегодняшний день стоит такой — как максимально обезопасить себя и человечество от таких предумышленных и непредумышленных ошибок, при этом сохранив возможности программирования? И PVS- студио тут поможет мало, хотя это уже шаг.
    Каждый сегодня варится в своем супе — авиаторы решают по-своему, давая разработку ПО двум-трем полностью независимым командам, автопроизводители посвоему — максимально тестируя код, а некоторые энтузиасты, типа геохота, отдают свою жизнь в руки машинного обучения, надеясь на авось. Так не может продолжаться, если мы не хотим, чтобы когда-нибудь ИИ нажал на кнопку и запустил пару десятков ракет. Но все пока движется к этому, а стандартов и решения нет...


  1. Gosha_say
    21.02.2017 09:37
    +1

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


    1. Ndochp
      21.02.2017 11:01

      А способ быстро и аккуратно вывести из строя все американские пусковые знаете? Наковальня то это ракеты вероятного противника.


      1. Gosha_say
        21.02.2017 11:28

        В моём абстрактном комментарии предполагается, что у «вероятного противника» тоже висит наковальня. Но уже с (возможно) индийской версией ардуино. Тут бело не в выводе из строя пусковых установок, а в том что проблема создана на самой проблеме которая может угробить всех. Включить Кэпа?


        1. Ndochp
          21.02.2017 13:45

          Этот Ваш комментарий я совсем не понял. Включаю кэпа, потом включите своего:
          1. Наковальня над башкой это угроза башке, значит это ракета противника, а не ракета вообще и тем более не система оповещения
          2. Ее появление не связано с нашей деятельностью.
          3. Ее разборка возможна только на территории противника

          Даже если ардуина с релюшкой это система оповещения, то наша не угрожает нам (заглючит — америку с карт стирать), американская — штатам. В любом случае — убирать надо не дома, а у соседа. Таким образом, никакой пацифизм не спасет, мы зависим не от своих действий.
          А значит приходится «дебажить её обливаясь потом от страха», других путей нема.


          1. VolCh
            21.02.2017 16:06

            то наша не угрожает нам (заглючит — америку с карт стирать)

            Как сказать, разве что рассчитывать, что Америка не нанесёт ответного удара.


          1. Gosha_say
            21.02.2017 16:57

            Да у меня это был утопический комментарий, имелось ввиду что если избавится от оружия то и проблем с ним не будет.


  1. saipr
    21.02.2017 12:02

    image
    Операционные системы из CCCР
    «Операционные системы: зачем они инженеру» из песочницы

    Что и как разрабатывали в СССР

    (30-летие учебного пособия ОС Minix)