No.406 奥本海默当主任的那个实验室里模拟核武器爆炸的软件是用什么语言写的?

这一期是讲高级编程语言的第2期。

在2023年5月1日,美国的洛斯阿拉莫斯国家实验室发布了一个报告,报告中有一条跟程序员有点关系,这一条是说未来15年,Fortran程序员持续的减少,会对实验室的高性能运算产生影响。

洛斯阿拉莫斯国家实验室是干什么的呢?这是美国的一个联邦研究机构,位于美国新墨西哥州洛斯阿拉莫斯。这个实验室由美国能源部管理,其主要任务是确保美国的核安全。洛斯阿拉莫斯国家实验室的历史可以追溯到第二次世界大战时期的曼哈顿计划,这个计划的目标是开发原子弹。实验室的首任主任是著名物理学家罗伯特·奥本海默,最近不是已经上映了关于他的电影么?我还没看,但是我在我自己的网站上写了一篇博客介绍奥本海默的八卦,分析了他有没有参与到核机密泄露事件中,如果有兴趣的话,可以到我的网站上看看。本期不讲这个家伙,而是讲在其历史悠久的研究生涯中,实验室在核物理、材料科学、生物学、计算机科学等多个领域取得了许多突破。

我看了一下网站,发现现今的洛斯阿拉莫斯国家实验室仍然是美国的主要核研究机构之一,除了核武器研究外,还从事一些副业,比如基础科学研究、环境科学、疾病研究、能源研究等。

我应该给这期电台起一个更惊悚的名字,比如美国国家实验室慌了,原因是……然后点开以后说原因是Fortran程序员被卡脖子了。现在可能几乎没有人再学习Fortran语言了,当年我上大学的时候,机械系什么的要学Fortran,我隔壁宿舍有个家伙就是机械系的,学的是Fortran77。我们学的是C语言,谭浩强都是的C语言教程。上一期电台我不是说过了么,只要一门语言超过100万人使用,那么这门语言就将永生。显然,Fortran语言肯定超过了100万,要不然大家都不学Fortran语言了,美国国家实验室也不会慌的出个报告出来。Fortran语言在科学计算和数值分析中,至今仍然被广泛使用。一些高性能计算(HPC)的应用程序和库,如BLAS(基本线性代数子程序)和LAPACK(线性代数包),都是用Fortran编写的。

Fortran语言是第一门高级语言。Lisp是第二门高级语言。ALGOL是第三门高级语言。然后一生二,二生三,三生万物,才有了各种各样的编程语言。今天我们用的C语言也好,Java也好,Python也好,语法都可以归结到ALGOL。ALGOL 60是最为知名和广泛使用的版本,它被认为是第一个完全被定义的高级编程语言,也是第一个引入了块结构(block structure)和词法作用域(lexical scope)的语言。ALGOL 60的这些特性对后来的许多编程语言产生了深远的影响,例如Pascal,C,和Java。反而Fortran和Lisp的后劲没有ALGOL这么大,当然了,现在越来越能感觉到Lisp的后劲开始发作了,我觉得随着计算机性能的越来越强大,编程语言越来越靠近Lisp,目前还不行。

我说这个不是没根据的,越低层的语言越迁就电脑硬件,越高级的语言越迁就数学。比如Fortran语言就是迁就硬件更多,C语言也迁就硬件比较多,原因是这些语言发布的时候,相比于程序员,硬件实在是太贵了。一台电脑好几千万美元,程序员才多少钱的工资?所以那时候电脑贵人便宜。Lisp语言最初不是编程语言,而是数学运算。Fortran语言的作者是约翰·贝卡斯(John Backus),这家伙我不知道我在电台里有没有讲过他,如果讲过了,请不要走开,请听我再讲一遍,毕竟讲了400多期,我肚子里已经没货了,只能新瓶装旧酒了。

他是个花花公子,他爹是军火商,在二战的时候赚钱赚到手抽筋。所以含着通灵宝玉出生的薛蟠根本无心读书,读书是为了赚钱,他家里有钱,读个鸟书。此人换学校跟换女人一样勤,虽然我没去考证,但是我觉得按道理,他家也应该有一个大观园,里面装满了现任。美国的大学是4本科毕业,结果这哥们不好好的上大学,却一门心思的上大学生。他上的第一个大学是University of Virginia,我英语超级烂,这个大学我一度认为是处女大学,我当时心想,美国真TMD有意思,竟然有个大学叫处女大学。后来才知道叫弗吉尼亚大学,再后来才知道弗吉尼亚这个名字的由来是纪念英国的处女皇后伊丽莎白一世,谁能证明一下伊丽莎白一世是处女?在这个大学里,这哥们只上了一年就被退学了。原因是他一年只选了一门课:音乐欣赏。来大学里听歌了。然后他退学后就去了他爸爸的客户那里——美国军队。在军队上呆了一年,又不想当兵了,又去了一个大学匹兹堡大学,继续去欣赏音乐,又被退学了。我对匹兹堡大学有很深的感情,当年我怀着万份激动的心情,想申请这个学校,因为这个学校里曾经有我年轻时候的偶像王小波,可惜落花有意,流水无情,匹兹堡大学拒绝了我的申请。多年以后,当我开了一天的出租车,凌晨把车停在一个灯火通明的卷帘门口,事后点上一根烟,烟雾缭绕中,我总是幻想,如果匹兹堡大学当年录取了我,我应该在美国开出租车吧。

