Как программировать в стиле NASA
Команда портала intersog.co.il в честь 60-летия со дня первого полета человека в космос собрала информацию о результатах многолетней работы ученых и инженеров, которые были и остаются пионерами в этой области. Эти примеры дают представление о том, насколько новаторскими могут быть технологии 40-летней давности и как человеческий разум может управлять космическими кораблями, используя всего 2 Мб кода.
BURN_BABY_BURN
На GitHub есть бесплатный доступ к исходному коду для управляющего компьютера Apollo 11 (AGC), а также командным и лунным модулям. Можно исследовать оригинальную траекторию полета на Луну или скомпилировать программу полета, используя эмуляцию бортового компьютера системы навигации корабля.
Современным программистам будет трудно разобрать код, но он удобочитаем, потому что глава отдела разработки программного обеспечения (ПО) Маргарет Гамильтон и ее команда из MIT сопроводили код комментариями, а общий вес программы составил чуть более 2 Мб.
Сила десяти: кодирование для полетов на Марс
Споры о том, какой язык программирования самый популярный на Земле, заканчиваются, когда дело касается полетов на Марс. Большая часть ПО на марсоходах 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-х).
Оба зонда уже покинули область околосолнечного пространства и несут одинаковые золотые пластинки с изображениями Земли и звукозаписями — своего рода капсула с посланием для внеземной формы жизни. Чтобы расшифровать сообщение, адресатам нужно мыслить как программистам. Схема обложки с инструкциями по воспроизведению пластинок и указанием местоположения солнечной системы зашифрованы в двоичном формате.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: