热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nature盘点的这些代码,个个都改变了科学:Fortran、AlexNet还有arXiv等

杨净发自凹非寺量子位报道|公众号QbitAI今天,Nature的一篇报道有点不同。没有说最新的科学研究进展,也没有说这个时代的科学家们。而是将镜头聚焦在
杨净 发自 凹非寺
量子位 报道 | 公众号 QbitAI

今天,Nature的一篇报道有点不同。

没有说最新的科学研究进展,也没有说这个时代的科学家们。

而是将镜头聚焦在计算机上,更具体一点,是聚焦在计算机代码上。

在过去的一年中,Nature对数十名研究人员进行了调查,以选出这几十年以来,改变研究的关键代码。

现在,评选结果新鲜出炉。

简单看了下,有半世纪的“语言先驱”、“祖宗之法”Fortran,理工科的老朋友了,相信个中滋味很多人都能体会。

还有不知不觉已经“而立之年”的论文利器arXiv.org——全球最大的免费预印本平台,每月吸引超过15000份投稿和3000万次下载。

……

究竟还有哪些代码改变了现在的科学?Nature又为何Pick这些代码?

“语言先驱”Fortran(1957)

说到Fortran,相信很多大学生都受到它的摧残“洗礼”

在知乎上有一个2015年的古早问答:“和 C++ 相比,用 Fortran 编程是怎样的体验?”

其中一个高赞回答讲述了他被Fortran“洗礼”的经历,引发广泛共鸣,得到了1331个点赞。

即便如此,依然没办法磨灭它在语言界的地位。

最早的现代计算机对用户,尤其对科学家并不友好。其中的机器语言、编程语言需要科学家对计算机的体系结构有深入的了解。

直到在上个世纪50年代,IBM团队开发了“公式翻译语言”Fortran,情况发生了改变。

普林斯顿大学的气候学家Syukuro Manabe表示,Fortran使非计算机科学家的研究人员可以访问程序。

他和他的同事使用该语言开发了全球第一个气候模型,被美国国家海洋和大气管理局200年来发生的十大突破之一。

如今,Fortran已经发展到第八个十年了,它仍然被广泛地应用于气候建模、流体动力学、计算化学等一些涉及复杂计算的学科。

古早的Fortran代码库仍然活跃在实验室和全球的超级计算机上。

而立之年的arXiv.org(1991)

一定没有想过,几乎所有科研人员都使用过的论文福音——arXiv已进入第三十个年头。

目前,它已经收录约180万份预印本,全部免费提供大家交流。

每月的投稿和下载数量也一直只增不减。

据Nature统计,现在每月将吸引了15000多份投稿和约3000万次下载。

而它一开始,也不过只是一个聚焦于高能物理的电子邮件自动回复系统。

在没有arXiv之前,科学家们大多通过邮寄的方式将提交的手稿副本寄给同事,以征求评价。

但寄出的数量有限,看到论文的也不过几个人。

见到此状,一位墨西哥州工作的高能物理学家Ginsparg决定编写了一个电子邮件自动回复系统。

订阅者每天都会收到预印本的清单,每个清单都有一个文章标识符。

于是,通过一封电子邮件,世界各地的用户可以从实验室的计算机系统中提交或检索文章,获得新文章列表或按作者、标题搜索。

一开始,Ginsparg计划是将文章保留三个月,论文内容限制在高能物理学界。

但在同事的说服之下,1993年他将该系统迁移到互联网上。5年之后,他给它起了今天的名字:arXiv.org。

Hinton指导的AlexNet(2012年)

如果要说当前更接地气一点,就要提到这个快速学习AI——AlexNet

一开始,人工智能有两种。一种是使用编码规则,另一种使用计算机通过模拟大脑的神经结构来“学习”,几十年来,人工智能研究人员一直将后一种方法视为“废话”。直到2012年,Hinton改变了这一格局。

最初的ImageNet全球挑战赛,最好的算法错误率也有25%之高。

