电脑编程软件有哪些(学编程的软件)

2022-04-07 20:15:09 发布:网友投稿
热度:78

从Fortran到arXiv.org,计算机程序和平台的进步使生物学、气候科学和物理学突飞猛进。

2019年,事件视界望远镜首次向世界揭开了黑洞的神秘面纱。然而,我们看到的发光环黑洞图像并不是直接拍摄的,而是利用美国、墨西哥、智利、西班牙和南极的射电望远镜拍摄的数据,经过复杂的数学变换和计算得到的[1]。在公布成果的同时,团队还公开了实现这一突破性成果的代码,让科学界详细了解了其实现过程,并在此基础上进行了进一步的研究。

从天文学到动物学,这种研究模式在各个学科中越来越普遍:现代每一个重大科学发现的背后,总有一台计算机。加州斯坦福大学的计算生物学家迈克尔·莱维特因在化学结构建模的计算策略方面的杰出贡献,分享了2013年诺贝尔化学奖。他提到,当他在1967年第一次开始这项工作时,实验室计算机的内存和计算性能还不到目前笔记本电脑的十分之一。他说:“虽然我们现在拥有强大的计算资源,但思维的重要性并没有减弱。」

这需要科学家和程序员。无论一台计算机多么强大,如果没有能处理研究问题的软件,没有懂得编写和使用程序的研究人员,它都将毫无用处。尼尔·楚红是软件可持续性研究所的负责人,该研究所总部位于英国爱丁堡。该研究所主要致力于不断改进科学软件的研发和使用。尼尔说:“现在,科学研究基本上是用软件进行的,它们已经渗透到研究的各个方面。」

插图:Pawe Joca

科学发现应该成为媒体的头版。但在本期《自然》杂志中,我们想和读者谈谈这些发现背后的故事,并回顾一下在过去几十年中极大地改变了研究过程的关键代码。

虽然这个榜单不是绝对的,但在过去的一年里,我们调查了大量的研究人员,总结了不同领域对科研影响较大的十大软件工具。

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

第一台现代电子计算机对用户不友好。编程需要通过手动逐个链接电路来完成。虽然随后机器语言和汇编语言的快速发展使得用户可以通过代码进行编程,但它仍然需要对计算机体系结构有深刻的理解,这阻碍了许多科学家使用计算机的效率。

随着20世纪50年代符号语言的发展,效率逐渐提高,尤其是公式翻译语言Fortran的出现,改变了这种情况。Fortran是由加州圣何塞的约翰·巴科斯和他的IBM团队开发的。用户可以使用Fortran中人类可读的指令进行编程,比如编写x = 3.5的计算公式,然后编译器可以将其转换成快速高效的机器码。

疾控中心3600计算机于1963年交付给科罗拉多州博尔德的国家大气研究中心。可以借助Fortran编译器进行编程。

但是编程仍然不是一件容易的事情:早期的程序员使用穿孔卡来输入代码,稍微复杂一点的模拟就需要数万张穿孔卡来编写程序。但是新泽西州普林斯顿大学的气候学家Syukuro Manabe说,Fortran为不是计算机科学家的研究人员提供了一种高效的编程方法。马纳贝说:“我们第一次可以自己给电脑编程。他和他的同事用Fortran开发了第一个成功的气候模型。

如今,Fortran已经进入了第八个十年,在气象建模、流体力学、计算化学等需要复杂线性代数和强大计算能力的学科中,仍然得到了广泛的应用。生成的代码效率很高,仍然有很大一部分程序员可以使用Fortran。中世纪的Fortran代码库仍然活跃在世界各地的超级计算机和实验室中。“以前的程序员知道他们在做什么,”弗兰克·吉拉尔多说,他是加州蒙特雷海军研究生院的应用数学家和气候建模专家。“他们非常重视记忆,因为记忆过去很小。」

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

当射电天文学家扫描天空空时,他们会捕捉到一系列随时间变化的复杂信号。为了理解这些电波的本质,他们需要看看这些信号被转换成什么频率方程。研究人员可以使用一种叫做傅立叶变换的数学过程来完成这个过程。问题是它的效率很低,一个N大小的数据集需要N2计算。

但是在1965年,美国数学家詹姆斯·库利和约翰·图基发明了一种加速这一过程的方法。利用递归,一种“分而治之”的编程方法(算法可以反复调用自己),快速傅里叶变换(FFT)可以将傅里叶变换的计算减少到Nlog2(N)步。计算速度随着数据集的增加而增加,1000个数据点增加100倍,100万个数据点增加5万倍。