在匹兹堡大学呆了一年之后,这哥们又给退学了。他只好又去夜店里疯狂的玩了两年,又去了哈弗福德学院继续读书。这个不是哈弗大学,只是跟哈弗大学差不多名字。最后他去了IBM研究编程语言,研究的过程就不说了。

把时间轴快进到1983年,那时的John Backus因为BNF——这个计算机系必考的知识,这是一种用于描述计算机语言语法的表示法,至今仍广泛使用——他获得了当年的图灵奖。在发表演讲的时候,他把批评的刀口对准了自己的Fortran和所有学习过Fortran的语言,认为它们过于复杂,难以理解和修改。他提倡使用更简单的”函数式编程”方法,并开发了一种名为FP的函数式编程语言。

函数式编程是什么?第一门函数式编程语言叫Lisp。这门编程语言的作者叫约翰·麦卡锡,此人是个纯正的科学家。他被称之为人工智能的创始人,而Lisp也被称之为适合人工智能的编程语言。不知道各位听众有没有听说过这门语言,我读研究生的时候,由于导师搞了个项目,要用Lisp来给一个Linux下的开源软件GIMP写一些东西,这个软件的插件系统就是用Lisp写的,我被迫学习了Lisp。

如果有了解Lisp的,肯定听说过Lisp是适合人工智能的语言。我不知道各位看到这句话怎么想的,反正我是不以为然的,我一般把这种话称之为宣传。我一直不认为有哪个语言是另一个语言不能替代的,比如现在搞AI的,没有谁用Lisp,现在大家不是都用Python什么的么?所以有很长一段时间,谈起这个话题的时候,我一般认为那时候没有多少编程语言,Lisp正好。

后来这段时间不是AI大火么,我又重新读了不少关于AI的文章,还有一本以前我看不下去,这次我越看越觉得有意思的书——维纳的《控制论》这本书还有个标题写的是《动物和机器的控制和通信》,然后我觉得我有了某种顿悟,或者是某种误解。我觉得说Lisp是人工智能的语言基本上是没错的,以前我还是幼稚了。

维纳也是个变态,这个我以前的电台里讲过他,在些不再赘述了。人工智能的兴起是二战以后,当时造电脑是为了算炮弹的轨迹,结果二战打赢了,也就没有必要再天天算炮弹的轨迹了,于是就有一些脑子比较活络的人,想着要不搞搞“智能机器”?这些脑子活络的人就包括Lisp的作者麦卡锡,当时还是个年轻人,参加了一场几个年轻人的假期聚会,现在这个聚会不得了了,被称之为1956年人工智能首次会议,实际上,当时参加会议的人肯定也没想到能搞成这么大的事情。

后来的人们越来越神话这个首次会议,其实这次会议大家都不知道AI怎么搞,去的人也是鸡同鸭讲,用我老家的方言叫蛤蟆吵坑,一阵乱叫,谁也不服谁。最后也没有什么官方的共同意见发出来,唯一值得吹的地方就是第一次会议确定了一个名字叫AI, Artificial Intelligence,后来连这个名字也有了争议,说以前早就用过了。这都不重要。

我觉得最重要的是,这次会议提出了一个大家都没法解决的问题:如何表示这个世界的知识。人工智能人工智能,你总要先学习再说吧?不能说写个软件,他自己就智能了对吧?当然了,大家都不懂如何表示这个世界。

这个有达芬奇的画,有贝多芬的音乐,有海量的书,如何才能让这些东西统统的都变成电脑可以处理的玩意儿?不但能处理,还得边处理,边拥有这些知识,至少得有点儿智能吧?当然了,现在已经有了官方的说法:知识表示模型。这个模型当时是没人知道的。

除了知识表示模型,还有另一个当时没解决的第二个问题:智能计算模型怎么办?这两个问题,后来不能说被麦卡锡一人搞定了,但是他确实提出了一种思路,这个思路后来演化成了Lisp。可惜今天的时间到了,预知Lisp是如何变成人类历史上第二门高级编程语言的,且听下回分解。

0 0 投票数
文章评分
订阅评论
提醒

1 评论
最旧
最新 最多投票
内联反馈
查看所有评论
cj.zhang
6 月 前

栋哥与奥本海墨一样优秀。奥本海墨特长是与同事妻子特有缘分,不亚于John Backus,人之常情,儿秦的爸爸,那点事儿本不叫事。栋哥被自己妻子的闺蜜给睡了,与相对论作者惺惺惜惺也

1
0
希望看到您的想法,请您发表评论x
滚动至顶部