Was ist die beliebteste Programmiersprache im Weltraum?

Zur Verdeutlichung
- schließt Maschinencode ein, der von einer Programmiersprache auf der Erde generiert wird.
- „im Weltraum“ umfasst alles, was sich im Orbit und im Weltraum befindet.
- Besondere Erwähnung der Programmiersprache auf Geräten im Weltraum erwünscht.
- Besondere Erwähnung jeglicher Codierung durch Astronauten im Weltraum erwünscht.
- 'Beliebt' = nach Zählung der Anzahl der Satelliten, die nicht am meisten 'beliebt' sind. obwohl eine Diskussion darüber willkommen ist.

Diese Frage folgt einer Lektüre der hervorragenden Antworten auf meine frühere Frage Was war die erste Programmiersprache im Weltraum?

Wird "am beliebtesten" problematisch sein? Meinst du den, den die Leute am meisten mochten, oder am häufigsten/häufigsten?
Was wäre, wenn Sprache A auf dem bei weitem größten Anteil von Satelliten vorhanden ist, es aber bei weitem die meisten Linien von Sprache B im Weltraum gibt und Programmierer Sprache C bei weitem am meisten mochten?
Mein OP zur Verdeutlichung bearbeitet: nach Anzahl der installierten Satelliten. Am meisten interessiert mich, welche Sprachen verwendet werden und ob sich das seit den ersten Satelliten geändert hat.
Danke, sieht besser aus. Sie könnten erwägen, diese Erklärung von einem Kommentar zurück in die Frage selbst zu verschieben. Es ist besser, wenn Fragen keine Erklärungen in Kommentaren benötigen. Je mehr Mühe Sie sich innerhalb der Frage geben, um zu beschreiben, wonach Sie suchen, desto besser.
"wird Maschinencode enthalten, der von einer Programmiersprache auf der Erde generiert wird." - Diese Klarstellung verwirrt mich. Die meiste Software wird am Boden kompiliert und vor dem Start auf den Satelliten geladen. Ich würde vermuten, dass die meisten Patches auch vor Ort kompiliert werden. Wenn Sie also den Maschinencode einbeziehen, stellt sich die Frage wirklich: Welche Prozessorarchitektur ist im Weltraum am beliebtesten (ARM vs. PowerPC vs. x86 usw.).
@superdesk Es hat mich anfangs auch verwirrt, aber ich bin mir ziemlich sicher, dass er meint, dass wenn ein Programm in C geschrieben und in Maschinencode kompiliert wird, der dann in den Weltraum gesendet wird, dies immer noch als "C im Weltraum" zählt.
Bei den meisten Projekten wird nicht wirklich über die Softwareseite gesprochen, daher kann ich nur über Dinge sprechen, an denen ich persönlich in irgendeiner Weise beteiligt war, was eine ziemlich begrenzte Auswahl ist. Trotzdem würde ich sagen, schrecklich schreckliche Spaghetti Fortran ist die beliebteste Wahl.
Realistisch gesehen sollten die wenigen Laptops, auf denen Windows läuft, mehr Code enthalten als alle Raumfahrzeugcomputer zusammen, wenn man bedenkt, dass in der Industrie bewährte Technologie und Einfachheit bevorzugt werden.

Antworten (4)

Ich schrieb Code, der auf 3 Raumfahrzeugen flog, die zum Mars flogen, eine zum Mond, eine zu einem Kometen und zurück, und ein paar Satelliten in der Erdumlaufbahn, von denen der letzte vor etwa 10 Jahren war. Alle verwendeten C.

Es ist natürlich nicht die einzige Sprache da draußen, aber sie ist beliebt, weil der Eindruck entsteht, dass Code mit C kleiner und schneller gemacht werden kann, ohne den Overhead, der für eine verwaltete Sprache erforderlich ist.

Vielleicht haben sich die Dinge in den letzten Jahren geändert. Hoffentlich.

