Мы должны ценить сложные программы разработки интерфейсов, которые мы используем сегодня. Когда мы смотрим на разработчиков/математиков, которые работали до нас, у них не было ошибок при обнаружении IDE.
Ошибки кодирования обходятся дорого, различные учреждения становятся жертвами тезисов, а Национальное управление по аэронавтике и исследованию космического пространства не принимает их.
Пора вернуться в 1962 год, когда простая ошибка кодирования стоила НАСА 18,5 миллионов долларов, что по современным оценкам составляет 150 миллионов долларов.
Марина 1 была построена для первого планетарного облета Венеры, она была запущена ракетой Atlas-Agena с мыса Канаверал. Его задачей был сбор данных о температуре и атмосфере на Венере.
Все пошло не так, как планировалось НАСА, и через 4 минуты полета ракета совершила незапрограммированный поворот. Это побудило офицера безопасности отдать команду самоуничтожения ракеты над Атлантическим океаном.
Что пошло не так?
Ракеты-носители Atlas используют две радиолокационные системы для поддержания траектории; система ставок и система треков. Система скорости измеряет скорость, используя измерения доплеровского сдвига, полученные от наземной системы маяков.
Трековая система измеряет расстояние и угол относительно антенны, расположенной вблизи стартовой площадки. Вскоре после запуска система скорости вышла из строя, и теперь система гусениц должна была серьезно справиться с навигацией.
Две системы вместе образовывали избыточность в измерениях, допускающую небольшие погрешности.
Код, предназначенный для интерпретации измерения расстояния и угла, имел простую ошибку.
Обозначение слева является правильным обозначением, но вместо него использовалось обозначение справа.
В обозначении справа отсутствовала верхняя черта, которая представляет собой среднее значение. Верхняя полоса указывает машине взять среднее значение значений, это приведет к сглаженному значению скорости и, следовательно, к устранению любых колебаний измерения.
Теперь в алгоритме отсутствовала черта (-) — компьютер наведения ракеты выдавал неверную информацию о скорости ракеты. Это вызвало множество проблем, побудив офицера безопасности инициировать команду самоуничтожения.
Почему эта ошибка не была обнаружена?
Код для управляющего компьютера был в основном написан на языке Formula Translation, также известном как Fortran. Этот устаревший язык программирования использовался для перевода математических уравнений в код. Чтобы еще больше усложнить дело, оно было написано от руки или напечатано на пишущей машинке.
Для перевода Фортрана в двоичный код использовались толстые прямоугольные листы бумаги, известные как перфокарты;
Каждая карта содержит одну строку кода (до 80 столбцов), и каждый столбец представляет один символ кода в строке.
Чтобы представить числовое значение, вы просто вырезали соответствующее число на листе и, наконец, чтобы представить буквы и символы, вам нужно было выбить дополнительные отверстия.
После преобразования кода в перфокарты он отправляется через компилятор, где преобразуется в двоичный код.
Как вы можете себе представить, используя этот утомительный метод кодирования, ошибки можно легко пропустить. Никаких обзоров кода, IDE, контроля качества у нас нет.
Дополнительное чтение:
Присоединяйтесь к FAUN: Сайт💻|Подкаст🎙️|Twitter🐦|Facebook👥 |Instagram📷|Группа Facebook🗣️|Группа Linkedin💬| Slack 📱|Cloud Native Новости📰|Дополнительно.
Если этот пост был полезен, пожалуйста, несколько раз нажмите кнопку аплодисментов 👏 ниже, чтобы выразить свою поддержку автору 👇