【CSDN 编者按】程序员用代码改变世界,基于计算机硬件的迅猛发展,摩尔定律被渐渐遗忘,科学圈也受到了一系列的影响。近日,科学顶刊 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

☞TikTok 被永久禁止;苹果因不送充电器被告;英特尔将把 3 纳米芯片外包给台积电 | 极客头条☞300 多行代码搞定微信 8.0 的「炸」「裂」特效!☞重大调整!余承东兼任华为云与计算 BG 总裁

影响科学圈的“十大名码”!相关推荐

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

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

  2. 十年码农的肺腑之言:“技术不是万能”

    作者 | 我不想种地 责编 | 伍杏玲 出品 | 程序人生(ID:coder_life) 我是一个有着十年码龄的无证程序员,如果算上996那就更长了. 我有读故事的喜好,别人的艰辛.遭遇.苦难,往往能 ...

  3. 【数据科学】反思十年数据科学和可视化工具的未来

    数据科学在过去十年中呈爆炸式增长,改变了我们开展业务的方式,并让下一代年轻人为未来的工作做好准备.但是这种快速增长伴随着对数据科学工作的不断发展的理解,这导致我们在如何使用数据科学从我们的大量数据中获 ...

  4. 重磅!2022最新SCI影响因子发布,三大名刊NCS及国内期刊TOP10排名有变化(内附2022年最新影响因子)

    北京时间2022年6月28日,Clarivate Analytics官方发布最新年度(2021年)期刊引用报告(JCR),全球期刊影响因子(Impact factor,缩写IF)出炉. 世界公认的三大 ...

  5. 我所知道的中国NLP「破圈」十年

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在,我们已经习惯了全球各类顶级学术会议上的中国力量. 从论文入选,到参会面孔,抑或赞助企业,中国代表几乎无处不在. 前不久刚落幕的ACL ...

  6. 进化论的再思《基督教与科学》第二十课

    黄牧师 一.介绍四位学者 潘柏韬博士.弗兰斯‧科林博士.赛门康威‧莫里斯博士(不要与亨利莫里斯混淆,亨利博士是已故土木工程师.赛门康威•莫里斯博士是现任剑桥大学古生物学系主任,是世界首席的寒武纪大爆炸 ...

  7. 生命的形成《基督教与科学》第十八课

    黄牧师 一.生命的奇妙 从罗1:19-21,宇宙与地球都是精密的设计,才能有人和哺乳动物等高等动物的存在,生命的形成更为奇妙. 二.进化论的基本理论 1.传统学校教的进化论是:从无生物变成简单的生物, ...

  8. 数据分析与数据科学圈潜在“标杆级”著作,亚马逊智囊团副团长新书

    题图 | 素材来自 Pixabay 大家好,图灵君又跟各位见面了.今天为大家介绍的这本书比较特别,大概是我最近扫射的书中作者背景最「显赫」的一位了. 不知道你听说过亚马逊一个叫 Central Eco ...

  9. 大年初五,2017年数据科学圈哪件事最令你激动?

    今天是大年初五,一起赶五穷吧(智穷.学穷.文穷.命穷和交穷)! 欢迎参与今天的话题讨论:2017年数据科学圈哪件事最令你激动? 欢迎留言,参与今天的话题讨论

最新文章

  1. boost::serialization相关的测试程序
  2. 打开Excel显示:新建EXCEL文件格式和扩展名不匹配(原因+解决办法)
  3. matlab读取文件夹下所有文件的字符串,MATLAB读取文件夹下所有文件的文件名并读取数据...
  4. Sharepoint Ribbon Loaction
  5. netcore 内存限制_.NET Core 和 Serverless 构建飞速发展的架构
  6. java分治法求数列的最大子段和_同事为进大厂天天刷Java面试题,面试却履败!究其原因竟是它在捣鬼。...
  7. 实时流处理架构与技术选型
  8. 都是程序员,凭什么他工资比我高,下班比我早?
  9. zookeeper集群节点热扩容和迁移详解
  10. 软件工程团队项目方案(四):高校申请指南
  11. 【重磅】这家技术贼牛的开源公司开始狂招人啦!
  12. 洛阳地铁一号线无人驾驶_洛阳地铁第一个过街通道建成,地铁时代离洛阳人还远吗?...
  13. [树形dp][组合数] JZOJ P1794 保镖排队
  14. 基础Constants用法
  15. 2021人工智能原理与算法(国科大张文生老师主讲)
  16. 一个屌丝程序员的青春(六四)
  17. 斗地主(^-^)发牌程序
  18. [229]python3的requests类抓取中文页面出现乱码的解决办法
  19. 自由地思考——保护思想环境
  20. Newstart HA 典型配置指导

热门文章

  1. Python报错it could not find or load the Qt platform plugin windows
  2. 【Linux】 CentOS 7 安装 RabbitMQ
  3. 翻转子串(important!)
  4. Android Studio开发学习 - 1. 添加Activity
  5. linux 常用命令练习
  6. Linux GPIO键盘驱动开发记录_OMAPL138
  7. python之模块导入和包
  8. codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
  9. click() bind() live() delegate()区别 1
  10. hdu 5229 找规律