影响科学圈的“十大名码”!为科学变革加速的十大计算机代码。

程序员用代码改变世界,基于计算机硬件的迅猛发展,摩尔定律被渐渐遗忘,科学圈也受到了一系列的影响。近日,科学顶刊 Nature 发布文章,介绍了上世纪五十年代以来改变科学圈的十大计算机代码,当然,排名不分先后,仅供参考。

 

编译 | 八宝粥   责编 | 张文

头图 | CSDN 下载自视觉中国

出品 | CSDN(ID:CSDNnews)

从 Fortran 到预印本,这些程序上的进步和平台给生物、气象和物理学带来了显著的提速。

如果你带着你的手机回到几十年前,就是超神一样的存在,它的计算能力比起 NASA 在 1969 年登月时候都强的多。然而,手握一个甚至多个手机的我们,可能极少数人会有自己的卫星和登月计划吧?(这里请马斯克同志不要发言)。

计算机在航空航天、物理学、化学、生物学等多个领域,起到了催化剂和加速器的作用。今天我们一起来看 Nature 上总结出来为科学变革加速的十大计算机代码。

文章选出了以下十大名码,分别是 Fortran、快速傅立叶变换、生物数据库、气候一般循环模型、BLAS、NIH/ImageJ/Fiji、BLAST、arxiv.org、Ipython Notebook 以及 AlexNet。

 

语言先驱:Fortran 编译器(1957)

Fortran 诞生的年代,计算机操作还需要借助打孔卡

Fortran,全称:Formula Translation,诞生于 1957 年。那一年,ENIAC 也才 11 岁,那个带手机穿越回去就能当成计算之神的年代,编程真的是太太太不友好了。即使机器语言和汇编语言允许用户利用代码编程,仍然需要熟悉计算机结构,然而这样的人肯定不多。不过,IBM 的工程师约翰·巴科斯(J. Backus)就给董事长斯伯特·赫德(Cuthbert Hurd)写信,说天天写这个太浪费青春了,我们造一个新的语言吧?董事长也是有魄力,大手一挥就决定了。

也不知道真的看到了前景还是说就是不服,反正当时的顾问冯·诺依曼的强烈反对没有用就是了。虽然就在 Fortan 诞生这一年诺依曼就去世了,但大神就是大神,即使在当时 Fortran 还没有如后来一般名扬科学圈,诺伊曼依然对 Fortran 表示了承认。

从那时起,计算机不再只是“计算机科学家的玩具” ,其他专业的科学家们就能访问程序进行编程,也意味着科学计算、数值计算时代的到来,几十年来,Fortran 在工程等数值计算领域影响巨大,直到现在还有很多流体动力学、航空航天领域依然在使用。编程语言可以被后浪赶超,却依然有自己的光芒。许多课题组的“祖传代码”就是 Fortran 语音写成的,NASA 甚至在 2017 年招募 Fortran 大佬帮忙优化代码。

 

信号处理器:快速傅立叶变换(1965)

 

既然说到 Fortran 就不能不说快速傅立叶变换(Fast Fourier Transform, FFT),那可是大大的有名呀。

1965 年,美国数学家 James Cooley 和 John Tukey 提出了一种加快傅立叶变换过程的方法,使用递归方法分而治之,快速计算串行的离散傅里叶变换或其逆变换,傅里叶分析将信号从原始域转换到频域的表示或者逆过来转换。从离散傅立叶变换到快速傅立叶变换,复杂度从 O[N2]优化到了O[NlogN]。如果你是电气或者自动化方向的,数字信号处理肯定是你一生难忘的课程。

这一重大发现,在数字信号处理、图像分析、结构生物学等领域均有频繁而广泛的应用。美国数学家吉尔伯特·斯特朗把 FFT 描述为“我们一生中最重要的数值算法”,IEEE 科学与工程计算期刊也将其列入 20 世纪十大算法。

不过,英国牛津大学数学家尼克·特雷菲森(Nick Trefethen)表示,这个方法其实德国天才数学家高斯在 1805 年就完成了,只是没有发表而已。目前该方法的潮流是"西方最快的傅立叶变换"( Fastest Fourier Transform in the West,FFTW),是快速傅立叶变换的最快的免费软件实现。

 

