O programistach pracujących w sektorze kosmicznym mało się mówi, jako osoby zazwyczaj pozostają jednak w tle. A szkoda, bo bez nich lotów w kosmos – załogowych czy nie – by po prostu wcale nie było.
Jedna bohaterka
To jedno z najbardziej kultowych zdjęć z ery pierwszego wyścigu kosmicznego. Młoda długowłosa kobieta uśmiecha się do obiektywu, w rękach trzymając sznur posklejanych kartek mniej więcej swojej wielkości. Kobieta to Margaret Hamilton – główna deweloperka oprogramowania lotu Apollo – a na kartkach wydrukowano napisany przez nią i jej zespół kod programu nawigacyjnego, dzięki któremu człowiek zdołał dolecieć na Księżyc.
Dzisiaj Hamilton to instytucja kulturalna: za swoje osiągnięcia otrzymuje kolejne nagrody, Google jej wkład w misję Apollo celebrowało na 50. rocznicę lądowania na Księżycu, a w 2017 r. została uwieczniona w... zestawie klocków LEGO.
Programista pracuje w tle
Czasy, w których Amerykanka zaczynała karierę, mocno różniły się od dzisiejszego stanu rzeczy. Informatyka nie była dziedziną, którą można było studiować na uczelni wyższej, a zanim Hamilton dostała pracę programistki na MIT, jej ambicją było zostać profesorem matematyki.
Nie sposób jednak nie zauważyć, że dzisiejszy rozgłos wokół Margaret Hamilton jest raczej wyjątkiem. Programista to cichy bohater kosmicznej historii – choć bez jego pracy historia ta skończyłaby się jeszcze zanim się na dobre zaczęła.
Potraficie sobie wyobrazić, żeby jakaś misja ruszyła w drogę bez odpowiedniego oprogramowania pokładowego? Bez możliwości kontaktu ze stacją naziemną, przesyłania na Ziemię danych technicznych i naukowych czy wreszcie – bez sposobu na kierowanie działaniem statku czy satelity. Nie da się ukryć, że byłoby to... trudne. A mimo to, kosmiczni programiści do bohaterów popkultury raczej nie należą.
Pierwsze polskie oprogramowanie na orbicie
Kilka tygodni temu z Gujany Francuskiej na orbitę wystartował satelita technologiczny OPS-SAT. To dość ciekawy projekt z kilku powodów. Przede wszystkim, jest ważny dla polskiego sektora kosmicznego: po raz pierwszy bowiem na orbicie uruchomione zostało oprogramowanie pokładowe zaprojektowane i wykonane w naszym kraju.
OPS-SAT to również szczególny satelita, pełniący rolę laboratorium do testowania nowego oprogramowania w warunkach „bojowych”, na orbicie. – Dzięki temu różne podmioty w przyszłości będą mogły powiedzieć, że ich rozwiązanie zostało przetestowane w misji OPS-SAT i działało – tłumaczy w rozmowie z INNPoland.pl Krystyna Macioszek, inżynier oprogramowania pokładowego w warszawskiej firmie GMV, koordynująca udział firmy w programie OPS-SAT.
Sporym problemem dla ewentualnego nowego oprogramowania, które mogłoby polecieć w kosmos, jest bowiem właśnie bariera niezwykle kosztownych i wymagających testów. Udany udział w misji testowej będzie dla nich sporą pomocą.
– To już jest poważny argument przemawiający za tym, żeby tej konkretnej technologii dać w przyszłości szansę polecieć w osobnych misjach jako nominalne oprogramowanie. Eksperyment na OPS-SAT ma być dla firmy dowodem na to, że jej oprogramowanie zadziałało w przestrzeni kosmicznej i nie wymaga kolejnych kosztownych testów sprawności – dodaje.
Musi być niezawodne
Skorzystałam z okazji, żeby przedstawicielkę GMV zapytać o kilka rzeczy związanych z pracą "kosmicznej programistki". A przede wszystkim: o to, czym w sumie różni się programowanie dla kosmosu od tego w innych branżach?
– Oczekiwania wobec oprogramowania kosmicznego znacząco różnią się od tych stawianych oprogramowaniu wykorzystywanemu w innych branżach – zaznacza moja rozmówczyni. – Oczywiście niektóre elementy mogą się powtarzać. Na przykład w bankowości wymagania, zwłaszcza w zakresie niezawodności działania, są również bardzo duże, podobnie jak w przypadku sektora wojskowego – tłumaczy.
Na pewno jednak kosmicznemu programowaniu daleko jest np. do tworzenia stron internetowych.
– Przy tworzeniu serwisu internetowego niezawodność nie jest kryterium kluczowym, sam projekt może być rozwijany i modyfikowany w czasie, a ewentualne problemy w jego funkcjonowaniu stosunkowo łatwo naprawić. Jeśli chodzi o software satelitarny, możliwości naprawy oprogramowania są wyjątkowo ograniczone. Dlatego to, nad czym pracujemy, to musi być projekt od a do z skończony i wielokrotnie przetestowany na każdym etapie jego tworzenia – podkreśla Krystyna Macioszek.
Niekoniecznie najnowsze osiągnięcia
Właśnie koszty – samego testowania, jak i całych misji – są kluczowe dla specyfiki sektora kosmicznego. W oprogramowaniu pokładowym niekoniecznie znajdziemy najnowsze programistyczne trendy i osiągnięcia.
– W oprogramowaniu satelitarnym – a nawet powiem więcej: w całym przemyśle kosmicznym nacisk kładzie się na wykorzystywanie technologii sprawdzonych, a niekoniecznie najnowszych – stwierdza Macioszek. – To, co jest wysyłane w misjach musi być za każdym razem dokładnie przetestowane. A ponieważ testy ogólnie są bardzo kosztowne i zajmują dużo czasu,często wybiera się rozwiązania, które już poleciały w innych projektach i gwarantują poprawność działania – dodaje.
Zamiłowanie do tradycji widoczne jest też w językach programowania, w których kod jest pisany.
– Głównie używany jest język C lub ADA – obydwa te języki są bardzo dobrze sprawdzone i ustandaryzowane – tłumaczy moja rozmówczyni.
Nawet jednak w ich przypadku nie są wykorzystywane wszystkie możliwości.
– Na pewno nie ma mowy o zastosowaniu obiektowości w żadnym z nich. Dodatkowo w przypadku języka C nie korzystamy także z dynamicznej alokacji pamięci (powszechnie stosowanej w rozwiązaniach, w których niezawodność nie jest wymaganiem tak istotnym, jak w projektach kosmicznych) – dodaje .
Dlaczego tak tradycyjnie?
– W wyborze języka programowania chodzi przede wszystkim o jego niezawodność – podkreśla Krystyna Macioszek. – Niektóre pisane przez nas kody mogą wydawać się rozbudowane i za długie, ale w branży kosmicznej nie możemy sobie pozwolić na żadne skróty. Wszystko musi być dokładnie zadeklarowane i opisane.
Kod programowania satelitarnego musi być bardzo czytelny i klarowny. Do tego stopnia, że programistów obowiązują nawet konkretne wymogi dotyczące składni. – Chodzi o to, by nie używać określonych zapisów, ponieważ są nieczytelne – tłumaczy moja rozmówczyni.
Nie tylko komputery
Praca kosmicznego programisty to jednak nie tylko siedzenie przed komputerem. Jak każda osoba pracująca w kosmicznym biznesie, powinien on być wszechstronny.
– W naszej firmie (i chyba w ogóle na rynku kosmicznym) zdecydowana większość pracowników to inżynierowie po uczelniach technicznych – zauważa Krystyna Macioszek. – Wynika to z tego, że oprócz pracy nad działką software bardzo często mamy też do czynienia z różnymi rozwiązaniami hardware, w tym np. elektroniką związaną z podsystemami kosmicznymi. Myślę, że stąd może wynikać to zapotrzebowanie na inżynierów w naszej branży – twierdzi.