社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

SpaceX 火箭和飞船在哪些地方用上了 Python ?

Python开发者 • 3 年前 • 519 次点击  

(给Python开发者加星标,提升Python技能

转自:程序员的那些事

北京时间5月31日凌晨3点22分,NASA 与 SpaceX 合作,猎鹰9号火箭顺利升空。这是 SpaceX 公司首次利用载人龙飞船,把两位宇航员送入地球轨道。


(猎鹰9号火箭升空)


31日22点30分,载人龙飞船与国际空间站成功对接。


6月1日凌晨1点23分左右,搭乘龙飞船的两位美国宇航员进入国际空间站。


空间站上的三位宇航员与龙飞船上的两位宇航员(右一右二)碰面


Dragon 飞船和 Falcon 9 火箭都广泛使用定制版的 Linux 系统,飞行软件使用 C/C++ 编写,飞船内的图形显示应用是基于 Chromium/JS。


可能有程序员(包括我自己)对 SpaceX 工程师们用到的技术栈感兴趣了。于是就搜寻相关公开信息。


终于找到 2013 年 SpaceX 的软件工程师在 Reddit 做过一次公开回应,回答网友们的提问。


一、SpaceX 软件工程师团队在干什么


SpaceX 软件工程师的目标有 2 个:


  • 火箭和航天器上运行的代码;

  • 火箭和航天器的设计和制造过程的代码;


工作内容范围就很大了,从大型 Web 应用到小型嵌入式计算平台都有涉及。


SpaceX 软件工程师的技术栈:


  • C#、MVC4、EF、MSSQL (REST);

  • Javascript、Knockout、Handlebars、LESS;

  • C++、Linux、C、Python、LabVIEW、MATLAB;


看到这,肯定有人冒出疑问了,C# 和 MVC 与火箭发射没有关联吧?



嗯,没关系,它们是用来开发内部信息系统的。


SpaceX 有 4 个独立的软件团队。


1、飞行软件团队


大约有 35 人(这是 2013 年的人数)。猎鹰9号火箭、蚱蜢火箭和龙飞船上所有的代码,都由飞行软件团队包圆了。


此外,他们还得:

  • 编写仿真软件,测试飞行代码;

  • 编写部署在地面站的通信和分析软件;

  • 在飞行任务控制部门工作,为现役任务提供支持。


2、企业信息系统团队


建立内部软件系统,让 Spacex 得以运转。


这个团队中的成员身兼多职,但他们开发和发布的旗舰产品,几乎所有 SpaceX 员工都在使用的内部 Web 应用程序。


包括:

  • 创建采购订单和填写零件库存的人员,

  • 工程师创建设计和工作订单,

  • 技术人员在现场打卡并根据这些设计查看当天的工作内容。

  • (基本涉及到方方面面了。市面上有一些商业化产品可以满足他们的需求,但 SpaceX 是自己开发了)


SpaceX 正在从一个研究和工程公司转型为一个制造公司,该团队功不可没。他们充分利用了C#/MVC4/EF/SQL、Javascript/Knockout/Handlebars/LESS 和 REST API。


3、地面软件团队


这个团队大约有 9 人。主要在 LabVIEW 中编码,开发用于任务和发射控制的 GUI,供工程师和操作人员监控飞行器遥测和指挥火箭、航天器和平台支持设备。


他们在高度分布式系统中推送高带宽的数据,并实现由严格要求的复杂用户界面,以确保操作人员能够及时控制和评估航天器。


LabVIEW 是什么?

LabVIEW(英语:Laboratory Virtual Instrumentation Engineering Workbench)是由美国国家仪器公司所开发的图形化程序编译平台,由杰夫·考度斯基(Jeff Kodosky)发明,程序最初于 1986 年在苹果电脑上发表。


LabVIEW 早期是为了仪器自动控制所设计,至今转变成为一种逐渐成熟的高级编程语言,目前广泛的被应用于工业自动化之领域上。


图形化程序与传统编程语言之不同点在于程序流程采用"数据流"之概念打破传统之思维模式,使得程序设计者在流程图构思完毕的同时也完成了程序的编写。—— 维基百科


4、航电测试团队


他们与航电硬件设计工程师一起合作,编写测试软件,尽早发现硬件问题。


该团队的主要任务:写出非常全面和强大的软件,以便能够在大批量的情况下自动发现硬件的问题。


测试软件通常是在机械环境测试的时候运行。


【说明】:可能有童鞋要问,前文技术栈提到了 Python,怎么没有说用在哪方面呢。测试团队做自动化测试时,肯定用了 Python。


我们来看看 SpaceX 部分涉及测试的岗位要求:




二、SpaceX 工程师答网友问


问:导航/推进控制系统用了哪种操作系统?

答:龙飞船和猎鹰9号用的是 Linux。



问:主力编程语言是哪个?

答:火箭和飞船都是 C++。



问:你们当前最大的项目代码量是多少?

答:运载工具代码约为几十万行。


问:维护麻烦吗?

答:不麻烦,这就是我们的工作!实际上,我们对代码库非常满意。


问:你们最具挑战性的项目是什么?为什么?

答:龙飞船对接国际空间站是一个重大挑战。因为必须要开发许多新代码。


(程序员的那些事 补充:今天成功发射的龙飞船,可以自动与空间站完成对接。第一代龙飞船需要借助空间站上的机械臂。当然,载人龙飞船也保留了人工对接的选项。SpaceX 在 2013 年的龙飞船是第几代,我没查。


问:你们觉得最有成就的是什么?

答:龙飞船对接国际空间站。



问:你们怎么平衡工作/生活?我听说在 SpaceX 很容易职业倦怠。你们都在煎熬吗?


答:SpaceX 体现了小型企业的心态。我们全都投资于 SpaceX 及其成功。话虽如此,我们的工作时间却更长。归根结底,还是要看你生活中最重要的是什么。我们当然要应对职业倦怠,那就是休假 :-)。


就我个人来说,大多数时候我甚至没有注意到我已经工作了12~14个小时。我看着时钟,想着“时间真快在哪里?”。我认为这证明了我们对项目感到兴奋的程度。当你真正享受自己的工作时,并不会感觉像是在工作。话虽如此,我仍然会时不时地休假,借以保持理智。



(程序员的那些事 补充:我查看了 SpaceX 的招聘信息,很多技术岗位,基本都有一个额外要求:必要的时候,能加班。 )



还有个当年正在攻读天体物理学的学位的童鞋问:


对于航天行业,你们觉得最常用/最有用的编程语言是什么?我的编程经验非常少,而且很想开始学习,因为这个行业的每一个方面/研究似乎都需要对编程有一定的了解。


SpaceX 工程师的回复:


对于所有软件工程师来说,C 语言是一门很好的入门语言。它迫使你学习 CPU 是如何工作的,内存是如何工作的,等等。一旦你掌握了 C 语言之后,再去看 C++。


我们团队所有人都有不同的背景,没有什么特别的路径,我们都是沿着一条路走到这里的。就我个人而言,我在学校里得到的最好经验就是做了个人编程项目。这年头在网上和应用商店里有很多机会,可以做一个产品,公开自己的作品让他人看到。


推荐阅读  点击标题可跳转

知乎高赞:985 计算机视觉毕业后找不到工作怎么办?

炸裂!万字长文拿下 HTTP 面试题

微软官方再次上线了 Python 教程,这次比较高级



觉得本文对你有帮助?请分享给更多人

关注「Python开发者」加星标,提升Python技能

好文章,我在看❤️

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/64144
 
519 次点击