Proceso de desarrollo de código para la misión Voyager?

29

La Voyager 1 alcanzó el espacio interestelar en agosto de 2012 y es el objeto hecho por el hombre más distante que existe. Lanzado poco después de su nave espacial gemela, Voyager 2, en 1977, la Voyager 1 exploró los sistemas joviano y saturniano descubriendo nuevas lunas, volcanes activos y una gran cantidad de datos sobre el sistema solar exterior.

Las Voyager 1 y 2 fueron diseñadas para aprovechar una rara alineación planetaria que ocurre solo una vez en 176 años y sigue siendo la nave espacial más viajada de la historia. Ambas naves espaciales llevan una especie de cápsula del tiempo llamada Golden Record, un disco de cobre chapado en oro de 12 pulgadas que contiene sonidos e imágenes seleccionados para retratar la historia de nuestro mundo a los extraterrestres.

Supongo que la gran mayoría de las personas que estaban creando software para estas misiones ahora están retiradas, pero en los últimos 35 años la programación, los lenguajes de programación han avanzado hasta ahora.

Entonces, se lanzó en 1977. Después de 35 años, Voyager llegó al espacio interestelar. ¿Cuántas líneas de código hay y en qué idioma está escrito? ¿Cuál fue el proceso de desarrollo detrás de estas misiones (que todavía están activas)?

Entonces, ¿cuál fue el plan más grande con el código en esta misión, y en qué idioma está escrito el código base?

Josip Ivic
fuente
10
Afortunadamente, hoy en día es bastante fácil encontrar cosas como esta en Internet. Lea popularmechanics.com/space/a17991/… .
Robert Harvey
3
en los últimos 35 años de programación, los lenguajes de programación han avanzado hasta ahora Sí, pero no han llegado tan lejos como los lenguajes utilizados para Voyager y su tipo :-)
High Performance Mark
Cerca del final del enlace de Mecánica Popular dice: "... con suficiente base en lenguajes de ensamblaje para mantener en funcionamiento la nave espacial".
dbasnett
Muy probablemente lenguaje ensamblador basado en el período de tiempo, y también es probable que haya sido mucho más asiento de sus pantalones, disparar desde la cadera, que los procesos bastante dolorosos y costosos utilizados hoy en día.
old_timer

Respuestas:

19

(Edición: 7/12/2017, un año después, encontré una respuesta autorizada) En un artículo sobre desarrollo de software para misiones espaciales de la NASA. https://www.nasa.gov/pdf/418878main_FSWC_Final_Report.pdf En la página 31, la siguiente tabla está en el gráfico que muestra un ajuste decente a un aumento logarítmico en las líneas de código: (Entonces, mi estimación de 3K fue correcta en el dinero .)

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

Esta fue originalmente una pregunta en busca de una respuesta final, por lo que hicimos la siguiente estimación:

De acuerdo con la publicación a continuación, hay un código disponible para Apollo 11 y varias otras cosas de código abierto de la NASA, pero la fuente de las sondas parece faltar decepcionantemente:

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

Busqué en Google y no encontré nada más concluyente, más allá de los hechos de que se ha reescrito en F77 en su mayor parte y que potencialmente podría enviarnos datos sobre el espacio interestelar hasta 2024 si todo va perfectamente.

Esto está muy cerca: http://history.nasa.gov/computers/Ch6-2.html

Solo la "porción inferior" de los bancos de memoria 4K que usa el sistema de datos de vuelo es para el código. Esta es probablemente la más compleja de las tres computadoras en Voyager para que podamos obtener un límite superior desde aquí. Entonces, 2k bytes de memoria para instrucciones con un tamaño de instrucción de 1 byte serían aproximadamente 2000 instrucciones de ensamblaje. O tal vez 1000 líneas de código Fortran. Multiplique por tres para reprogramar), y obtendrá un límite superior aproximado de 3000 líneas de ensamblaje en el original. No es científico ni riguroso, pero es lo mejor que puedo entender.

Y como noticias de última hora, Allan Lasser hizo una Ley de Libertad de Información para el código fuente del software de control y análisis de la Misión Voyager revelando que el código es (C) Caltech, y más allá del alcance de cualquier solicitud de FOIA, un hecho que podría dirigir esfuerzos adicionales para investigar ese código fuente.

Y a través de una solicitud de FOIA relacionada de Allan Lasser, aprendemos que el contrato JPL / Caltech para Voyager también está más allá del poder de FOIA, ya que la NASA considera que el contrato tiene detalles que tenderían a comprometer la seguridad de TI.

BenPen
fuente
Si alguien tiene mejores estadísticas para bytes por instrucción de ensamblaje o instrucciones por línea, agregue. No pude encontrar el artículo sobre expresividad que sé que había leído en el pasado ...
BenPen
14

Este artículo en Wired deja en claro que el código fue escrito en Fortran 5 y luego portado a Fortran 77 y algunos elementos ahora están en una versión de C:

El software de análisis y control original de las naves espaciales fue escrito en Fortran 5 (más tarde portado a Fortran 77). Parte del software todavía está en Fortran, aunque otras piezas ahora se han portado a la C. algo más moderna.

Brian Tompsett - 汤 莱恩
fuente