Самые яркие и масштабные баги в истории

Чтобы отправить комментарий — войдите.
  • D
    20 фев 16
    Вспомнился старый анекдот.

    "Сегодня Microsoft анонсировала выход новой версии Windows. В ней появились новые баги, но зато старые сохранены для полной совместимости."
    Ответить
  • V
    20 фев 16
    "9 января 2038 года я бы все же посоветовал всем быть поосторожнее – именно в этот момент значение Unix-времени превысит 2147483647 и перестанет помещаться в стандартную переменную (беззнаковое 32-битное целое число). И как на это отреагируют 32-битные устройства по всему миру — загадка." —

    а перевести время на устройстве и проверить что именно будет не судьба?
    Ответить
    • K
      А то что разные системы и разные программы могут по разному реагировать на нетипичную дату/её изменение?
      Ответить
      • V
        Я всегда полагал, что дата/время прописывается в устройство при прошивке и может быть задана произвольно, а не только в соответствие с показаниями службы точного времени. И каким образом новорожденное устройство может определить "типичное" время ему задано или нет, сходить посмотреть дату на свежих газетах в киоске? Речь естественно об устройствах в режиме оффлайн
        Ответить
        • V
          vvp1970 20 фев 16
          Ага, только разбегусь сейчас посильнее) Это пусть производители проверяют, в их же интересах
          Ответить
    • L
      Цитата из статьи:

      "Что самое смешное, очень многих людей тянет протестировать все найденные баги на собственной шкуре."
      Ответить
    • nickvg
      vvp1970 20 фев 16
      На своей ОпенСюзе провел икспиримент: установил 8 января 2038 года 23:59 мин и выводил каждую секунду. Все прошло нормально, переход с пятницы на субботу прошел успешно
      Ответить
    • nickvg
      vvp1970 20 фев 16
      Расширил икспиримент: установил 9 января 2038 года 23:59 мин и выводил каждую секунду. Все прошло нормально, переход с субботы на воскресенье прошел успешно
      Ответить
  • sociofob
    20 фев 16
    "Во время работы над ПО новой ракеты программисты использовали куски уже готового кода, ранее написанного ими для Ариан 4."

    Сейчас этим грешат практически все программеры поголовно. С нуля пишется только первая версия и дальше пошли копипасты. И все бы ничего. Только вот спустя годы и десятки версий программы никто уже не помнит (а зачастую и авторы уже ушли из команды разработчиков) тонкостей основы. А все сосредоточено именно на довесках, расширении функционала. Никто не занимается оптимизацией основы. И на выходе мы получаем вместо браузера, который занимал 30 мб оперативной памяти на старте — 300 мб через 10 лет. Я уж не говорю о багах кочующих от версии к версии. А цифра основной версии под полтинник — это уж совсем неприкрытый популизм.
    Ответить
    • vitaly68
      Это так, что греха таить. Я уже давно таскаю фрагменты кода из программы в программу.

      Иной раз даже слишком много лишнего. Мне стыдно, но никто об этом кроме меня не знает.
      Ответить
      • K
        Это называется Объектно Ориентированное Программирование. ))
        Ответить
      • Yakut
        vitaly68 20 фев 16
        Всё. Мы выезжаем за тобой. Мы давно тебя искали. Оставайся на месте.
        Ответить
        • sasaaa
          Yakut 20 фев 16
          Я с вами. Программера своего прихвачу, познакомить ))
          Ответить
  • G
    20 фев 16
    Говорят что если получиться на кирпиче выставить время и дату, то превратиться в IPhone
    Ответить
  • vitaly68
    20 фев 16
    "Любой программист регулярно сталкивается с багами".

    Сталкивается-это полбеды....

    Гораздо интереснее то, что он их создает не менее регулярно.
    Ответить
    • alti27
      vitaly68 20 фев 16
      правильно: пока исправляют один старый сделают два новых.
      Ответить
  • demon_of_death
    20 фев 16
    эм... а почему на 0 делить нельзя??? Можно! результатом будет бесконечность. Это конечно не поместится ни в какую переменную, но сам факт — можно. И мне видится, что дети в школе, к моменту прохождения деления вполне способны это осознать, вместо захламления головы тем, что на 0 делить нельзя.
    Ответить
    • vitaly68
      и тем не менее:

      raised exception class EDivByZero with message 'Division by zero'
      Ответить
      • demon_of_death
        Безусловно этот момент в коде необходимо отловить. И желательно не допустить исключения, т.к. оно обрабатывается сильно дольше.
        Ответить
    • twin1
      Как раз проще раз и навсегда запомнить, что на ноль делить нельзя. А захламление головы ненужностью в виде бесконечности как раз и произойдёт. Кому охота, пусть этим занимаются в математической спецшколе и универе, а потом и в научной деятельности.
      Ответить
      • demon_of_death
        а не проще включить логику и понять, что чем меньше делитель, тем больше результат и если делитель стремится к 0, то результат к бесконечности? А то так мы придём к тому, что человеку достаточно уметь складывать и как-то писать (3-и года обучения) и всё, можно отправлять в жизнь!
        Ответить
        • vitaly68
          Давайте еще бесконечность возводить в степени как в институте и получим необходимость анализировать бесконечность в квадрате деленную на бесконечность в кубе — корень 4 степени от бесконечно малого в квадрате.

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

          Ведь никому не приходит в голову в жизни использовать релятивистскую механику, несмотря на то что она вполне работает.Все понимают, что она слишком сложна для повседневного использования в мире небольших скоростей. Все тянутся за механикой ньютона. Но она ведь ошибочна в той части где скорости высоки.Все понимают, но используют ее.Потому что эффективно и намного проще.
          Ответить
          • tsvigo
            vitaly68 20 фев 16
            Не надо передёргивать — классическая механика работает везде и всегда, а релятивистская только в головах релятивистов.
            Ответить
            • vitaly68
              tsvigo 20 фев 16
              Акстись!!!! Классическая работает только на малых скоростях....Релятивистская на любых, как на малых , так и на близких к скорости света..
              Ответить
              • demon_of_death
                Вот мы и столкнулись с одним из плодов упрощения... :) понимаете? :) Может не стоит упрощать? :)
                Ответить
              • tsvigo
                vitaly68 20 фев 16
                Ацюковский В.А. "Блеск и нищета теории относительности Эйнштейна":

                yadi.sk
                Ответить
                • demon_of_death
                  bbc.com

                  вот ведь незадача.... волн нет, а они регистрируются... :( Наверно Однокамушкин всё подстроил?

                  ...гравитационные волны — первый постулат указанной Вами книги.

                  Ну и на тему остального. Глонас и ГПС работают на принципах теории относительности. На ньютоновских формулах не получается. Может подскажете нашим воякам как точность поправить? Они Вам огромное спасибо скажут и медаль дадут за особые заслуги. Не? Не хотите?
                  Ответить
                  • tsvigo
                    Вы знаете как устроена джипиэс? От трёх спутников посылается сигнал приёмнику на Земле. Часы на приёмнике и спутниках показывают одно время. Приёмник считает время посылки-приёма сигнала и так как скорость радиоволны известна и равна скорости света получает расстояние до спутника. И так со всеми тремя спутниками. Получил три пути — на пересечении этих трёх путей он получает положение приёмника в трёхмерном пространстве, положения спутников известны. Где тут теория относительности? Тут одна сплошная классическая механика.
                    Ответить
    • Zerotux
      А если делить на ноль разные числа то вы получите разные бесконечности?))

      Делить на ноль, конечно, можно, только надо решить — зачем.
      Ответить
      • demon_of_death
        Как минимум для понимания самого процесса.
        Ответить
  • D
    20 фев 16
    "именно в этот момент значение Unix-времени превысит 2147483647 и перестанет помещаться в стандартную переменную (беззнаковое 32-битное целое число)"

    Вообще-то 32-битное беззнаковое целое — это 4294967295.

    А 2147483647 — обычное 32-битное целое, и если его увеличить на единицу, получим занчение -2147483648.
    Ответить
    • B
      Вот я тоже подумал что для беззнакового 2147483647 кто то открутил у переменной один битик.
      Ответить
  • L
    20 фев 16
    В своё время у нас в конторе один "сертифицированный" специалист по Cisco не стал вдаваться в подробности по особенностям прошивки и настройки разных линеек продуктов и тупо скопипастил основные команды из одной инструкции для наладчиков на местах в другую.

    Хорошо, ребята решили сначала потренироваться и дело обошлось парой "кирпичей" в центральном офисе, отремонтировать которые удалось достаточно оперативно.
    Ответить
  • k69d
    20 фев 16
    > На ноль делить нельзя – это знают даже ученики начальной школы.<

    В отличие от школьников, студентам технических вузов на ноль делить можно. Операцию, которая в алгебре является невозможной, можно произвести в других сферах математического знания. В них появляются новые дополнительные условия задачи, которые допускают это действие. Делить на ноль можно будет тем, кто прослушает курс лекций по нестандартному анализу, изучит дельта-функцию Дирака и ознакомится с расширенной комплексной плоскостью.

    В программировании попытка разделить число с плавающей точкой на ноль приведёт к +INF или −INF (Стандарт IEEE 754), однако, в зависимости от языка программирования и типа числа́ (например, целое число), которое делят на ноль, может: сгенерировать исключение, сообщение об ошибке, остановку выполняемой программы, сгенерировать положительную или отрицательную бесконечность, или привести к специальному нечисловому значению (NaN).
    Ответить
    • k69d
      k69d 20 фев 16
      Комплексная плоскость — это плоскость с прямоугольной декартовой системой координат xOy.

      Комплексные числа на этой плоскости изображаются в виде точек либо в виде векторов.
      Ответить
  • tsvigo
    20 фев 16
    Меня к примеру больше заботит использование в программах чисел с плавающей запятой:

    yur.ru
    Ответить
    • tsvigo
      tsvigo 20 фев 16
      Американец уверен что:

      "–Взрыв ракеты "Пэтриот» в Саудовской Аравии 25 февраля 1991, который привел к гибели 28 человек, связан с ошибками округления.

      –Взрыв ракеты Ариан-5 сразу после старта при ее первом испытании во Французской Гвиане 4 июня 1996 был следствием переполнения числовой сетки компьютера.

      –23 августа 1991 в Гандсфиорде в Норвегии затонула нефтяная платформа, что привело к убытку почти в один миллиард долларов. Это, как предполагается, было результатом inaccurate finite element analysis"

      "

      аварии были вызваны стандартом IEEE754.
      Ответить
    • tsvigo
      tsvigo 20 фев 16
      "

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

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

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

      Итак, чтобы погубить человечество, Сатане достаточно внести замаскированную ошибку в компьютерную программу числовой обработки.

      Но этого делать совсем не надо.

      Потому что это уже есть.

      "
      Ответить
full image