分子编目:生物数据库(1965)

 

读到这篇文章的你,想必对数据库会有一定的了解,在过去的几十年当中,数据库在生物学上的影响也是非常巨大而富有戏剧性的。

1965 年,三位作者合著《蛋白质序列和结构图谱》,描述了当时 65 种蛋白质的序列、结构和相似程度。使人们对于氨基酸序列有了更深刻的了解。1971 年启动了蛋白质数据库,如今该数据库已经能描述 170000 多个分子结构。

随着科技的进步和时间的推移,也涌现出了更新、更全面的生物学数据库。美国国家生物技术信息中心(NCBI)前主任詹姆斯·奥斯特尔(James Ostell)表示:“这简直就是不太了解计算机和统计学的生物学家的明灯,通过对比序列我们就能了解到关于癌症的知识。”通过对数据集的整合,研究人员们还能发现更多的信息。

 

预测先锋:一般循环模型(1969年)

 

二战时期,天气对于交战双方而言是无法改变的事情,率先了解天气就可以占尽天时,在那个经验为主预测天气的情况下,诺伊曼创造性地采用“根据物理学定律进行"数值天气预报"。不过在早期,这些实际问题无法准确解决,算力和算法均无法达到。

1940 年末,冯·诺伊曼在普林斯顿建立了天气预报小组,15 年后,第二个团队,也就是地球物理流体动力学实验室,开始研究“无限预测”,也就是气候建模。1958 年,Manabe 加入团队,他的同事 Kirk Bryan 也将这些用于海洋。1969 年,他们成功地结合了二者,创造了自然界计算的里程碑。

如今,该模型已经可以将地球分成 25×25 公里的正方形,将大气也划分成十个层次,这比起当年来已经强了很多。

 

数字处理者:BLAS(1979)

时间到了上世纪 70 年代,虽然矩阵和向量的计算在科学计算当中很常见了,但是还没有一套普遍认可的操作工具,于是,研究者们就开始思考如何使用代码来解决问题。他们需要一个标准!

然后就有了 BLAS (Basic Linear Algebra Subprograms)基本线性代数子程序。这是一个设计基本现行代数操作的数学标准,主要分三级,一级是向量之间或者向量与标量、常数间的运算;第二级是矩阵与向量间的操作,而第三级就是矩阵之间操作。

德克萨斯大学奥斯汀分校的计算机科学家 Robert van de Geijn 说,BLAS “可能是为科学计算定义的最重要的接口”。

 

显微成像伴侣:NIH Image(1987)

进入 80 年代,脑成像技术发展到了关键时期,由于 X 射线胶片数字化之后无法在计算机上显示或者分析,程序员 拉斯班德(Rasband)编写了一个程序来解决问题,当时的计算机还是 PDP-11,价值 15 万美元。苹果电脑出现后,对于医学成像的显示更加友好。

