写点什么

JavaScript 进入太空,真正成为“火箭科学”

  • 2020-07-16
  • 本文字数:1655 字

    阅读完需:约 5 分钟

JavaScript进入太空,真正成为“火箭科学”

SpaceX 公司发射的“龙飞船”(Dragon)2 号将 JavaScript 技术带入了太空。飞船系统的用户界面采用了 Chromium 和 JavaScript,所以很大一部分依赖了 Web 技术。


Twitter 上的相关讨论以及与 SpaceX 软件团队成员进行的 Reddit AMA 会话出现了一些非常幽默的内容,比如“node_modules 真的是太空中最重的模块吗”,但不管怎样,JavaScript 确实在为 SpaceX 龙飞船上的触摸 UI 提供支持。


正如美国宇航局(NASA)宇航员 Christina Koch 在最近的OpenJS世界大会上所说的那样,SpaceX 拥有非常现代的显示器。“龙飞船”是第一艘搭载触摸屏的航天器。“龙飞船”上的宇航员穿着带有特殊手套的宇航服,以便能够在极其恶劣的环境下使用触摸屏。他们使用几个按钮来执行非常关键的任务和访问冗余系统。


Koch 说,在空间站里,团队通过平板电脑使用 Web 应用程序,这些平板电脑连接的是与空间站其他系统相独立的网络。他们使用基于 Web 的调度软件和程序,并定期通过网站(如 YouTube)完成专业和娱乐方面的事情。


https://youtu.be/j2-mrQDJ_Sk


NASA 目前正在研发猎户座(Orion)飞船,用于登月和执行火星任务。最初,NASA 通过一个快速原型实验室为航天员设计界面,关注的是用户驱动型的需求,而非自上而下型的需求。虽然“猎户座”目前还没有使用触摸功能,但他们计划提供一些可编程按钮和程序,以便获得高效的飞行体验。


在龙飞船上,界面使用了大量 Web 组件和自定义响应式框架。SpaceX 公司软件工程师 Sofian Hnaide 在 Reddit AMA 上解释说:


在关键任务环境中使用 Chromium 和 JavaScript 是一个普遍的问题。我们必须明白,在这些情况下,Chromium 只是作为一个 UI 渲染引擎。带有显示和容错功能的飞行软件的交互层定义良好,并位于显示边界之外。 就是说,无论采用怎样的技术栈,我们都遵循相同的开发流程。 我们对开发人员进行交叉培训,使用 C++编写代码,并怀着相同的心态开发出可靠的软件。我们非常重视可靠性和性能,就像其他飞行软件一样,我们在不同条件下进行测试,以便了解所有可能出现的故障模式。我们有警报系统和处理程序,在出现故障时可采取相应的行动。

虽然我们一路上遇到了很多挑战,但我们对自己的表现非常满意。最重要的是,我们的两个客户(到目前为止)也感到非常满意。飞船的地表软件已经在使用这些显示技术栈,用不了多久,我们就会开始为飞船设计人机界面。


SpaceX 龙飞船软件团队经理 Wendy Shimata 补充说:


你可能从某些图像中注意到了,显示屏下方仍然有一些硬件按钮。这是为了确保在显示器出现故障无法使用时,宇航员仍然可以使用硬件按钮来启动关键任务,例如响应机舱火灾。


为了保证软件的可靠性,团队采用了很多方法进行测试。在 SpaceX 团队负责 Demo-2 的 John Dietrick 解释说:


我们进行所有能够想到的测试!单元测试、容器化集成测试(借助物理模拟在本地机器上执行这些测试)以及在真实硬件上进行的完整“HITL”(硬件环路)测试(完全仿真)。使用模拟器来测试软件是我们拥有的最强大的工具,尤其是在真实硬件上运行的时候。我们将硬件放在实验室的桌子上,然后模拟整个任务过程,甚至是一些故障。在飞船上这么做非常容易。为了深入研究,我们通过通信通道和网络快速地从飞船上获取大量数据。


