Processus de développement de code pour la mission Voyager?

29

Voyager 1 a atteint l'espace interstellaire en août 2012 et est l'objet artificiel le plus éloigné qui existe. Lancé peu de temps après son vaisseau spatial jumeau, Voyager 2, en 1977, Voyager 1 a exploré les systèmes jovien et saturnien en découvrant de nouvelles lunes, des volcans actifs et une multitude de données sur le système solaire externe.

Voyager 1 et 2 ont été conçus pour tirer parti d'un alignement planétaire rare qui ne se produit qu'une seule fois en 176 ans et demeure le vaisseau spatial le plus parcouru de l'histoire. Les deux vaisseaux spatiaux portent une sorte de capsule temporelle appelée Golden Record, un disque de cuivre plaqué or de 12 pouces contenant des sons et des images sélectionnés pour représenter l'histoire de notre monde aux extraterrestres.

Je suppose que la grande majorité des personnes qui construisaient des logiciels pour ces missions sont maintenant à la retraite, mais au cours des 35 dernières années, la programmation, les langages de programmation ont évolué jusqu'à présent.

Ainsi, il a été lancé en 1977. Après 35 ans, le Voyager a atteint l'espace interstellaire. Combien de lignes de code existe-t-il et dans quelle langue est-il écrit? Quel était le processus de développement derrière ces missions (qui sont toujours actives)?.

Alors, quel était le plus grand plan avec le code dans cette mission, et dans quelle langue la base de code est-elle écrite?

Josip Ivic
la source
10
Heureusement, il est assez facile de trouver des choses comme ça sur Internet de nos jours. Lisez popularmechanics.com/space/a17991/… .
Robert Harvey
3
au cours des 35 dernières années de programmation, les langages de programmation ont avancé jusqu'à présent Oui, mais ils n'ont pas atteint les langages utilisés pour Voyager et ses semblables :-)
High Performance Mark
Vers la fin du lien Popular Mechanics, il est écrit: "... avec suffisamment de base dans les langages d'assemblage pour faire avancer le vaisseau spatial."
dbasnett
Langage d'assemblage très probable en fonction de la période de temps, et également probable que c'était beaucoup plus le siège de votre pantalon, tiré de la hanche, que les processus assez douloureux et coûteux utilisés aujourd'hui.
old_timer

Réponses:

19

(Edit: 12/7/2017, un an plus tard, j'ai trouvé une réponse faisant autorité) Dans un article sur le développement de logiciels pour les missions spatiales de la NASA. https://www.nasa.gov/pdf/418878main_FSWC_Final_Report.pdf À la page 31, le tableau suivant est dans le graphique montrant un ajustement décent à une augmentation logarithmique des lignes de code: (Donc, mon estimation 3K était juste sur l'argent .)

  • 1969 Mariner-6 (30)
  • 1975 Viking (5K)
  • 1977 Voyager (3K)
  • 1989 Galileo (8K)
  • 1990 Cassini (120K)
  • 1997 Pathfinder (175K)
  • 1999 DS1 (349K)
  • 2003 SIRTF / Spitzer (554K)
  • MER 2004 (555K)
  • MRO 2005 (545K)

C'était à l'origine une question à la recherche d'une réponse finale, nous avons donc fait l'estimation suivante:

Selon l'article ci-dessous, il y a du code disponible pour Apollo 11 et diverses autres choses open source de la NASA, mais la source des sondes semble manquer de manière décevante:

https://voat.co/v/programming/comments/306663

J'ai googlé et je n'ai rien trouvé de plus concluant, mais au-delà des faits, il a été réécrit pour la plupart et pourrait potentiellement nous envoyer des données sur l'espace interstellaire jusqu'en 2024 si tout se passe parfaitement.

C'est terriblement proche: http://history.nasa.gov/computers/Ch6-2.html

Seule la "partie inférieure" des banques de mémoire 4K utilisées par le système de données de vol est destinée au code. C'est probablement le plus complexe des trois ordinateurs sur Voyager afin que nous puissions obtenir une limite supérieure d'ici. Ainsi, 2k octets de mémoire pour les instructions avec une taille d'instruction de 1 octet constitueraient environ 2000 instructions d'assemblage. Ou, peut-être 1000 lignes de code Fortran. Multipliez par trois pour la reprogrammation), et vous obtenez une limite supérieure approximative de 3000 lignes d'assemblage dans l'original. Pas scientifique ou rigoureux, mais du mieux que je puisse comprendre.

Et comme dernière nouvelle, Allan Lasser a fait un Freedom of Information Act pour le code source au logiciel de contrôle et d'analyse de la mission Voyager révélant que le code est (C) Caltech, et au-delà de la portée de toute demande FOIA, un fait que pourrait diriger de nouveaux efforts pour rechercher ce code source.

Et grâce à une demande FOIA connexe d'Allan Lasser, nous apprenons que le contrat JPL / Caltech pour Voyager dépasse également le pouvoir de FOIA car le contrat est considéré par la NASA comme contenant des détails qui auraient tendance à compromettre la sécurité informatique.

BenPen
la source
Si quelqu'un a de meilleures statistiques d'octets par instruction d'assemblage ou d'instructions par ligne, veuillez ajouter. Je n'ai pas pu trouver l'article sur l'expressivité que je sais que j'avais lu dans le passé ...
BenPen
14

Cet article dans Wired indique clairement que le code a été écrit en Fortran 5 et plus tard porté sur Fortran 77 et certains éléments sont maintenant dans une version de C:

Le logiciel original de contrôle et d'analyse des vaisseaux spatiaux a été écrit en Fortran 5 (plus tard porté sur Fortran 77). Une partie du logiciel est toujours dans Fortran, bien que d'autres morceaux aient maintenant été portés sur le C. un peu plus moderne

Brian Tompsett - 汤 莱恩
la source