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 rare alignement planétaire 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.
Il a donc é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 est écrit la base de code?
(Edit: 07/12/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 L'estimation 3K était juste sur l'argent.)
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 NASA, mais la source des sondes semble manquer de manière décevante:
https://voat.co/v/programming/comments/30666
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 hors de portée de toute demande FOIA, un fait qui pourrait orienter les efforts de recherche de ce code source.
Et grâce à une FOIA demande d'Allan Lasser, nous apprenons que les contrat JPL/Caltech pour Voyager sont également au-delà du pouvoir de FOIA car le contrat est considéré par la NASA comme ayant des détails cela aurait tendance à compromettre la sécurité informatique.
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.