英国牛津大学的数学家尼克·特雷费森说,这实际上是一个重复的发现——德国数学家卡尔·弗里德里希·高斯在1805年提出了这个算法,但他没有发表。然而,库利和图基已经为数字信号处理、图像分析、结构生物学等打开了广泛的应用空。特雷费森说:“这确实是应用数学和工程领域的一件大事。FFT已经在代码中实现多次,其中最著名的是FFTW(西方最快的傅里叶变换)。

西澳大利亚射电天文望远镜murchison宽视场阵列夜景,采用快速傅里叶变换采集数据。

加州劳伦斯伯克利国家实验室分子生物学和集成生物成像系主任保罗·亚当斯回忆说,1995年,当细菌蛋白质GroEL的结构被优化[2]时,即使使用了快速傅立叶变换和超级计算机,计算也花费了大量时间。他说:“没有FFT,我甚至不知道完成这些计算是否现实,这些计算可能永远无法完成。」

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

数据库是当代科学研究不可或缺的一部分,但很容易忽视它是由软件驱动的。在过去的几十年里,这些资源得到了大规模的扩展,许多领域的研究方法也发生了变化,但也许没有一个领域像生物领域一样发生了翻天覆地的变化。

今天的大规模基因和蛋白质数据库起源于马里兰州国家生物研究基金会生物信息学先驱MargaretDayhoff的工作。20世纪60年代初,生物学家致力于揭示蛋白质的氨基酸序列结构,戴霍夫开始整理这些信息,寻找不同物种之间进化关系的线索。她与三位合作者合著的《蛋白质序列和结构图谱》于1965年首次出版,描述了当时已知的65种蛋白质序列、结构和相似性。历史学家Bruno Strasser在2010年写道[3],这个数据库是第一个不限于特定研究问题的数据集。Dayhoff通过打孔纸带对这些数据进行编码,这使得该数据集具有可扩展和可搜索的潜力。

在这项研究之后,其他计算生物学数据库开始出现。诞生于1971年的蛋白质数据库,现在包含了超过17万种大分子结构的细节。加州大学圣地亚哥分校的进化生物学家拉塞尔·杜利特尔(Russell Doolittle)于1981年创建了另一个名为纽瓦克的蛋白质数据库。然后,在1982年,后来的国际核酸序列数据库(GenBank)诞生了,GenBank的DNA档案由美国国立卫生研究院(NIH)保存。

蛋白质数据库包含超过17万种分子结构,包括这个结合了RNA和蛋白质合成过程的细菌表达群。

这些数据库在1983年7月证明了它们的巨大价值。当时,由伦敦帝国癌症研究所的蛋白质生物化学家迈克尔·沃特菲尔德(Michael Waterfield)和杜利特尔(Doolittle)领导的两个团队独立报道了一种人类特异性生长因子与能在猴子身上致癌的病毒的蛋白质序列之间的相似性。结果该观察通过模拟生长因子提出了病毒致癌的机制,病毒可以诱导细胞快速增殖而不受调控[4]。国家生物信息学研究中心(NCBI)前主任詹姆斯·奥斯特说:“这让生物学家意识到他们可以利用计算机和统计数据进行研究。通过比较蛋白质序列,我们可以加深对癌症的理解。」

此外,奥斯特说,这一发现标志着“客观生物学的到来”。除了设计实验来测试假设之外,研究人员还可以通过挖掘开放数据库来发现数据收集者可能从未想过的联系。随着越来越多的数据库连接在一起,这种研究范式的巨大潜力迅速增长。1991年,NCBI程序员开发了一个工具Entrez,可以在DNA、蛋白质和文献中自由导航,实现了这个想法。

马里兰州贝塞斯达的NCBI负责人斯蒂芬·塞利(StephenSherry)曾在研究生期间使用恩特雷兹。他说:“我还记得那种感觉就像魔法一样神奇。」

天气预报领导者:大气环流模式(1969)

第二次世界大战结束时,计算机先驱约翰·冯·诺依曼将战时用于计算弹道计算和武器设计的技术转向天气预报研究。Manabe说:“在此之前,天气预报是基于经验的,而冯·诺依曼的团队希望利用物理定律实现数值天气预报。」

