Развитие технологий
Мы часто говорим о том, что технологии развиваются невероятными темпами. Для того чтобы осознать, насколько быстро это происходит, вспомните две даты: 1909 год — год полета братьев Райт на самолете, и 1969 год — высадка человека на Луну. Между этими событиями прошло всего 60 лет!
Задумайтесь на мгновение, как далеко продвинулись технологии за последние годы. Во время высадки на Луну то, что мы сейчас с трудом можем назвать «компьютером», управляющие компьютеры Аполлона (AGC), весили более 30 килограмм каждый, а характеристики их производительности были намного меньше, чем у любого современного мобильного телефона.
У AGC было 2048 слов RAM памяти, которые использовались для хранения временных данных. Каждое слово состояло из 16 битов, каждый из которых был равен нулю или единице. Это означает, что у компьютера Аполлона было 4096 байт оперативной памяти. А современные смартфоны имеют и 4 ГБ оперативной памяти, и больше.
Процессор AGC работал с тактовой частотой всего 0,043 МГц, в то время как iPhone X работает на частоте 2490 МГц, что в 100000 раз больше вычислительной мощности.
Зарождение разработки ПО для исследования космоса
Так откуда же взялся весь код, использовавшийся для миссии Аполлон-11?
В то время таких технологий просто не существовало. Принципы проектирования, разработанные для AGC лабораторией Массачусетского технологического института под руководством Чарльза Дрейпера в конце 1960-х годов, стали основополагающими для разработки программного обеспечения — в частности, для проектирования более надежных систем, основанных на асинхронном программном обеспечении, планировании приоритетов и тестировании. Когда были определены требования к конструкции AGC, необходимого программного обеспечения и методов программирования не существовало, поэтому его пришлось разрабатывать с нуля.
Ученые создали оригинальную систему кодирования (получившую название «Core Rope Memory»), с помощью которой наматывали провода через магнитопроводы. Если провод наматывали вокруг сердечника, это был «0», если провод проходил через сердечник, это было «1».
Забудьте об оперативной памяти или дисковых накопителях; на Аполлоне память была буквально вышита и почти неразрушима, но даже один провод не на своем месте приведет к сбоям в работе бортовых навигационных систем компьютера и может иметь катастрофические последствия.
Как программное обеспечение спасло миссию Аполлон-11
На фотографии изображена Маргарет Гамильтон, руководительница группы разработчиков программного обеспечения для полета Аполлона-11, стоящая рядом со стопкой исходного кода от AGC. Маргарет придумала термин «программная инженерия» при разработке этих систем в NASA. Ее уникальный подход к разработке программного обеспечения, возможно, спас всю миссию Аполлон-11.
Когда Нил Армстронг и Базз Олдрин пытались приземлиться на Луну, один из радаров, который на самом деле не должен был участвовать в посадочной части миссии, начал наводнять компьютер искаженными данными. По некоторым данным, астронавты случайно оставили его включенным, что привело к срабатыванию сигналов тревоги о перегрузке компьютера.
Сообщения об ошибках появлялись из-за того, что компьютер был перегружен, ему было поручено выполнить серию ненужных вычислений, когда, по сути, больше всего было необходимо посадить модуль на поверхность Луны.
К счастью, Маргарет и ее команда использовали асинхронный исполнительный механизм, который позволил компьютеру отбрасывать некритические задачи при перегрузке. Благодаря этому компьютер смог обнулить данные радара и сосредоточиться на расчетах для безопасной посадки. Можно утверждать, что дальновидность разработчиков стала той самой причиной, по которой миссия Аполлон-11 удалась, и астронавты благополучно вернулись домой.
Какие языки программирования использует NASA
Было бы интересно узнать, как сильно изменилось программирование времен посадки на Луну в NASA, но NASA является правительственным агентством США, а потому об этом нет точных официальных данных.
Тем не менее, кое-что о разработке в стенах NASA известно.
HAL/S
Например, что агентство использует HAL/S (High-order Assembly Language/Shuttle) — язык, предназначенный для аэрокосмических систем реального времени. Его использовали во многих космических проектах США с 1973 года, наиболее известно его применение в программе Space Shuttle (примерно 85% программного обеспечения Shuttle написано на HAL/S).
Хотя язык разработан в первую очередь для программирования бортовых компьютеров, он достаточно общий, чтобы удовлетворить почти все потребности в производстве, проверке и поддержке аэрокосмических и других приложений реального времени.
Тремя ключевыми принципами при разработке языка были надежность, эффективность и машинная независимость. HAL/S был разработан, чтобы не включать некоторые конструкции, которые считались причиной ошибок. Например, нет поддержки динамического распределения памяти.
Ниже приводится простая программа HAL/S. Каждая программа начинается с помеченного оператора PROGRAM; метка состоит из идентификатора, за которым следует двоеточие. Все переменные должны быть объявлены в группе DECLARE, которая предшествует любым исполняемым операторам. Каждая программа заканчивается ограничивающим оператором CLOSE.
SIMPLE: PROGRAM;
C CODE IN THIS TYPEFACE IS
C HAL/S SOURCE
DECLARE PI CONSTANT (3.14159266);
DECLARE R SCALAR;
READ(5) R;
WRITE(6) PI R**2;
CLOSE SIMPLE;
Python
Один из основных подрядчиков NASA по поддержке шаттлов, United Space Alliance разработал систему автоматизации рабочего процесса (WAS) на языке Python.
«Python позволяет нам решать сложные программы, такие как WAS, не увязая в языке», — говорит Робин Фридрих, старший инженер проектов в США. Проект WAS был задуман как ответ на значительный пробел в способах планирования миссий шаттлов и управления данными.
«Исторически, — говорит Фридрих, — эти данные передавались на бумаге, а в последнее время — при обмене файлами данных. Но оба этих подхода подвержены ошибкам. Выявление и исправление ошибок, а также ответ на частые запросы на изменение могут затруднить такую систему».
По словам Фридриха, «Python великолепен также в том, что касается сопровождения кода... Без большого количества документации трудно понять, что происходит в программах на Java и C++, и даже с большим количеством документации Perl просто трудно читать и поддерживать».
Еще один аспект Python, который Фридрих счел чрезвычайно важным — это простота обучения. «Для любого программиста освоение Python — это недельная задача, потому что все просто ведет себя так, как вы от них ожидаете». Он противопоставляет Python C++ и Java, которые, по его словам, требуют от хорошего программиста месяцев, чтобы стать профессионалом.
Более того, еще одно свидетельство того, что NASA использует Python, можно найти в каталоге открытого кода агентства, который содержит более 500 проектов.
На этой странице можно найти множество проектов, написанных на Python. Они варьируются от исследований, связанных со звездами, планетами, атмосферой, аэронавтикой и дистанционным зондированием.
Рекомендуем курс по теме
Космическая гонка продолжается
Начало 20 века ознаменовалось стартом гонки миллиардеров. Между 2000 и 2004 годами появились три частные аэрокосмические компании, которые снова обратили взгляд общественности на космос.
Джефф Безос, Илон Маск и Ричард Брэнсон запустили Blue Origin, SpaceX и Virgin Galactic соответственно. Они наняли тысячи инженеров, ученых, программистов и разработчиков программного обеспечения, чтобы создать новое поколение технологий для исследования космоса. Впервые частные компании смогли конкурировать с NASA.
У каждой компании есть уникальная цель: Blue Origin стремится перенести тяжелую промышленность с Земли в космос, SpaceX стремится снизить стоимость космических путешествий с помощью многоразовых ракет, а также возможную колонизацию Марса, а Virgin Galactic хочет привлечь туризм в космос.
Каждая из этих компаний находится на разных этапах успеха в своем стремлении достичь звезд.
11 июля 2021 Ричард Брэнсон на ракетоплане Unity своей компании Virgin Galactic достиг высоты в 90 километров над поверхностью Земли. Экипаж корабля Unity находился в состоянии невесомости около шести минут, а сам полет занял около часа.
20 июля 2021 Джефф Безос успешно слетал в космос на корабле New Shepard своей компании Blue Origin, достигнув высоты 107 км и поставив 4 рекорда Книги Гиннесса:
- Уолли Фанк в возрасте 82 лет стала самым пожилым человеком, отправившимся в космос
- Оливер Дэмен в возрасте 18 лет — самым молодым
- Джефф и Марк Безосы стали первыми братьями, отправившиеся в космос одновременно
- New Shepard стал первым суборбитальным космическим кораблем, совершившим коммерческий рейс
16 сентября 2021 года компания Илона Маска SpaceX завершила свою первую частную космическую миссию «Inspiration4» — орбитальный космический полёт, все участники которого являются космонавтами-любителями. С ее запуском число людей, одновременно находящихся на околоземной орбите, достигло 14 — это новый рекорд.
Места для участников миссии оплатил еще один миллиардер — Джаред Айзекман. Главная цель миссии, которую инициировал Айзекман — собрать 200 миллионов долларов для больницы святого Иуды. Кроме того, участники миссии планируют исследовать влияние невесомости на неподготовленный человеческий организм.
Можно утверждать, что все эти успешные запуски знаменуют окончательный переход к новой модели работы — закупке услуг по транспортировке астронавтов в космос у частных подрядчиков. Старая модель — владение и оперирование собственным оборудованием, например, Шаттлами, уходит в прошлое.
Особенно вспоминая триумф компании SpaceX в мае 2020 года — когда корабль Crew Dragon доставил двоих астронавтов NASA на МКС, впервые за почти десятилетие, когда люди вышли на орбиту Земли с территории США.
Активность частных компаний к космосу определенно сыграла огромную роль в возрождении интереса к космосу и его исследованию.
Возможно, там где не справляется государственная организация, преуспеет частная? И мы еще увидим добычу полезных ресурсов в космосе или регулярные туристические полеты?
Наблюдая за успехами отрасли, начинаем в это верить.