Рубріки: Новости

Как программировать в стиле NASA

Богдан Мирченко

Команда портала 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-х). 

Оба зонда уже покинули область околосолнечного пространства и несут одинаковые золотые пластинки с изображениями Земли и звукозаписями — своего рода капсула с посланием для внеземной формы жизни. Чтобы расшифровать сообщение, адресатам нужно мыслить как программистам. Схема обложки с инструкциями по воспроизведению пластинок и указанием местоположения солнечной системы зашифрованы в двоичном формате.

Останні статті

Всегда перед глазами: 15 лучших тем VS Code на 2026 год

Visual Code от Microsoft, вероятно, один из самых популярных редакторов кода. Разработчики любят его за…

22.02.2026

Киберпанк по-японски: 9 лучших аниме в жанре «технологии нас погубят»

Япония сама по себе — сплошной киберпанк. Это заметил даже культовый писатель жанра Уильям Гибсон,…

21.02.2026

Не просто коробка с бантом. Как оригинально подарить гаджет: 5 незатратных способов

Сам по себе телефон Айфон 17 Про Макс – отличный подарок. У него красивая заводская…

12.02.2026

Лучшие криптобиржи для криптозаймов в 2025 году: где лучше брать кредит под крипту?

На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…

09.07.2025

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024