Розвиток технологій
Ми часто говоримо про те, що технології розвиваються неймовірними темпами. Для того щоб усвідомити, наскільки швидко це відбувається, згадайте дві дати: 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 на МКС, вперше за майже десятиліття, коли люди вийшли на орбіту Землі з території США.
Активність приватних компаній до космосу виразно зіграла величезну роль у відродженні інтересу до космосу і його дослідженню.
Можливо, там де не справляється державна організація, досягне успіху приватна? І ми ще побачимо видобуток корисних ресурсів в космосі або регулярні туристичні польоти?
Спостерігаючи за успіхами галузі, починаємо в це вірити.