这个项目最初是一个模拟器原型,为了向 NASA 展示设计愿景。然后,团队对其进行了修改并在硬件上运行,取得了一些进展。在开发原型时,SpaceX 团队对基于 Web 的方法有了更强的信心。正如 Hnaide 解释的那样:


我们喜欢浏览器附带的所有现代化功能,也喜欢那些已经受过相关技术栈训练的人才。我们并不担心在这里做一些不一样的事情会影响我们。我们喜欢采用“第一原则”方法来解决问题,而不是只遵循行业标准。


在一篇很长的推文中,JavaScript 作者和 Brave 首席执行官 Brendan Eich 对此进行了幽默的评论,并就如何利用 TypeScript、Flow 或 Hegel 的类型安全性来确保 TypeScript 在太空中的安全使用做出了严肃的回应。


很显然,JavaScript 现在实际上已经成了一门“火箭科学”。


原文链接


JavaScript Reaches the Final Frontier: Space


2020-07-16 08:002967

评论

发布
暂无评论
发现更多内容

Flutter 使用 AnimatedSwitcher 做场景切换

岛上码农

flutter ios 前端 安卓开发 7月月更

【萌新解题】四数之和

面试官问

LeetCode

现场可程式化逻辑闸阵列 FPGA

贾献华

7月月更

C++ Workflow异步调度框架 - 性能优化网络篇

1412

c++ 开源 workflow 异步调度 网络框架

长安链学习研究-存储分析wal机制

长安链

排序子序列与倒置字符串

未见花闻

7月月更

Qt | 控件之QComboBox

YOLO.

qt 7月月更

Istio XDS配置生成实现

阿泽🧸

envoy 7月月更

王者荣耀商城异地多活架构设计

地下地上

架构实战营

C++ Workflow 异步编程框架 - 性能优化上篇

1412

c++ GitHub 开源 异步编程 workflow

Vscode 搭建 C / C++ 开发环境

攻城狮杰森

c c++ vscode 开发环境 7月月更

如何在Linux中比较多个文件?这12个优秀工具了解一下!

wljslmz

Linux 7月月更 文件比较

Okaleido或杀出NFT重围,你看好它吗?

BlockChain先知

实习是步入社会的一道坎

KEY.L

7月月更

模块1 作业

Mysql 温故知新系列「触发器详解」

安逸的咸鱼

MySQL 7月月更

zookeeper-watcher的javaApi相关使用

zarmnosaj

7月月更

Setup的使用技巧

bo

Vue 前端 7月月更

Zabbix 6.0 源码安装以及 HA 配置

耳东@Erdong

zabbix ha 7月月更 zabbix 6.0

C#入门系列(二十二) -- 面向对象之多态

陈言必行

7月月更

读书笔记之《深入理解Java虚拟机:JVM高级特性与最佳实践》(下)

蔡农曰

Java 后端 JVM 后端技术 Java 开发

函数初认识-下

芒果酱

C语言 7月月更

分布式事务的性能设计

穿过生命散发芬芳

分布式事务 7月月更

Vue3 状态管理 Pinia 快速入门指南

程序员海军

Vue 状态管理 7月月更

你学会如何将项目部署到Linux系统上了吗?要不我带你耍耍。

Java学术趴

7月月更

ArkUI开发框架组件的生命周期详解

坚果

HarmonyOS OpenHarmony Open Harmony 7月月更

uni-app进阶之自定义【day13】

恒山其若陋兮

7月月更

模块7(王者荣耀商城异地多活架构设计)

Geek_701557

Linux tar打包

工程师日月

Linux tar 7月月更

群里的初级工程师求助说,要采集采招数据,必须给他安排上

梦想橡皮擦

Python 爬虫 7月月更

JavaScript进入太空,真正成为“火箭科学”_大前端_Dylan Schiemann_InfoQ精选文章