普林斯顿国家海洋和大气管理局地球物理流体动力学实验室建模系统负责人文卡特拉马尼·巴拉吉说,描述这些过程的方程已经存在了几十年,但早期的气象学家不知道如何求解这些方程。因为这些方程的计算需要给出当前的条件,在短时间内计算它们随时间的变化,然后重复,这个过程非常耗时,而且计算速度跟不上天气的变化。1922年,数学家刘易斯·弗莱·理查森花了几个月的时间计算德国慕尼黑6小时的天气预报。然而,根据记录,预测结果“极其不准确”,有一个预测结果是“在任何已知的地表条件下都不会发生”。计算机的出现使这个问题变得容易多了。

20世纪40年代末,冯·诺依曼在普林斯顿高等研究院成立了他的天气预报小组。1955年,第二团队在地球物理流体动力学实验室开始了“无限预报”(气候模型)的研究工作。

Manabe于1958年加入气候建模团队,研究大气模型。他的同事柯克·布莱恩专注于海洋。他们在1969年成功地将两者结合起来,2006年《自然》杂志称之为科学计算的“里程碑”。

如今的气象模型已经能够将地表划分为25 * 25公里的区域,将大气划分为几十个层次进行研究。当年,Manabe和Bryan将海洋-大气模型[5]结合起来,面积为500平方公里,有9个层次,只覆盖了地球表面的1/6。不过,Balaji仍然认为“这个模型是一个伟大的工作”,这使得团队能够首次在计算机中模拟二氧化碳水平上升对气候的影响。

数值计算加速器:BLAS(1979)

科学通常使用向量和矩阵进行相对简单的数学运算,但计算量仍然很大。20世纪70年代,科学界缺乏一套通用计算工具来执行这些操作。因此,科学界的程序员不得不花时间写代码来完成基本的数学运算,而不是专注于科学问题。

但是编程世界需要一个标准。因此,1979年出现了基础线性代数子程序(BLAS)[6]。该标准发展到1990年,并为向量和后来的矩阵数学定义了一系列基本程序。

田纳西大学的计算机科学家杰克·东加拉(Jack Dongarra)认为,BLAS实际上将复杂的矩阵和向量运算简化为基于加减运算的简单计算单元。他是BLAS开发团队的一员。

在加州劳伦斯利弗莫尔国家实验室的克雷-1超级计算机等机器上工作的研究人员没有线性代数标准。

德克萨斯大学奥斯汀分校的计算机科学家Robert van de Geijn说,BLAS“可能是科学计算领域定义的最重要的接口”。除了为常用函数提供标准名称,研究人员还可以确保基于BLAS的代码可以在任何计算机上以相同的方式运行。该标准还使计算机制造商能够不断优化BLAS,使其能够在其硬件上快速运行。

40多年来,BLAS成为科学计算技术栈的核心,使得科学计算软件不断发展。乔治华盛顿大学的机械和航空空工程师Lorena Barba称之为“代码五层结构的内在机制”。

东加拉说:“这是计算的基础设施。」

必不可少的显微镜:NIH Image(1987)

20世纪80年代初,程序员韦纳拉斯班德在马里兰州贝塞斯达的美国国立卫生研究院(NIH)脑成像实验室工作。其中一个团队可以将x光胶片数字化,但无法在计算机上分析和显示。Rasband已经编写了一个程序来实现这个功能。

这个程序是专门为价值15万美元的PDP-11微型计算机设计的(安装在机架上的那种计算机,非个人使用)。然后在1987年,苹果发布了Macintosh II,它更方便用户,也更实惠。拉斯班说:“我认为这显然是一个更好的实验室图像分析系统。于是他把软件搬到了一个新的平台(Macintosh II)并改名,从而引领了图像分析生态系统的发展。

NIH Image及其后继者可以让研究人员在任何计算机上查看和量化任何图像。该软件家族包括Java版软件ImageJ由Rasband为Windows和Linux用户编写。还有斐济,德国马克斯·普朗克研究所分子细胞生物学和遗传学研究所的Pavel Tomancak开发的ImageJ,其中包含关键插件。在马萨诸塞州布罗德研究所(Broad Institute)成像平台工作的计算生物学家贝丝·西米尼(Beth Cimini)表示,“ImageJ无疑是我们拥有的最基本的软件工具。我从未见过一个生物学家想在没有ImageJ或斐济的情况下使用显微镜。」

借助插件ImageJ工具,可以自动识别显微图像中的细胞核。资料来源:Ignacio Arganda-Carreras/ImageJ