这里的 NIH 不是别的,而是美国国立卫生研究院( National Institutes of Health (NIH),也就是说这是有国家卫生研究院监督的。后来拉斯班德又编写了 Java 版本的 ImageJ。在插件的帮助下,ImageJ 工具可以自动识别显微镜图像中的细胞核。拉斯班德退休之后,它的团队依然保持对于该产品的维护。

 

序列搜索器:BLAST(1990)

上面我们提到了 BLAS,这里我们要说的是 BLAST,一字之差,意义大不同。来自美国国家生物技术信息公司,全称 Basic Local Alignment Search Tool 。文章作者广告词都想好了“要搜索,找 Google,用遗传,BLAST"。通过研究蛋白质之间的相似性,科学家们就可以发现进化关系并剖析基因功能,因而分子信息库就至关重要了。

经历了”点对点突变“矩阵、FASTP、等等团队开发了 ”GeneMyers“并在多年之后提出了更强大的改进。1990 年 BLAST 正式公布。搜一下,xiu 的一下!这种系统给当时处于萌芽状态的基因组生物学提供了一种非常高效快捷的方法。

 

预印本大仓:arXiv.org(1991)

相当长一段时间里面,科学家们相互交流的方式就是邮寄手稿,算是早期的“同行评议”,不过这种方式很容易使得一些并不有名气的人被埋没,即使天才如拉玛努金,最初寄给几位科学家的研究成果也被无视,直到哈代和利特尔伍德慧眼识珠。1991 年,在洛斯阿拉莫斯国家实验室的金斯伯格(Ginsparg)编写了电子邮件自动回复程序,使得订阅用户能够每天收到预印本的清单,这个可以说是论文界的 RSS 了。

最初金斯伯格的计划是保留三个月,并限制在高能物理领域,随着他研究学科越来越广,这个系统也在 1993 年被放在了万维网上,1998 年,正式得名 arXiv.org 。如今,距离最初那个邮件订阅已经三十个年头,arXiv 已经有 180 万份预印本,每月有一万五千多投稿和三千万次下载。同时,由于其良好的口碑,受到基础学科和计算机科学领域研究者们的热爱,甚至《MIT 科技评论》都有一个周更的栏目——最好的 arXiv 物理文章(The Best of the Physics arXiv)

金斯伯格表示,令人欣慰的是,三十年前被视为异端的食物,如今被广泛地接受,从这个角度来讲,也算是一个成功的研究项目。

 

数据浏览器:IPython Notebook(2011)

Jupyter notebook 对于初学 Python 的朋友简直是一个无比友好的存在, 它能显示 Markdown,也能显示并执行代码,比传统的交互式和全脚本执行更加清晰和简便,而它的前身就是来自费尔南多·佩雷斯(FernandoPérez)发明的 IPython Notebook。

2001 年的佩雷斯还在读研还是读博,作为 Mathematica 和 MAPLE 的重度用户,他决定给 Python 一个更好的展现交互的平台。由于 Python 并不是为科学计算创建的语言,用户在预加载模块和保持数据可视化状态上存在很多障碍,因此他就自己写就了 IPython,2001 年 12 月,这个“交互式” 的 Python 解释器单程了,总共 259 行。

十年之后,他和物理学家布莱恩·格兰杰(Brian Granger)和数学家埃文·帕特森(Evan Patterson)合作,将该工具迁移到Web浏览器。从此,Python 也有了自己的笔记本,2014 年,它演变成了一个项目 Project Jupyter, 支持 100 多种语言,用户就可以在自己的笔记本上远程访问超算的算力和数据了。

2018 年,《自然》文章报道,Jupyter 已经成为了数据科学家的标准,GitHub 上的 Jupyter notebook 也已经超过千万,包括记录引力波和黑洞成像的那些。

 

快速学习者:AlexNet(2012)

人工智能有两种,一种使用编码规则,一种使用计算机通过模拟大脑的结构来学习。几十年来人们一直忽视后者。直到 2012 年,欣顿(Hinton)的研究生亚历克斯(Alex Krizhevsky)和伊利亚(Ilya Sutskever)在 ImageNet 的比赛中发挥出色,在包含百万个日常对象的图像中训练出的 AlexNet 能将错误率降低到 16% ,这是通常人工智能算法的一半。

他们的成功也点燃了包括数据集、硬件设备和 GPU 等的飞跃,突然之间,人们发现可以将算法的运行速度提升几十倍。这些生理预示着深度学习在实验室、诊所等领域的兴起。如今手机也能理解语音查询、图像分析工具也能帮助细胞筛选。AlexNet 引领了人工智能界许多工具的质变。

文章最后,还特意做了一个调查,选出对你影响最深的 3 项工作。

截至目前为止,Fortran 编译器以 42.8 比 35.5 的比重领先第二名 FFT,选择“其他”选项的也占有较大比例。结果见下图:

显然,在众多读者的眼中,Fortran 和 FFT 的地位举足轻重,这些重要的代码,改变了科学界,也改变了世界。你是否也有一个用代码改变世界的梦想呢?欢迎下方留言评论,对你影响最大的代码是哪些?你最得意的事情是用代码做了什么?

参考资料:

  1. https://www.nature.com/articles/d41586-021-00075-2
  2. https://www.youtube.com/watch?v=g8xQRI3E8r8

 

posted @ 2021-01-28 22:34  三啊三水  阅读(726)  评论(0编辑  收藏  举报