Ich habe kein Wissen aus erster Hand, aber ich vermute, dass die ersten Satelliten Assemblersprache verwendeten – kleiner, knapper Code auf langsamen Prozessoren mit wenig RAM.

Nun, die ersten Satelliten waren ungefähr fünfzehn Jahre älter als die ersten Versionen von C ... Sogar das Apollo-Programm befand sich ziemlich im Abwicklungsmodus, als die frühen Arbeiten an C durchgeführt wurden, und das war nicht vor 1978 (sagt Wikipedia ), dass The C Programming Language veröffentlicht wurde.

C scheint eine gute Vermutung zu sein: C ist beliebt für eingebettete Systeme, Satelliten sind eingebettete Systeme, daher ist C beliebt für Satelliten. Es gibt viele Lücken, die man in diese Argumentation stecken kann, und natürlich wurden viele Sprachen mit unterschiedlichem Popularitätsgrad verwendet. In Ermangelung einer Übersicht über die verwendeten Sprachen, die diese Frage entscheidend beantworten würde, können die Beispiele hier einen gewissen Kontext geben.

Denken Sie daran, dass eine beträchtliche Anzahl von Satelliten keine öffentlich zugänglichen Informationen haben, wie z. B. Militär- und Spionagesatelliten. Man könnte vermuten, dass Ada populärer sein könnte, als eine allgemeine Umfrage vermuten lässt, da es in der Vergangenheit beim US-Militär weit verbreitet war. Weitere Informationen zu Ada finden Sie in dieser verwandten Frage .

Ein spezifisches Beispiel für die Verwendung von C: Das Core Flight System der NASA ( cFS Homepage ) ist in C geschrieben und wird derzeit auf mehreren Missionen verwendet ( verwandte Frage ).

Kleinere Plattformen wie CubeSats können auch die Sprachen in der Weltraumverteilung ändern: Es gibt viele von ihnen und sie haben eine viel höhere Risikotoleranz (und eine geringere Erfolgsquote). Aus dem LightSail-Papier , das auf der SmallSat 2015 vorgestellt wurde, „LightSail FSW (Software und Firmware) ist in der Programmiersprache C geschrieben.“ LightSail führte auch eine Linux-Distribution aus, die wiederum in C geschrieben war.

Assembler war zumindest historisch gesehen auch eine beliebte Sprache, so Ron Garret, der 1988 Folgendes über die Arbeit am JPL schrieb: "Raumfahrzeuge wurden hauptsächlich in Assembler oder, wenn Sie wirklich radikal waren, in Ada programmiert." Der Artikel mit diesem Zitat dokumentiert die Arbeit an Remote Agent, einem experimentellen LISP-Programm, das den Satelliten Deep Space 1 während seiner Mission zwei Tage lang kontrollierte.

Ah... Ada .
Aus eigener Erfahrung weiß ich, dass Fortran auch ziemlich beliebt ist. Ich denke, C schlägt es aber.
Die Frage ist in dieser Hinsicht etwas unscharf, aber ich denke, Punkt 1 in der Frage zusammen mit einigen Kommentaren des OP würde viele Ihrer Beispiele disqualifizieren, da der C-Code auf der Erde kompiliert würde und was tatsächlich installiert ist Das Raumschiff wäre Maschinencode, also ist der C-Code nicht wirklich "im Weltraum". Es gibt einige Ausnahmen, z. B. den C-Code, der auf das Pathfinder-Raumschiff hochgeladen wurde, um im C-Interpreter seines VXWorks-Betriebssystems ausgeführt zu werden, um das Prioritätsinversionsproblem zu beheben.
Ich sehe die Kommentare von aspiringGuru nicht, die Punkt 1 verdeutlichen ... Ich selbst habe kommentiert und um Klärung gebeten. Einen Moment zurücktreten: Das Zählen der vom Compiler generierten Assembly anstelle der Sprache, in der die Quelle geschrieben wurde, 1) folgt nicht der konventionellen Weisheit und 2) macht die Frage viel weniger interessant.
@ArthurDent Welche Art? Sicher, Fortran 2000 schlägt die Hose aus C, aber ich programmiere lieber in C als in Fortran IV!!
Die Leute erwähnen Fortran immer wieder, aber ich habe keine persönliche Erfahrung oder kenne keine bestimmten Missionen. Ist es noch weit verbreitet? Fühlen Sie sich frei, meine Antwort zu aktualisieren!
@WetSavannaAnimalakaRodVance, es ist ein ziemlich alter Code, ich glaube, es war Fortran 90. Zum Glück musste ich aber nicht wirklich damit arbeiten.

