一个发誓不用Java的程序员,不得不在太空中调试Lisp

1998年10月24日,伴随着火箭的轰鸣,美国宇航局的深空一号成功升空。

深空一号肩负着NASA的重要使命,旨在验证未来行星际探测所需的十几项新技术。

在深空一号飞行了2.4亿公里以后,突然发生了一个故障,有个进程不工作了。

地面人员非常紧张,赶紧召来软件团队商量对策。

软件团队在会议绞尽脑汁,激烈争论,最后决定对深空一号的软件进行调试。

调试?到底该怎么调试?

软件可不是部署在某个机房里,而是位于距离地球2.4亿公里的航天器中,距离之远即使是光也需要半个小时才能跑个来回。

但是NASA的工程师们却成功地解决了这个问题,原因就是深空一号上的控制软件是用Lisp写的!

1

要想了解整个事情的来龙去脉,必须把时间拉得长一些。

1988年,罗恩来到NASA的JPL(喷气推进实验室,钱学森是创始人之一),在自主机器人的人工智能组工作。

JPL当时制定了一个火星探测的计划,希望能到达火星,并且采样返回。

任务庞大而艰巨,预算有数十亿美元,罗恩他们要做的是火星车原型的研制。

这些原型有大有小,有重达一吨,像SUV的Robby :

也有小巧玲珑,像个玩具车的Tooth:

为了让火星车能自主避障,在火星漫游,必须要给它配套一个强大的软件,让它具备一个强大的大脑。

用什么编程语言呢?

在80年代,没有Java, 没有Python,没有JavaScript,航天器主要是用汇编编写的。

而罗恩他们决定尝试一个新语言:Lisp。

Lisp在当时是人工智能的编程语言,正好和火星车的任务匹配,并且也不用管理C语言的指针,还支持垃圾回收。

不过当时的NASA对Lisp持怀疑的态度,很多人觉得Lisp很奇怪,担心Lisp那奇怪的垃圾回收技术会突然让应用进程死掉。

但是罗恩认为:“当你使用的语言提供一种高级的抽象时,完成工作会变得更快更容易。”

罗恩他们先使用Lisp针对手头的问题定义一个自定义语言,相当于DSL,然后为火星车的硬件进行编译,这种方式对于内存受限的硬件非常有用。

在把代码安装到火星车上进行测试之前,罗恩的小组还在Macintosh 电脑上写了一个模拟器,把代码做了非常充分的测试。

罗恩的小组不但能写火星车的漫游和避障程序,还能写底层的编译器和模拟器,可见技术能力还是非常强的。

虽然Lisp火星车进展顺利,可以使用立体视觉传感器在户外自主导航,在崎岖地形环境下漫游,但是罗恩他们并不是唯一一组火星车原型制造者,他们还有竞争对手。

罗恩回忆说:NASA内部也存在山头,也有政治斗争,Lisp火星车不幸成为牺牲品,最后团队解散,很多成员离开了。

1997年,第一个火星车Sojourner到达火星,这时候,驱动它的是C语言。

2

幸运的是,NASA换了一个领导,发起了一个叫做新千年的计划,其中一个任务就是深空探测。

深空一号计划飞过一个小行星和彗星。

它需要一个自主航天器控制系统,叫做远程代理(Remote Agent)。

C++派和Lisp派展开了一场斗争,这一次最终Lisp获胜。

罗恩他们故伎重演,再次使用Lisp 定制了一个领域专有语言,这个语言的结构会阻止你编写某些有问题的代码,例如竞争条件。

代码在深空一号的备份上做了一遍又一遍的测试,罗恩他们对软件非常有信心,认为绝对不会出错。

但是世界上哪有绝对的事情?

越是你觉得不会出错的地方,偏偏就在那里出错。

Lisp代码被部署到了生产环境:深空一号航天器

深空一号向一颗小行星飞去,这一去就是2.4亿公里。

就在这时,深空一号发生了故障,它并没有完成一件应该做的事情。

罗恩他们必须对深空一号上的Lisp软件进行调试,这个调试并不是在一个机房的服务器上,代码运行的地方在2.4亿公里以外,即使是光也需要半个小时才能跑一个来回!

幸亏深空一号运行的是Lisp,它支持REPL(read–eval–print loop)这样功能,可以输入一个命令,然后查看结果。

一群人坐在会议中,绞尽脑汁,讨论发送什么命令来调试。

当然,每一条调试命令都需要层层审批,让所有人签字,然后由接受过培训的操作员在深空网络控制台前输入命令,按下红色按钮,信号会通过一个巨大的70米的天线发送出去,以光速奔向深空一号。

罗恩他们要做的第一件事是看看系统的转储信息,看看当前活动进程的列表,他们向深空一号发了一个S表达式。

数据传输回来以后,大家立刻就发现了问题:有个进程在等待一个已经发生了的事件。

这本来是不可能发生的,主要是因为有个程序调用了底层的Lisp函数导致的。

团队决定手工触发这个事件,这就可以让那个进程继续执行了。

感谢 LISP 的魔力,感谢在深空一号飞船上安装实时 REPL 的惊人想法,他们成功地挽救了这项任务。

3

在2.4亿公里以外调试代码,修复问题确实让人印象深刻,但是NASA并没有拥抱Lisp。

NASA当时有个响亮的口号“更好,更快,更省”,其实这更像一个不可能三角形。

