24.08.20224 min

Maciej OlanickiRedakcja Bulldogjob

Na Teleskopie Webba działa… JavaScript

Dowiedz się, jak to się stało, ze język służący do budowy aplikacji webowych aktualnie działa 1,5 mln kilometrów od Ziemi.

Na Teleskopie Webba działa… JavaScript

JavaScript działa na urządzeniach konsumenckich niemal wszędzie – w przeglądarkach, na pulpitach (Atom), na serwerach (Node.js, a ostatnio także Bun) i na urządzeniach mobilnych (Progressive Web Apps). JS jest kluczowym narzędziem w rozwoju aplikacji przeglądarkowych, co determinuje jego wykorzystanie na wszystkich wymienionych „platformach”.

Nikt chyba jednak na poważnie nie oczekuje, że JavaScript będzie wykorzystywany w zastosowaniach badawczych, w środowiskach enterprise, centrach danych czy mainframe’ach. Słowem w zastosowaniach, które możemy roboczo nazwać „poważnymi”, mającymi inne cele niż za pomocą urządzeń konsumenckich zbierać i spieniężać dane użytkowników. 

A jednak. Okazuje się, że JavaScript wykorzystywany jest przez przyrząd uważany na ogół zgodnie za jedno z największych dokonań technicznych, jakie ludzkość przedsięwzięła w ciągu ostatnich dekad. Tak, JavaScript jest wykorzystywany przez Teleskop Webba zawieszony w przestrzeni kosmicznej 1,5 mln km od Ziemi. 


Moduł zintegrowanego przyrządu naukowego

Informacje o tym, że JavaScript działa na komputerach zainstalowanych na teleskopie Webba, czerpiemy z opublikowanej w ostatnim czasie przez NASA pracy naukowej, która stanowi de facto raport o aktualnym stanie teleskopu. Dzięki niej wiemy więcej na temat tego, jak działa jeden z komponentów teleskopu, a konkretniej Integrated Science Instrument Module.

Jak czytamy na stronach NASA, Integrated Science Instrument Module to „serce Teleskopu Webba”. Składa się na niego opracowany na Uniwersytecie Arizony specjalnie na potrzeby misji przyrząd fotograficzny działający w zakresie bliskiej podczerwieni (0,8−2,5 μm), zbudowany przez Europejską Agencję Kosmiczną spektrograf umożliwiający fotografowanie widm ciał niebieskich. Znajdziemy tam również kamerę i spektrograf działający w zakresie średniej podczerwieni (2,5−25 μm) oraz czujnik Fine Guidance Sensor pozwalający na wykonywanie zdjęć punktów precyzyjnie wyznaczonych przez kolejny jeszcze jeden spektrograf bliskiej podczerwieni, tym razem typu bezszczelinowego. 


ISIM podczas testów grawitacyjnych w 2014 roku.
Źródło: NASA, domena publiczna


Oczywiście największym i najtrudniejszym przedsięwzięciem było przetransportowanie i rozłożenie ogromnego lustra Teleskopu Webba i to ono zwróciło najbardziej uwagę opinii publicznej. Nic dziwnego, poziom precyzji niezbędny w procesie jego rozkładania zakrawał na szaleństwo. Widać jednak, że komponent ISIM nie bez powodu nazywany jest sercem całego teleskopu. Rodzi się więc pytanie – co tam u diaska robi JavaScript?


JavaScript w kosmosie

Integrated Science Instrument Module wykorzystuje JavaScript do komunikacji pomiędzy dwoma komponentami oprogramowania – Operations Scripts System i oraz ISIM Flight Software Services. Po stronie tego drugiego działa odpowiednio dostosowany do potrzeb teleskopu silnik JavaScript – prawdopodobnie jest to archaiczny silnik Nombas (więcej o nim za chwilę) z modyfikacjami zapewniającymi kompatybilność z autorskimi rozszerzeniami języka. 



Jak widzimy na schemacie, w zasadzie całość operacji przeprowadzanych na ISIM ma postać skryptów napisanych w JavaScript, które są generowane po otrzymaniu odpowiedniej komendy z OSS. Polecenia te są konwertowane na skrypty i w ten sposób przesyłane do silnika JS, który następnie przetwarza je i wysyła do procesora skyptów. Dalej polecenie ląduje w ISIM Flight Software Services. Tam może zarządzać działaniem takich komponentów, jak telemetria, usługa czasu czy wykonywać operacje na plikach.

Można więc powiedzieć, że JavaScript to swoisty lingua franca Teleskopu Webba – pozwala się komunikować zróżnicowanym i niezależnym modułom. Takie spostrzeżenie nie odpowiada nam jednak kluczowe pytanie: dlaczego właśnie JavaScript? Dlaczego nie wykorzystano czegoś szybszego: C, C++, Rusta?


Zaszłości i archaizmy

Aby odpowiedzieć na to pytanie, należy wziąć pod uwagę czas, jaki potrzebny jest na realizację tak gigantycznego przedsięwzięcia, jakim jest uruchomienie Teleskopu Webba. Prace nad oprogramowaniem dla niego rozpoczęły się w 2004 roku. Wówczas dużą popularnością cieszył się ScriptEase uważany za potężniejszy i bardziej zaawansowany wariant JavaScript. Jego relacje z JavaScript można porównać do dzisiejszych pomiędzy JS a TypeScriptem. 

Do prac nad oprogramowaniem teleskopu zaczęto używać właśnie tego języka oraz SDK Nombas ScriptEase – duet ten miał realizować już u zarania historii JS-a kluczowe zadanie: JavaScript docelowo ma działać wszędzie. W NASA wzięto sobie to wówczas do serca tak bardzo, że zdecydowano się postawić właśnie na ten język w pracach nad oprogramowaniem dla teleskopu. Nombas ScriptEase 5.00e przestał być rozwijany w 2003 roku, ale prace nad Teleskopem Webba postępowały. O zmianach w narzędziach programistycznych nie mogło być mowy. 

W rezultacie drogą ewolucji to najpewniej właśnie silnik Nombas jest wykorzystywany przez oprogramowanie teleskopu. Większe więc jest prawdopodobieństwo, że to nie czysty JS działa w kosmosie, lecz właśnie Nombas/ScriptEase. Nie chodzi więc o to, że NASA świadomie wybrała JavaScript, lecz o to historyczną zaszłość, archaizm, z którego później trudno było się wycofać. Po publikacji raportu przez NASA głos zajął współtwórca ScriptEase i Nombasa, Brent Noorda, który z nieskrywaną dumą tak podsumowuje sprawę: 

Nie chcesz używać najnowszego i najmodniejszego oprogramowania, dlatego, że jest najnowsze i najmodniejsze, tylko po to, by znaleźć się w sytuacji, gdy wystrzeliwujesz astronautów na satelitę, milion mil w kosmos i musisz nacisnąć ctrl-alt-del.

<p>Loading...</p>