只是出于兴趣,我们知道制造卫星涉及很多程序。它们是用哪些语言编写的?
9 回答
我参与的 NASA 卫星任务使用了所有用于机载软件的汇编语言。NASA 强烈倾向于使用具有传统的飞行软件——重复使用在先前任务中具有成功历史的组件(硬件和软件)。因此,我们通常不是在最新、最强大的处理器上使用编译代码,而是在弱小但经过验证的处理器上使用手工编码的汇编。例如,THEMIS 项目建于 2003 年并于 2007 年启动,运行在英特尔 8085 处理器上,具有手动编码的组装模块,这些模块继承了 WIND、CLUSTER 和 STEREO 等先前任务的传统。
由于它们具有连接到各种 I/O 外设的自定义架构,因此应使用 C/C++ 或直接在 ASM 中进行编程,以获得更好的性能和优化。
它们是完全定制的,所以我认为没有其他方法可以解决这个问题,还认为它们必须使用非常低的能量(并且必须由太阳充电)所以它们往往没有那么强大的硬件并且必须真正优化(这就是 ASM 的方式)。你不应该浪费任何一个 CPU 周期!
最后,连接到卫星的设备类型非常少见,所以我认为很难使用任何类型的标准 API 进行接口(如 RS232 等),我认为它们在每种情况下都是不同的。
我不会惊讶地发现许多像Z80这样的旧芯片在卫星上做脏活,只是因为它们的功能足够强大,可以完成简单的任务,尽管它们的 8 位总线!
除了已经提到的可能性之外,至少有一艘航天器在其部分飞行中由用 Lisp 编写的软件控制。
我可以告诉你,火星探测器至少有一些 C++ 代码(PDF 链接);他们使用了 Rogue Wave 的Tools.h++ 库。
NASA 和洛克希德公司使用的大多数操作语言都以统计和微积分为中心。因此意味着 MATLAB、haskell、Erlang 和 scala。MATLAB 和 Erlang 是需要配置的主要工具。
虽然事物的硬件端将围绕 Assembly、C 和 Verilog。
NASA 使用多种语言,并且根据其用途和使用地点而有所不同。为某些计算和某些脚本编写的程序主要是使用 python 编写的。地面仪器和地面控制的程序是使用 C、C++、Ada 等编写的。为机载仪器和硬件编写的关键程序大多是用汇编语言编写的,因为它可以对硬件进行最大程度的控制,而且一些旧语言也是卫星上使用的许多硬件都是旧技术(这并不意味着它们已经过时,因为没有它们就无法实现某些功能)和其他语言,如 MatLab、Visual Basic 也用于科学计算。
你不能对所有系统只使用一个程序,大多数情况下他们使用 Matlab 和 P