Привет из 60-х: опубликованы исходные коды ПО для «Аполлона-11»

    189

    На GitHub выложены исходные коды программ на ассемблере, которые разрабатывались в 60-е годы прошлого века для пилотируемого полёта к Луне, сообщает Quartz  – как выясняется, за последние полвека программисты не слишком изменились.

    Разработку программ для бортового компьютера Apollo Guidance Computer (AGC) вели в MIT. Исходных коды до сих пор хранились распечатанными на бумаге.

     

    apollo_source_code
    Руководитель проекта разработки ПО для «Аполлона-11» Маргарет Гамильтон (Margaret Hamilton) из NASA с распечатками исходного кода программ для бортового компьютера лунной экспедиции (фото с сайта qz.com/)

     

    Работу по воссозданию исходных текстов начиная с 2003 года вёл технический исследователь Рон Бёрки (Ron Burkey) – часто ему пришлось вводить код вручную, строка за строкой, и самому писать утраченные фрагменты. Работоспособность ПО впоследствии была проверена на эмуляторе AGC.

    Комментарии к строкам программ, оставленные разработчиками, демонстрируют склонность к проявлению программистского юмора, во всём его своеобразии, и отвлечённым ассоциациям.

    Так, в одном месте разработчик пишет, что фрагмент кода страхует технику на случай ошибочных действий («всякой глупости») астронавта, предупреждая его об изменении положения спускаемого на Луну аппарата.

    Не обошлось без цитаты из Шекспира («Генрих VI») в комментариях: «Тебе в глаза докажут, что при тебе есть люди, которые только и говорят, что о существительных да о глаголах, и всё такие поганые слова, какие невтерпёж слышать христианину» (перевод Евгении Бируковой). Разработчик в этом комментарии высказал шутливое раздражение по поводку синтаксиса языка, на котором ему пришлось программировать – описание ассемблера для AGC оперировало терминами «существительное» (например, время включения двигателя) и «глагол» (например, команда на начало исполнения действия, в частности, запуск той или иной программы).

    Подобное поведение программистов типично и проявляется вне зависимости от сложности проекта и степени ответственности за работоспособность кода. Впоследствии другие разработчики, в том числе создатели продуктов Microsoft, довели способность оставлять в коде не имеющие отношения к делу фрагменты до «совершенства»: они не ограничивались комментариями (которые никак не влияют на работу ПО) и резвились, создавая недокументированные функции – «пасхальные яйца». Например, в одной из версий Excel находился трёхмерный имитатор полётов, как в компьютерных играх, и титры с именами программистов.

    Участники GitHub нашли ошибки в коде программ для бортового компьютера «Аполлона-11». Обнаружилось, что «заказчик мог столкнуться с проблемами при активации криогенных баков – возможны нарушения в цепи управления». Да, проблема есть, но она была исправлена ко времени старта «Аполлона-14», комментирует на GitHub другой знаток программисткой палеонтологии.

    Полёт «Аполлона-11» к Луне состоялся 47 лет назад, в июле 1969 года.