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

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

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

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023