Voyager任务的代码开发过程?


29

旅行者1号于2012年8月到达星际空间,是现存最遥远的人造天体。旅行者1号是在其双人航天器旅行者2号不久后发射的,旅行者1号探索了木星和土星的系统,发现了新月,活跃的火山以及有关外部太阳系的大量数据。

旅行者1号和旅行者2号的设计利用了罕见的行星对准技术,该对准技术在176年中仅发生过一次,并且仍然是历史上飞行次数最多的航天器。两架航天器都带有一个称为“黄金唱片”的时间胶囊,这是一个12英寸的镀金铜盘,上面装有声音和图像,这些图像和声音被选择用来向外星人描绘我们的世界故事。

我以为为该任务而开发软件的绝大多数人现在已经退休了,但是在过去的35年中,编程,编程语言到目前为止已经发展了。

因此,它于1977年发射升空。35年后,旅行者号到达星际空间。有几行代码,用什么语言编写?此任务(仍在执行中)背后的开发过程是什么?

那么,此任务中使用代码的更大计划是什么,代码库是用哪种语言编写的?



10
幸运的是,如今在互联网上很容易找到这样的东西。阅读Popularmechanics.com/space/a17991/…
罗伯特·哈维

3
在过去的35年编程中,到目前为止,编程语言已经发展了,是的,但是还没有Voyager及其同类产品使用的语言:-)
高性能标记

在“大众力学”链接的末尾,它说:“ ...具有足够的汇编语言基础,可以使航天器继续运行。”
dbasnett '16

基于时间段的汇编语言很有可能,而且与今天使用的相当痛苦且昂贵的过程相比,从臀部射出来的裤子位置要多得多。
old_timer

Answers:


19

(编辑:2017年12月7日,一年后,我找到了一个权威性的答案)在一篇有关NASA太空任务软件开发的文章中。 https://www.nasa.gov/pdf/418878main_FSWC_Final_Report.pdf 在第31页上,下表显示了与代码行的对数增长相当合适的图表:(因此,我的3K估算正确无误)

  • 1969年Mariner-6(30)
  • 1975维京人(5K)
  • 1977旅行者(3K)
  • 1989年伽利略(8K)
  • 1990卡西尼(120K)
  • 1997探路者(175K)
  • 1999 DS1(349K)
  • 2003 SIRTF / Spitzer(554K)
  • 2004 MER(555K)
  • 2005年MRO(545K)

这最初是一个寻找最终答案的问题,因此我们进行了以下估算:

根据下面的帖子,有代码可用于Apollo 11和其他各种开源的NASA东西,但缺少的探针源似乎令人失望:

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

我已经用谷歌搜索,没有发现更多结论性的东西了,事实上,它在大多数情况下都是在F77中重写的,如果一切顺利的话,可能会一直向我们发送星际空间的数据,直到2024年。

这非常接近:http : //history.nasa.gov/computers/Ch6-2.html

飞行数据系统使用的4K存储区中只有“下部”用于代码。这可能是Voyager上三台计算机中最复杂的计算机,因此我们可以从此处获得一个上限。因此,具有1字节指令大小的指令的2k字节内存大约是2000条汇编指令。或者,也许是1000行Fortran代码。将其乘以三可进行重新编程),则原始装配的上限约为3000行。不科学也不严谨,但我能找出最好的。

而且,作为最新新闻,艾伦·拉塞尔(Allan Lasser)对旅行者号的控制和分析软件的源代码制定了《信息自由法》,该代码表明该代码是(C)加州理工学院,并且超出了任何FOIA的要求,这一事实可以指导进一步的工作来研究该源代码。

通过艾伦·拉塞尔(Allan Lasser)的相关FOIA要求,我们了解到VoyagerJPL / Caltech合同也超出了FOIA的权限,因为NASA认为该合同包含的细节可能会损害IT安全性。


如果有人对每个汇编指令的字节数或每行指令的字节数有更好的统计,请添加。我找不到过去知道的关于表达力的文章……
BenPen

14

《连线》中的这篇文章清楚地表明,该代码是用Fortran 5编写的,后来又移植到了Fortran 77,并且某些元素现在处于C版本中:

航天器的原始控制和分析软件是用Fortran 5(后来移植到Fortran 77)编写的。有些软件仍在Fortran中,尽管其他软件现在已经移植到了更现代的C语言中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.