Rasband认为,部分原因是这些工具是免费的,但威斯康星大学生物医学工程师Kevin Eliceiri认为,更重要的是,它们允许用户简单地根据自己的需求定制工具,Rasband退休后,他的团队领导了ImageJ的研发。ImageJ拥有极简的用户界面,自20世纪90年代以来没有太大变化。但是由于内置宏记录器(允许用户保存鼠标点击和菜单选择的操作顺序来记录工作流程)、强大的文件格式兼容性和灵活的插件架构,这款工具几乎可以无限扩展。Eliceiri团队的编程主管Curtis Rueden说,有数百人在上传插件。这些不断增加的插件极大地扩展了研究人员可用的工具集,包括从跟踪视频中的对象到自动识别细胞的丰富功能。

“这个软件的目的不是成为一切,也不是终结一切,而是为用户服务。”Eliceiri说,“与其他程序不同,ImageJ可以是用户想要的任何东西。」

序列检索器:BLAST(1990)

软件名称从名词变为动词是其文化重要性的恰当体现。在搜索领域,有谷歌,而在基因领域,人们会想到BLAST。

进化以取代、敲除、空缺失和重排的形式刻在分子序列上。通过寻找序列(尤其是蛋白质)之间的相似结构,研究人员可以发现它们之间的进化关系,对基因功能有更深入的了解。实现这一思想的关键在于在快速扩展的分子信息库中进行快速全面的分析。

1978年,戴霍夫给这个难题增加了一个关键部分。她提出了一种称为“可接受点突变”矩阵(PAM矩阵)的描述方法,使研究人员能够通过序列之间的相似性和进化距离来评分两种蛋白质之间的相关性。

1985年,弗吉尼亚大学和NCBI大卫·李普曼大学的WilliamPearson基于Dayhoff矩阵的思想提出了一种更快的算法FASTP。

几年后,李普曼与NCBI的沃伦·吉什和斯蒂芬·奥尔特舒尔、宾夕法尼亚州立大学的韦伯·米勒和亚利桑那大学的吉恩·迈尔斯合作,开发了一个更强大的版本:BLAST(基本局部比对搜索工具)。

当它在1990年发布时,BLAST结合了处理快速增长的数据库的快速搜索和识别与遥远进化距离的匹配的能力。同时,它还可以计算出这些匹配偶然发生的可能性有多大。

奥尔特舒尔说,搜索结果出奇的快:“只需喝一口咖啡就能完成复杂的搜索!但更重要的是,这个工具很容易使用。在邮件更新数据库的时代,Gish建立了邮件更新系统,后来又构建了基于网络的架构,使得用户可以远程访问NCBI电脑进行搜索,保证了数据的实时性。

上图中数据的列表和可视化代码可以在github:https://github.com/jperkel/nature_code_survey.上获得

哈佛大学计算生物学家肖恩·艾迪认为,这一系统为当时的胚胎基因组生物学提供了革命性的工具,通过相关基因的特征来研究未知基因的特征。对于全世界的基因测序实验室来说,它提供了一个新词:“这是那种会变成动词的名词”,艾迪说,“你会说你在爆破自己的序列。」

预印本发电厂:arXiv.org(1991)

在20世纪80年代末,高能物理学家通常会向同行发送论文副本以征求建议,这也是一种礼貌——但仅限于少数人。物理学家保罗·金斯伯格(Paul Ginsparg)在2011年写道:“较低学术圈的人会依赖科学名人的青睐,但不在精英机构的有才能、有抱负的研究人员往往会被排除在外[7]。

1991年,在新墨西哥洛斯阿莫斯实验室工作的金斯伯格编写了一个电子邮件自动回复系统,以促进这一领域的公平发展。订阅者将每天收到预印的论文,每篇文章将被分配一个固定的文章识别号。只需一封电子邮件,世界各地的用户就可以从实验室计算机系统提交或接收论文,获得最新论文的列表,或者按标题和作者进行搜索。

Ginsparg最初想把文章保留3个月,而且是在高能物理领域。但是,在同事的劝说下,文章开始无限期的被保留。他说:“这是从电子公告板到数据库存档的关键时刻。随后,这一体系的发展远远超过了金斯伯格自己的学科。1993年,他将该系统迁移到广域网,1998年,他将域名改为arXiv.org。

