Categories
程式開發

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python


美国当地时间5月30日,由埃隆·马斯克创办的航天公司 SpaceX 执行的载人航天发射任务在肯尼迪航天中心圆满完成,猎鹰 9 号火箭成功将载人飞船“Dragon”以及参与两名宇航员送上了太空,至此,马斯克距离他的火星梦又进了一步。

近日,负责开发和部署Dragon软件的六名技术人员在Reddit举行了一场以“Dragon有问必答”为主题的线上问答会,Reddit用户可以就自己感兴趣的任何问题向技术人员提问,他们也会耐心地进行解答。参与问答的团队成员各有分工,有人负责技术管理,有人负责软件开发,有人负责网络安全问题,他们也就网友关心的如何能进入SpaceX公司工作给出了一些建议。

这六位技术人员分别是:

  • Jeff Dexter——负责运行飞行软件和网络安全;
  • Josh Sulkin —— Crew Dragon软件设计负责人
  • Wendy Shimata ——管理Dragon软件团队,并负责Dragon的容错和安全工作
  • John Dietrick —— 领导了Demo-2的软件开发工作
  • Sofian Hnaide——负责Demo-2上Crew Displays 软件工作
  • Matt Monson——曾在Dragon上工作现在负责Starlink软件

本科学历是最基本条件

在问答中,一位被猜测是高中生的Reddit用户问道:“如果我将来想去SpaceX从事软件工作,应该具备什么条件?”

SpaceX负责飞行软件和网络安全的Jeff Dexter回答道:“获得计算机科学学位或类似学位”,他表示,对学历有要求是为了“确保你真正了解必备的技术常识”。

他解释说:“在SpaceX上表现出色的工程师对他们的代码、网络、Linux和硬件等如何工作一丝不苟”。另外,SpaceX许多公开的工程和软件岗位的基本要求都是学士学位及以上。

除了学历很重要以外,团队还提到通过参与一些项目或实习工作获得相应的工作经验也十分重要。Dexter建议说:“通过在SpaceX里接触一些业余项目或实习获得现实世界中的构建事物和解决难题的经验,对以后进入SpaceX也很有帮助”。 例如,Demo-2软件开发工作负责人John Dietrick在Reddit上说,“视频游戏开发与我们的工作之间有不少交集,这两个领域中,有很多类似的数学难题和以性能为中心的问题。”

学历很重要,但并不是全部。曾在Dragon任职,现在负责领导Starlink软件的Matt Monson表示,“团队中的成员拥有着不同的文化、教育背景,但没有多少人拥有航空背景,不同的观点可以帮助我们从不同的角度看待问题,并且通常可以帮助我们看到我们原本不会看到的解决方案。”

Monson总结道:“我们欢迎的成员要具备两个基本条件:才能(潜力)和正确的态度(渴望自我完善,为团队服务而不是自私)。

Reddit上热门评论

在此问答环节中,涉及了很多SpaceX的技术栈是什么、应用的编程语言是什么以及在飞行过程中如何执行错误检测和纠正等网友们关注的问题,以下是Reddit上热度较高的一些评论及技术团队的回答:

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 1

Crew Dragon软件设计负责人Josh回答了网友们关心的开发F9和Dragon软件最常用的编程语言是什么?是C还是C ++?

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 2

Josh回答称:“所有应用程序级自主软件都是用C ++编写的。尽管我们希望编程尽可能简单些,但通常,我们在使用面向对象的编程技术时会选择使用C++。

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 3

针对Dragon上是否使用了开源库的问题,Josh回答称:

我们确实使用了开源代码库,主要是标准C ++库,还有一些其他库。但是,我们仅使用极高质量的开源代码库,并且在解决实际问题时会选择开发自己的库,以便我们可以自己控制代码质量。

网友也对在飞行过程中如何执行错误检测和纠正这一问题比较感兴趣,而Josh给出的回答是:

我们在飞船上部署了多台冗余计算机,并对其输出进行投票,这样就可以处理计算机中由辐射引起的错误。通过使用多个不同的传感器来处理传感器中的错误。而数据传输中的错误则通过使用附加到有效负载的错误检测或错误纠正代码来处理。

在机器学习无处不在的当下,SpaceX是否在其软件中使用了AI技术这一话题也成为网友的关注点,就此问题,Dietrick给出的回答令人有些意想不到,他表示:“Daragon未使用任何AI。”不过,Josh也补充道,Dragon确实使用了一些计算机视觉来进行导航。

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 4

此外,网友也比较关心SpaceX的技术栈是什么?它们主要是开源还是内部框架?这一问题Sofian给出了回答,他称:“我们使用C和C++来制作飞行软件,HTML、JavaScript和CSS用于显示,python用于测试。”

在被问到所使用的Linux发行版是什么时,Dietrick表示,“我们不使用任何现成的发行版,我们有自己的发行版。”

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 5

在提及如何测试软件时,Dietrick回答称:“我们会用我们能想到的所有方法进行测试。单元测试、基于容器技术的集成测试(你可以在自己的机器上运行这些测试,并进行完整的物理模拟),以及在真实飞行硬件上进行的完整的“HITL”测试(同样是在完整的模拟下进行)。将飞行软件与模拟器匹配起来是我们最强大的工具,尤其是在真实硬件上运行时。我们可以模拟整个任务,甚至许多详细的故障场景,这些只需把飞行器硬件放在实验室桌子上就能完成。

SpaceX软件团队就技术问题在Reddit上答网友问:应用级程序用C++编写,测试用Python 6

欲了解更多详细技术信息,请查阅:

https://www.reddit.com/r/spacex/comments/gxb7j1/we_are_the_spacex_software_team_ask_us_anything/