在这样的思想指引下,深空探测项目经费很少,时间又很紧张。所以当出现进度延期和预算超支时,Lisp成了替罪羊。

关键的转折点是一个有着200人参加的重大审查,包括很多JPL的高级管理人员,当软件集成工程师在做演示时,有人问他:如果可以改变一件事情,可以让事情变得更好,这件事情是什么?

这个工程师回答:去掉Lisp。

这几乎就宣布了Lisp在JPL的死刑。

罗恩非常沮丧,他在JPL被边缘化,希望和他合作的人越来越少。

这时候,他发现一家叫做Google的网站,这个网站的搜索结果好得不可思议,速度快得吓人,罗恩很快找到了招聘链接,投递了简历。

2000年,罗恩在JPL工作了12年以后,加入了正在冉冉升起的明星公司Google。

4

罗恩一直觉得在软件业,管理层一直在寻找一种开发流程,让程序员变成可以插拔的、可以替换的组件,这实在是太吓人了。

而Java恰好匹配了管理层的这种需求,所以他发誓永远不会成为一名Java程序员,在90年代后期,这个决定让90%以上的工作对他关闭了大门。

罗恩选择Google的一个重要原因就是他们不使用Java,但是,他在Google的第一项工作就是:

领导公司的第一个Java项目!

这个项目最终变成了Google AdWords。

罗恩很怀念Lisp,他有过在JPL推销Lisp的经验,于是他故伎重演,先在团队做了Lisp演示,成功地捕获了程序员的芳心,大家一致认为使用Lisp是个好主意,接下来只需要说服工程副总即可。

罗恩信心满满地去找副总。

罗恩:有件事我想和你谈谈…

副总:让我猜猜,你想用Smalltalk ?

罗恩:呃,不….

副总:Lisp?

罗恩:是的!

副总:不可能!

罗恩:…

参考资料:

https://corecursive.com/lisp-in-space-with-ron-garret/

https://flownet.com/gat/jpl-lisp.html

https://www.youtube.com/watch?v=_gZK0tW8EhQ

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年9月18日
下一篇 2022年9月18日

相关推荐

  • 守护安全!国产OS麒麟软件携手北信源助力企业构建安全办公环境

    今年6月1日,《中华人民共和国网络安全法》正式实施五周年。随着《中华人民共和国网络安全法》、“等保2.0”、《关键信息基础设施安全保护条例》、《数据安全法》以及各行业网络防护、网络…

    2022年6月21日
  • 全网首发 三星Galaxy Z Fold4图赏

    三星Glaxy Z Fold4采用了和上代相同的设计语言,机身为装甲铝材质,具备出色的防刮耐磨性。三星作为折叠屏行业的领路人,时过四代已经越来越完善了。下面就一起欣赏三星Glaxy…

    2022年8月11日
  • 夏普计划明年开始使用英文为官方沟通语言

    财经网科技6月26日讯,据IT之家消息,日本夏普执行长吴柏勋近日表示,夏普计划明年开始使用英文为官方沟通语言,推动内部“全英语”环境,因为公司正积极扩展美国和欧洲的电视和家电事业版…

    2022年6月27日
  • VoWiFi 通话来了,基站还有必要再建吗?

    在手机普及之后,如今人们对通信网络的信号好不好也变得格外在意起来。由此,对于各种通信技术的关注也变得多了起来。而运营商及通信技术企业们也一直在探索各种不同的办法来提升网络信号的质量…

    2022年6月23日
  • 用什么软件看电视直播好(最全的免费电视直播软件)

    很多朋友都想看电视直播,但不知道哪个电视直播软件app哪个好用。本文就为大家介绍下2021年最新的几款好用的电视直播软件。 1、电视家3.0 一款不错的电视直播软件,频道挺多。县市…

    2022年4月11日
  • 刚戴上助听设备的小宝宝,如何提高听觉能力?

    本篇文章结合家庭和生活情境,从听障儿童聆听能力发展的四个阶段入手,针对刚佩戴助听设备的小宝宝们如何发展聆听技能进行了简明的说明,非常值得一读! 当孩子带上助听器和人工耳蜗时,父母焦…

    2022年8月19日
  • NASA分享火星被太空石块砸中时的声音

    Bloop–那是一块石头撞向火星时发出的声音。至少,这是NASA的InSight仪器在去年9月捕捉到的微弱的流星体撞入火星大气层的声音。当时,这个天体爆炸成多块并用力撞…

    2022年9月20日
  • (周运)Alex 12星座一周运势(3.22—3.28)

    参考:太阳星座、上升星座(均需参考) 本周重要星象: 水星与火星会出现负面的角度,火星在3月月初的时候来到了风象宫位,水星目前停留在水象宫位,带来了虚假的消息,被引导的舆论,或者是…

    2022年8月14日
  • “锐思华创”完成A+轮融资

    36氪6月7日消息,车载AR HUD产品及解决方案提供商深圳锐思华创技术有限公司宣布完成亿元A+轮融资,由成为资本领投,中国联通下属联通创新基金跟投。 公司资料显示,锐思华创创立于…

    2022年6月12日
  • 鱼跃医疗成立软件技术公司,经营范围含物联网技术研发等

    企查查APP显示,6月22日,江苏鱼跃软件技术有限公司成立,法定代表人为张勇,注册资本1000万元人民币,经营范围包含:软件开发;软件销售;工程和技术研究和试验发展;电机及其控制系…

    2022年6月29日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息