如今30年过去了,arXiv已经存了180多万张预印本,全部免费开放。与此同时,它每月吸引15,000次提交和超过3,000万次下载。《自然-光子学》的编辑在十年前网站[8]20周年之际写道:“不难看出arXiv为何如此受欢迎。该系统为研究人员提供了一种方便的方法来标记他们的工作和发现时间,避免了传统同行评审过程所需的事务和时间。」

来源:arXiv.org

该网站的成功推动了包括生物、医学、社会科学等姊妹领域的预印本网站的蓬勃发展。到目前为止,从《新型冠状病毒病毒研究》上发表的数万篇预印本论文可以看出它的影响力。

金斯伯格说:“三十年前,这种方法被认为是粒子物理领域之外的一种不同方式。我很高兴看到现在的人们都把它当成了家常便饭。从这个角度看,就像是一个成功的科研项目。」

数据探索利器:IPython Notebook (2011)

2001年,当FernandoPrez还是一名以“发现拖延症”为主题的研究生时,他决定开发一个Python核心组件。

Python是一种解释性语言,这意味着它需要逐行执行。程序员通常使用一种叫做REPL(read-evaluate-print loop,一种交互式编程环境)的计算机调用响应工具来编程,并使用解释器来执行代码。REPL可以用于快速探索和迭代开发,但Prez认为Python不是为科学而构建的语言,例如,它不能轻松加载代码块或保持数据可视化开发。所以他写了自己的版本。

这创造了IPython,一个“交互式”Python解释器。Prez于2001年12月发布了这个259行版本。十年后,在物理学家布莱恩·格兰杰和数学家埃文·帕特森的合作下,佩雷斯将这一工具移植到浏览器中,开发出了IPython Notebook,掀起了数据科学的革命浪潮。

像其他计算笔记本一样,IPython Notebook将代码、结果、图形界面和文本内容组合在一个文件中。但与其他项目不同的是,IPython Notebook是开源的,开发者社区可以为其做出贡献。它还支持科学家常用的语言Python。2014年,这个项目演变成了Jupyter,它支持100多种语言,用户可以像在远程超级计算机上使用自己的计算机一样轻松地探索数据进行分析。

“对于数据科学家来说,Jupyter已经成为了实际的标准。《自然》在2018年写道[9]。当时,代码共享平台GitHub上有超过250万台Jupyter笔记本。如今,已有近1000万份拷贝,包括2016年发现引力波的代码和2019年对黑洞成像的代码。”我们为这个项目所做的小工作带来了巨大的回报。”佩雷斯说。

高速学习机:AlexNet(2012)

人工智能有两种不同的实现形式。一个使用编码规则,而另一个使用计算机通过模拟大脑的神经结构来“学习”。加拿大多伦多大学的计算机科学家杰弗里·辛顿(Geoffrey Hinton)表示,几十年来,人工智能研究人员一直认为后一种方法“毫无意义”。直到2012年,辛顿的研究生AlexKrizhevsky和Ilya Sutskever证明事实并非如此。

ImageNet是一年一度的竞赛,研究人员需要在一百万个日常物体数据集上训练AI,并在另一个独立的图像数据集上进行测试。辛顿说,那时,最好的算法将识别大约四分之一的错误图像。Krizhevsky和Sutskever提出的AlexNet是一种基于神经网络的“深度学习”算法,将误差降低到16%[10]。“我们基本上把错误率降低了一半,几乎是一半。韩丁补充道。

Hinton认为,他的团队在2012年的成功反映了generate结合足够大的训练数据集、出色的编程和新的强大计算GPU(最初设计用于加速计算机视频性能的处理器)的巨大潜力。“突然间,我们可以将算法运行速度提高30倍,”他说,“或者从30倍的数据中学习。」

辛顿说,算法上真正的突破其实是三年前实现的,当时他实验室创建的神经网络可以实现比优化了几十年的传统AI更精准的语音识别。“虽然它只是(比传统AI)好一点点,”韩丁说,“但它已经预示了未来。」

这些成就表明了实验室和行业中深度学习的兴起。这就是为什么手机可以理解语音查询,图像分析工具可以快速从光学显微镜图像中挑出细胞。同时,这也是AlexNet能够用很多重要的计算机工具从根本上改变科学,改变世界的原因。

参考文献:

1.事件视界望远镜合作等天体物理学。列特。875,L1 (2019年)。

2. Braig, K., Adams, P. D.

下一篇:男女如何接吻(如何向蒋正寒一样接吻)
上一篇:电视盒子如何(iptv电视盒子怎么用)