从Fortran到AlexNet,《自然》评选改变科学的10个计算机代码

读创/深圳商报记者袁静娴

近日,《自然》杂志评选出了改变科学的10个计算机代码,并认为它们的进步是推动科学飞速发展的重要原因。Fortran、arXiv.org、IPythonNotebook等均榜上有名。

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

第一代计算机对用户并不友好。用户需要对计算机的架构有深入了解才能进行编程,许多科学家难以操作。20世纪50年代,“公式翻译”语言Fortran面世,逐渐改变了上述情况。使用Fortran,用户可以用人类可读的指令来编程,然后编译器将其转换成快速、高效的机器代码。

普林斯顿大学的气候学家ManabeSyukuro和同事们利用Fortran成功开发了第一批气候模型。他表示,Fortran让非计算机科学家也能编程。目前,Fortran仍然广泛应用于气候建模、流体动力学、计算化学,并活跃在世界各地的实验室和超级计算机上。

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

当射电天文学家观察天空时,他们需要“看到”那些随着时间变化的信号背后的杂音,以及了解这些信号作为频率的函数是什么样的。1965年以前,研究人员主要通过傅里叶变换来作为根据,计算量大,效率极低。

1965年,美国数学家詹姆斯·库利和约翰·杜基想到使用递归的编程方法,让算法重复运用。这种快速傅立叶变换(FFT)简化了计算傅立叶变换的问题,100万个点数速度可以提升5万倍。

分子编目:生物资料库(1965)

数据库在科学研究中非常重要,尤其生物学领域。生物学当前庞大的基因组和蛋白质数据库,源于生物信息学先驱玛格丽特·戴霍夫。

20世纪60年代初,戴霍夫开始寻找不同物种之间进化关系的线索,并于1965年与三位共同作者发表研究成果,描述了当时已知的65种蛋白质的序列、结构和相似性。历史学家布鲁诺·斯特拉瑟评价道,这是第一个“与特定研究问题无关”的数据集,将数据编码在穿孔卡片中,这使得扩大数据库和搜索成为可能。

预测领导者:环流模式(1969)

过去,天气预报只是经验和直觉的预测,并非科学计算的结果。二战结束后,计算机先驱约翰·冯·诺伊曼将用于计算弹道轨迹和武器设计的计算机转向天气预测,试图基于物理定律进行数值天气预测。

1955年,诺伊曼的团队开始进行气候模拟的“无限预测”实验。随后,日本气候学家真锅淑郎也加入团队,开始研究大气模型。1969年,真锅淑郎与他的同事建立了海洋-大气联合模型,将大气分为9个层次进行预测。虽然该模型只覆盖了地球的六分之一,但科学家们认为,它使得气候学家第一次能够通过计算机预测二氧化碳含量上升的影响。

数字运算机:BLAS(1979年)

科学计算通常涉及到使用向量和矩阵进行相对简单的数学运算,20世纪70年代以前,没有一套普遍认可的计算工具可执行这些运算。直到1979年,基本线性代数程序集(BLAS)面世。

这是一个应用程序接口(API)标准,用以规范发布基础线性代数操作的数值库,如矢量或矩阵乘法。该标准一直发展到1990年,为向量数学和后来矩阵数学定义了数十个基本例程。

学者们普遍认为,“BLAS把矩阵和向量数学简化成了和加法和减法一样基本的计算单元”,“可能是为科学计算定义最重要的接口”。

显微镜必备:NIHImage(1987年)

上世纪80年代初,程序员韦恩·拉斯班德编写了一个程序,让扫描仪扫描X光片后,数字化结果得以在电脑上显示或分析。但这个程序只能在一台特定的计算机上运行。1987年,苹果公司发布了MacintoshII电脑后,拉斯班德把自己的软件移植到MacintoshII电脑上,并建立了图像分析生态系统NIHImage。

NIHImage及其后续版本支持研究人员在任何计算机上查看和量化任何图像。该软件系列包括ImageJ及Fiji。麻省剑桥Broad研究所成像平台的计算生物学家评价到:“ImageJ是最基础的工具,几乎没有生物学家没有使用过它。”

序列搜索器:BLAST(1990年)

提到遗传学,研究者的第一直觉会是BLAST。BLAST发布于1990年,它结合了处理快速增长的数据库所需的搜索速度,以及寻找进化上更遥远匹配的能力。

哈佛大学的计算生物学家肖恩·艾迪表示,BLAST系统为当时处于萌芽阶段的基因组生物学领域提供了一个变革性的工具,一种根据相关基因找出未知基因可能功能的方法。“

预印本平台:org(1991

1991年,研究人员金斯帕格编写了一个电子邮件自动应答程序,邮件订阅者每天都会收到一份预印本列表,世界各地的用户可以通过提交电子邮件提交或检索实验室计算机系统里的论文,了解研究的最新进展。

1993年,金斯帕格将这个系统迁移到万维网上,后命名为arXiv.org。目前,arXiv已经建立30年,拥有约180万份预印本,全部免费提供,每月吸引超过1.5万份提交和3000万次下载。

数据浏览器:IPythonNotebook(2011)

Python是一种解释型语言,程序员可以使用REPL工具,输入代码,由Python执行代码。REPL允许快速探索和迭代,但当时还是学生的佩雷斯指出,REPL并不是为科学目的而构建,比如,它不允许用户方便地预加载代码模块。2001年,他编写了另一个版本——IPython。

2011年,佩雷斯又与其他学者合作,将IPython迁移到Web浏览器,创建了IPythonNotebook。与其他Notebook一样,IPythonNotebook将代码、结果、图形和文本组合在一个文档中,但与其他类似的项目不同,IPythonNotebook是开源的,它邀请了大量开发者社区的贡献,并支持Python。2014年,IPython演变为Projectjupiter,支持大约100种语言,允许用户在远程超级计算机上如同在自己的笔记本电脑上一样轻松地探索数据。

快速学习器:AlexNet(2012年)

人工智能有两种类型:一种是使用编码规则,另一种则通过模拟大脑的神经结构来让计算机“学习”,后者在很长时间里都被人们认为是“一派胡言”。直到2012年,研究人员开发了一种基于神经网络的“深度学习”算法——AlexNet,才反驳了人们之前的错误看法。

与编码算法的近1/4错误率相比,AlexNet的错误率仅为16%,算法速度也提高了30倍。加拿大多伦多大学的计算机科学家杰弗里•辛顿表示,AlexNet的成功代表着深度学习在实验室、临床和其他领域的崛起,这也是其被评为改变科学的10个计算机代码之一。

审读:谭录岗

ozabc