写点什么

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:003091

评论

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

Java 王者修炼手册【基础篇-反射机制】:反射让底层操控力直接拉满!

DonaldCen

Class类用法 Constructor类用法 Field用法 Method用法

Java 王者修炼手册【Mysql篇 - 索引+ SQL优化】:拆解 索引 + 执行计划 + SQL优化 核心原理

DonaldCen

B+树 覆盖索引 索引下推 索引合并 索引失效场景

Java 王者修炼手册【基础篇-泛型机制】:从底层原理到实战应用,核心知识点与面试考点全涵盖

DonaldCen

泛型 java基础 类型擦除

Java 王者修炼手册【Spring 篇 - 循环依赖 & 三级缓存】:Bean创建流程 + 循环依赖 + 三级缓存原理 大揭秘

DonaldCen

循环依赖 三级缓存 Bean创建流程

Java 王者修炼手册【Mysql 篇 - 大表操作】:千万级大表核心操作原理与实战方案

DonaldCen

数据模型与操作 大表删除字段 大表清除数据 大表新增字段

Java 王者修炼手册【Mysql篇 - SQL执行存储流程】:拆解 InnoDB 存储结构与 SQL 执行流程,吃透 Buffer Pool 和 Change Buffer 核心原理

DonaldCen

Buffer Pool 数据存储机制 Change Buffer SQL 各子句的执行顺序

CAD怎么添加打印文件PC5

极客天地

Java 王者修炼手册【基础篇-异常机制】:Java异常的底层逻辑

DonaldCen

异常底层原理 深入理解异常 异常表 异常最佳实践

Java 王者修炼手册【集合篇-ArrayList】:从ArrayList数据结构到避坑指南

DonaldCen

线程安全 ArrayList linkedlist 扩容机制

Java 王者修炼手册【集合篇-ConcurrentHashMap】 :从分段锁到桶级锁的锁系进化

DonaldCen

ConcurrentHashMap 并发

Java 王者修炼手册【JVM篇 - 底层原理】:从类加载到 JVM 调优与 OOM 诊断修炼

DonaldCen

JVM GC算法 双亲委派模型 垃圾回收器

Java王者修炼手册【Spring 篇 - Bean核心原理】:从 Bean 定义注册到动态代理全链路修炼

DonaldCen

bean FactoryBean JDK 动态代理 CGLIB 动态代理 ObjectFactory

ava 王者修炼手册【Spring 篇 - AOP 与事务】:底层原理 + 实战避坑全攻略

DonaldCen

AOP 核心 AOP 底层流程 AOP失效场景 Spring 事务

Java 王者修炼手册【Mysql 篇 - 日志】:吃透 MySQL redo log + undo log + binlog 底层机制

DonaldCen

Binlog Redo Log Undo Log 两阶段提交 WAL核心原理

ava 王者修炼手册【Mysql 篇 - 事务】:吃透 ACID 本质 + 隔离级别底层 + 大事务排查优化方案,掌控事务核心逻辑

DonaldCen

ACID 实现原理 隔离级别底层机制 大事务识别优化

Java 王者修炼手册【MyBatis 篇 - 底层依赖】:吃透 JDBC/MyBatis 核心接口类,掌控全链路整合逻辑

DonaldCen

connection SqlSessionTemplate BoundSql PreparedStatement

拒绝"通灵式调试":用AI重构代码的"尸检报告"

HuiZhuDev

软件工程 研发效能 代码调试 Prompt Engineering AI辅助编程

Java 王者修炼手册【集合篇-HashMap】:HashMap 核心技能 + HashSet 搭档机制全拆解

DonaldCen

HashMap底层原理 HashSet HashMap扩容机制

Java 王者修炼手册【并发篇-并发基础】:从线程状态到同步机制的底层修炼

DonaldCen

线程安全 线程状态 线程协作

Java 王者修炼手册【并发篇 - 并发工具】:从 AQS到线程池修炼

DonaldCen

AQS ReentrantLock Condition LockSupport 同步工具

Java 王者修炼手册【Mysql 篇 - 锁】:吃透 MySQL 行锁 + 间隙锁 + 意向锁 底层机制,了解死锁解决方案

DonaldCen

死锁 间隙锁 意向锁 行锁

千万 QPS 下的 DNS 治理:从“够用”到“可控”

柯杰

架构 后端 网络

BeeWorks Meet:一款支持私有化内网使用的视频会议软件

BeeWorks

即时通讯 IM 私有化部署

区块链 Web3 外包开发上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

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