而Hinton的两位研究生提出的这个AlexNet,一种深度学习算法,直接将错误率降低到了16%

Hinton表示,我们基本上将错误率降低了一半,或者说几乎降低了一半。而这样的成绩,揭开了深度学习在各个领域上的应用。

200年“历史”的快速傅里叶变换(1965)

相信很多数学、工程领域的同学都对它很熟悉,    快速傅里叶变换 (fast Fourier transform) 即利用计算机快速计算离散傅里叶变换(DFT)的统称,简称FFT。

值得一提的是,这里的基本思想早在1805年就已推导出来,但直到在1965年才得到普及。

来自美国的两位数学家James Cooley和John Tukey提出利用算法让计算所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著,计算速度也会提高。

比如,对于1000抽样点数,速度提升约100倍;对于100万点,速度提升5万倍。

由此,快速傅里叶变换开启了数字信号处理、图像分析、结构生物学等方面的应用。它曾被IEEE科学与工程计算期刊列入20世纪十大算法

软件驱动的生物数据库(1865)

数据库已经成为当今科学研究的一个重要组成部分,以至于很少有人注意到它其实是由软件驱动的。

在过去十几年中,数据库以肉眼可见的速度影响了很多领域,但也许没有什么地方可以比生物学更为显著。

不管是从蛋白质序列发现癌症致病因子,还是合成生物学等领域都少不了庞大基因组和蛋白质数据库的工作。

上个世纪60年代初,当生物学家还在努力拆解蛋白质的氨基酸序列时,Margaret Dayhoff(生物信息学先驱)则开始默默整理这些蛋白质信息,创建蛋白质和核酸数据库以及查询数据库的工具。

她的《蛋白质序列和结构图谱》在1965年首次出版,描述了当时已知的65种蛋白质的序列、结构和相似性。而且她还将其数据编码在打孔卡中,这使得扩大数据库并进行搜索成为可能。

之后,更多计算机化的生物数据库也随之而来,蛋白质数据库于1971年上线,今天它详细记录了17万多个大分子结构。

天气预报员:一般流通模型(1969年)

“蚂蚁搬家蛇过道,明天必有大雨到。”

以前的天气预报都是依靠人们的经验和直觉,直到这个模型——一般流通模型的出现,根据物理定律进行气候建模的工作,由此开启了计算机预测天气的时代。

在20世纪40年代末,现代计算机之父约翰·冯·诺依曼便成立了他的天气预测小组。

1955年,第二个团队—地球物理流体动力学实验室也开始了所谓的 “无限预报”—即气候建模的工作。

直到1969年,这其中才有人真正做出了天气预测模型,使其首次能够在硅片中测试二氧化碳水平上升的影响。,创造了2006年Nature形容的科学计算的“里程碑”

今天的模型可以将地球表面划分为25×25公里的方块,将大气层划分为几十个层次。

相比之下,Manabe和Bryan的海洋-大气组合模型,使用的是500公里的方块和9个层次,只覆盖了全球的六分之一。

除此之外,还有数字处理者BLAS,显微镜必不可少的NIH Image,序列搜索器BLAST,数据浏览器IPython Notebook

好了,你Pick哪一款?如果其他心仪的代码,欢迎与我们分享。

更多细节可戳下方链接了解哦~

参考链接:
https://www.nature.com/articles/d41586-021-00075-2
https://www.zhihu.com/question/28683874

—  —

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

加入AI社群,拓展你的AI行业人脉

量子位「AI社群」招募中!欢迎AI从业者、关注AI行业的小伙伴们扫码加入,与50000+名好友共同关注人工智能行业发展&技术进展:

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~



推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • mapreduce数据去重的实现方法
    本文介绍了利用mapreduce实现数据去重的方法,同时还介绍了人工智能AI领域中常用的框架和工具,包括Keras、PyTorch、MXNet、TensorFlow和PaddlePaddle,并提供了深度学习实战的代码下载链接。 ... [详细]
author-avatar
大航
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有