Obwohl dies keine direkte Antwort auf Ihre Frage ist, könnte es sich lohnen, die Attribute von Programmiersprachen in Bezug auf Raumfahrtanwendungen zu berücksichtigen.

C ist eine gute Wahl, weil es eine Hochsprache ist, die immer noch "nah an der Hardware" ist (scheint wie ein Paradoxon, ist es aber nicht). Wie bereits erwähnt, wird es häufig in eingebetteten Systemen verwendet, und Satelliten/Raumsonden sind eingebettete Systeme. Aus denselben Gründen wird es auch in der Luftfahrt (Avionik) verwendet. Compiler erzeugen effizienten Laufzeitcode. Unter der Annahme, dass der Entwickler angemessene Praktiken befolgt, wird die Laufzeit vorhersehbar und deterministisch ausgeführt, was für die Testbarkeit und Zuverlässigkeit von entscheidender Bedeutung ist. Code kann "nachweislich korrekt" sein.

Java und C# sind Weiterentwicklungen von C (über C++), die die Entwicklerproduktivität dramatisch verbessern. Sie können in unkritischen Raumfahrtanwendungen Verwendung finden, sind jedoch ungeeignet für hochzuverlässige eingebettete Systeme wie autonome Raumfahrzeuge oder sicherheitskritische Systeme an Bord bemannter Raumfahrzeuge. Sie verwenden Speicherverwaltungs-/Garbage-Collection-Schemata, die das Laufzeitverhalten nicht deterministisch und die Ausführungszeiten unvorhersehbar machen. Während es einfacher ist, komplexere und ausgefeiltere Anwendungen in neueren Sprachen wie Java und C# zu schreiben als in C, ist es viel schwieriger zu garantieren, dass der Code niemals fehlschlägt.

Sie können davon ausgehen, dass andere Sprachen mit ähnlichen Überlegungen zu Sprachmerkmalen und -attributen verwendet oder nicht verwendet werden.

Größtenteils wird die Programmiersprache C die Sprache der Wahl für eine Mehrheit von Raumfahrzeugen sein. Es hat ein langes Erbe als vertrauenswürdige Sprache für Weltraummissionen. Ich würde argumentieren, dass C++ aufgrund seiner Nullkosten-Abstraktionen und Typsicherheit die bessere Wahl ist. Aus genau diesen Gründen verwenden wir C++ für unsere Flugsoftware. Ich denke, ein Grund, warum C immer noch so weit verbreitet ist, nicht nur in Raumfahrzeugen, sondern auch in der eingebetteten Welt im Allgemeinen, ist, dass die Ingenieure oft Angst vor Abstraktionen haben. Aber es sind diese Abstraktionen, die uns einen sichereren, zuverlässigeren und lesbareren Code gewähren. Infolgedessen habe ich ein erhöhtes Interesse und eine zunehmende Anwendung von C++ für Raumfahrzeuge festgestellt. Sehen Sie sich diesen großartigen Vortrag über die Verwendung von C++ für das Autonomiesystem des Rovers Curiosity an.

Schließlich ist hier ein großartiges Video von einem prominenten Mitglied der C++-Community, Jason Turner, über die Verwendung von modernem C++14 in einem Commodore 64 ohne Overhead. Hier demonstriert er, dass C++ keine langsame, aufgeblähte Sprache ist, wie viele Embedded-Entwickler glauben, hauptsächlich aufgrund von Aussagen aus den 90er Jahren.