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

Как программировать в стиле 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-х). 

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

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

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

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

21.11.2024

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

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

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024