SpaceX zrobił AMA w serwisie reddit (Ask Me Anything) odnośnie tego, jakich technologii używa ta prywatna firma w USA, która powoli przejmuje tamtejszy przemysł kosmiczny.

Napiszę tutaj szybkie streszczenie, aby zwyczajnie nie lać wody, bo pewnie tego byście właśnie chcieli. Chętni mogą wejść na serwis reddit i przeczytać odpowiedzi zespołu, który robił to AMA, natomiast dla czytelników mojego serwisu mam szybkie techniczne streszczenie. Postaram się po prostu zawrzeć najważniejsze informacje, pryznajmniej według mnie, bez zbędnych komentarzy.

 

  1. Do oprogramowania odpowiedzialnego za kwestie lotów używają C/C++

 

  1. Do obsługi UI używają HTML, JavaScript, CSS oraz Chromium (tu trochę zgaduję: prawdopodobnie za interfejs robi electron lub coś na jego wzór/przeróbka)

 

  1. Do testowania, automatyzacji i wszelkiego rodzaju tooli jest używany Python

 

  1. Używają swojej dystrybucji Linux z patchem CONFIG_PREEMPT_RT, prawdopodobnie w celu wymuszenia pewnego stopnia determinizmu.

 

  1. SpaceX zwraca uwagę na latency w swoim sofcie, m.in. przez unikanie alokacji na heap (stercie). Języki programowania, które najlepiej to “wspierają” to właśnie C, C++, ale także np. Rust (nie jest używany)

 

  1. W rakietach/statkach SpaceX jest dużo komputerów zbudowanych dla jednego konkretnego celu - single responsibility, które działają w synchronizacji czasowej z innymi (za pomocą znanych praktyk + jakichś ich własnych). Praktycznie wszystko może być wyrażone w kontrolnej pętli czasu rzeczywistego na zasadzie: przeczytaj dane z sensorów, wykonaj decyzję na podstawie tych danych i poprzednich danych

 

  1. Wiele komputerów/systemów/czujników jest zwielokrotnionych - ze względu na promieniowanie w wyższych warstwach atmosfery i w przestrzeni kosmicznej, nieznane błędy z tego tytułu są spodziewane dlatego się systemy zwielokrotnia, aby mieć drugą, trzecią, czwartą “opinię” o sytuacji, itp. Plus dochodzą restrykcyjne testy z naciskiem “by coś się zepsuło”.

 

  1. Wśród edytorów tekstu/kodu przeważa VSCode

 

  1. Oprogramowanie sterujące jest w większości przypadków jednowątkowe dla uniknięcia wielu problemów związanych z synchronizacją. Nie oznacza to, że wszystko dzieje się jednowątkowo - to oprogramowanie działa na instancjach z Linuksem, a w systemie w tym samym czasie sporo się dzieje.

 

  1. Oczywiście nie podają żadnych dodatkowych informacji na temat algorytmów odpowiedzialnych za lądowanie np. w F9, co jest zrozumiałe z wielu względów.

 

  1. Rusta tam nie ma, podobnie jak ML (nazywana popularnie i błędnie sztuczną inteligencją). Nie oznacza to, że np. w przyszłości te technologie do SpaceX nie zawitają.