Команда портала intersog.co.il в честь 60-летия со дня первого полета человека в космос собрала информацию о результатах многолетней работы ученых и инженеров, которые были и остаются пионерами в этой области. Эти примеры дают представление о том, насколько новаторскими могут быть технологии 40-летней давности и как человеческий разум может управлять космическими кораблями, используя всего 2 Мб кода.
BURN_BABY_BURN
На GitHub есть бесплатный доступ к исходному коду для управляющего компьютера Apollo 11 (AGC), а также командным и лунным модулям. Можно исследовать оригинальную траекторию полета на Луну или скомпилировать программу полета, используя эмуляцию бортового компьютера системы навигации корабля.
Современным программистам будет трудно разобрать код, но он удобочитаем, потому что глава отдела разработки программного обеспечения (ПО) Маргарет Гамильтон и ее команда из MIT сопроводили код комментариями, а общий вес программы составил чуть более 2 Мб.
Код для управляющего компьютера Apollo 11
Споры о том, какой язык программирования самый популярный на Земле, заканчиваются, когда дело касается полетов на Марс. Большая часть ПО на марсоходах NASA Curiosity и Perseverance написана языке C. Еще более 1 млн строк кода на Java и C++ отвечают за управление Curiosity и его роботизированной рукой.
В ходе разработки кода был сформирован свод правил под названием «Сила десяти». Это принципы написания программ, основанные на оценке рисков, где каждое правило возникло в результате реальной аварии или сбоя, вызванного нарушением правил.
Список правил представлен ниже:
1.Избегайте сложных конструкций потока, таких как goto и рекурсия.
2. Все циклы должны иметь фиксированные границы.
3. Избегайте неправильного распределения, фрагментации памяти.
4. Ограничьте размеры кода функции одной печатной страницей.
5. Используйте как минимум два runtime-утверждения для каждой функции.
6. Ограничьте объем данных до минимально возможного.
7. Проверьте возвращаемое значение всех non-void-функций или отбросьте его как ненужное.
8. Используйте препроцессор экономно.
9. Ограничьте применение указателя одним перенаправлением и не используйте указатели на функции.
10. Скомпилируйте код со всеми возможными активными предупреждениями. Все ошибки должны быть устранены до выпуска ПО.
Подробное объяснение всех правил доступно по ссылке. На их основе был разработан стандарт кодирования ПО марсохода Curiosity. Он включает четыре уровня соответствия, каждый из которых содержит свой набор правил. Если хотите понять, каково это — программировать в стиле NASA, обратитесь к следующей статье.
Речь о таких языках как Fortran, Cobol и Algol, которые сделали возможным запуск миссии Voyager в 1977 году (ее хотят продлить до конца 2020-х).
Оба зонда уже покинули область околосолнечного пространства и несут одинаковые золотые пластинки с изображениями Земли и звукозаписями — своего рода капсула с посланием для внеземной формы жизни. Чтобы расшифровать сообщение, адресатам нужно мыслить как программистам. Схема обложки с инструкциями по воспроизведению пластинок и указанием местоположения солнечной системы зашифрованы в двоичном формате.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…