新闻详情

新闻详情

首页 / 资讯中心 / 详情

吉姆的意外邂逅,改写科学计算史

发布时间:2026/9/28 5:03:23来源:尧图网络
吉姆的意外邂逅,改写科学计算史
01在上世纪90年代中期, 当吉姆还在麻省理工学院攻读硕士学位的时候, 他来到了俄勒冈州的阿什兰。这个地方因为那里有一个在世界范围内都享有盛名的莎士比亚戏剧节, 所以非常知名。当吉姆正在剧院后方公园里进行杂耍练习的过程当中, 他碰见了一位来自施乐PARC的科学家, 这位科学家的名字叫做帕维尔·柯蒂斯, 并且帕维尔柯蒂斯也表达了想要参与进来的意愿, 打算与吉姆一起玩一个双人形式的杂耍活动。吉姆欣然同意了, 于是他们两人在一起愉快地玩了起来。这两位朋友是边玩耍、边闲聊的这种状态, 在这个过程当中, 帕维尔把情况告诉了吉姆, 具体的内容是, 他说他自己发现了一个新的编程语言: 。它的表达方式是那种非常严谨、条理清晰的风格通俗易懂的程度简直就像是能够直接拿去跑的程序伪代码。所以, 帕维尔还有他那一批专门从事科学研究工作的人员, 对这一点真的是喜爱到了极点。吉姆没有说出来, 他只是在心里默默地把这个东西给记下了。当吉姆回到麻省理工学院之后, 他就会去着手撰写自己的硕士学术论文内容。那篇论文的内容主要是围绕超导体以及半导体相关的研究领域展开的。这一研究工作是需要投入大量的时间进行实验测量的。等完成这些实验环节以后, 他还要对所产生的相关数据加以处理和统计分析工作。接着还需要拿这些数据结果与现有的理论模型进行详细的对比分析。吉姆发现, 其自身在数值分析这一方面的表现, 强大得吓人, 可是在处理其他任务的场合, 则是糟糕透顶。他用了特别大的力气, 把混着、这些代码的东西拼在一起, 总算把论文给做完了。一般的普通人最多也就做到这个程度罢了, 可是吉姆可不是这种平常人, 他在心里头开始盘算起来了, 觉得这东西挺顺手的, 要是还能再配上那种像以前一样的数值分析本事, 那可就完美了嘛。[]吉姆研究了一下, 发现了另外一个重要特点, 这个特点是它可以和C与C紧密集成。[]所以对于性能方面要求十分严格的函数, 比方说矩阵乘法、哈希处理、加密运算这类应用场景, 完全可以采用C语言来进行编写, 这种做法对于科学计算领域来说, 是属于非常具有友好性的方式。于是呢, 吉姆他就做出了决定, 要去写一个扩展程序, 这个扩展程序在保留了它作为那种通用编程语言的功能特性的同时, 还要具备数值分析的能力。很快地, 这个叫的扩展就新鲜出炉了, 它还是第一个用于科学计算的库。围绕那个核心对象, 一个非常活跃的科学家和工程师社区开始形成了, 他们开始利用加号来执行科学计算并且还在其基础上开发了SciPy, 提供了更高级的科学计算功能, 比如优化、积分、信号处理、线性代数、统计等等。马里兰州的一个空间望远镜科学研究所, 为了处理大规模的数据, 开发了一个软件包, 这个软件包, 相比于其他的软件包来说, 在处理大型数组的时候, 速度会更快一点, 但是, 在处理小型数组的时候, 速度反而会更慢一些。在2005年那段时候, 有人把某个东西的功能给搬过来了, 弄到了另一个东西上面, 然后就把那个大名鼎鼎的NumPy给推出来了。02需要留意的是, 当事人生于1995年, 而在这一年之中, 同样也爆发并记录了数桩重大的历史事件。1.Sun 公司发明了Java2.松本行弘这个人, 他推出了Ruby。3.网景的布兰登用十天的时间进行了相关的设计工作。C#和Go之类的这些语言, 它们要等到21世纪才会出现。也就是说, 在科学计算这个领域那里, 抢到了非常重要的一个先出来的那个优势不过呢, 却把一个大得很多的这个机会给弄丢了: 那就是互联网这个东西。在从1995年到2005年这段长达十年的时间段里, 互联网行业经历了非常迅猛的高速发展。Java这个编程语言, 它当时是通过J2EE这一套技术标准牢牢掌控了企业级应用开发的整个市场, 之后又一步步地向外拓展到了很多的其他领域中去, 最后它就变成了在全球范围内使用人数最多的第一大编程语言。在浏览器端, 由于GMail和Maps发挥了强劲的带动效应谷歌最终确立了自身的领先地位, 成为了这一领域中无可辩驳的头号赢家。Ruby这个语言, 靠着它对应的Web应用开发框架Ruby on Rails迅速变得非常火爆。在那个时间段, 也就是所谓的Web 2.0应用开发领域里, 它成功吸引了大量程序员的注意和喜爱。依然是在自动化脚本、运维以及科学计算这些领域里面默默地耕耘, 尽管说也存在像Flask这样的框架, 但是使用它来进行Web应用开发的人是很少的。当我抬起头往远处看去的时候, 发现Java和Ruby这两种编程语言处于非常高级的地位, 而且当时正在非常兴盛的发展着, 因此自己看起来就显得特别孤单和冷落。令人感到欣慰的是, 并没有花费多长时间, 人工智能所引发的巨大潮流便滚滚而来。在科学计算这个领域, 还有在数值分析这个方面, 是没有哪一个编程语言能够像它那样具备起来非常完备的一个生态系统的情况的, 经过了许多年累计下来的那些优势条件, 终于在这个时间点释放出来了。NumPy在数据处理这一领域中被广泛应用, 它能够帮助人们高效地处理和操作大规模数据集。通过学习来训练模型, 这种方法属于传统机器学习。- 、 → 可视化一步一步地往前走, 接着把目光投向深度学习这块领域。这些库, 几乎就已经是成了人工智能研究领域里面那个所谓的“标准工具箱”的一个状态, 它们正被各个不同的高等院校、不同的研究机构以及不同的实验室进行一种非常广泛的、大量的使用和处理。请你设定自己是一名研究生, 在你刚刚走进实验室的时候, 你的那位师兄突然丢给你好几万行没有添加任何注释的代码, 并且这些代码是使用NumPy以及SciPy来进行数值分析的, 尽管你对这种编程语言的语法感到相当的讨厌, 但是你会选择使用你自己最喜欢的诸如Java或者是Ruby这样的语言来将它们重新编写吗。大概率不会发生这样的情形吧。先发的那个优势让他把数据科学领域给垄断了, 其他那些语言想要去替代他, 真正的难点不在于语法是什么样, 而在于能不能把这个庞大的、经过很长时间考验的底层科学计算生态系统复制出来。这个生态系统的起始点, 指的是公园之中的那次邂逅, 也就是帕维尔向着吉姆进行介绍的那个时间瞬间。假如存在于一个平行的时空之中, 帕维尔与吉姆在公园之内产生了意外的邂逅。在此过程中, 帕维尔向吉姆对Java语言以及Ruby语言进行了相应的介绍内容。基于这样的情境, 我们不禁要提出疑问, 即吉姆是否会将这些工具应用于数值分析的工作任务里去呢?大概率不会是这样, 原因在于这三门语言没办法把这两点都给凑齐了: 一点是要做到清晰易懂, 另一点是要和C或者是C这两个东西集成得非常紧密。03最后, 我们再顺便来提一嘴吉姆这个人。他完成了扩展这回事儿。随后呢, 他把维护的工作全权交给了其他人去处理。他就这样挥一挥衣袖, 不带走一片云彩。当进行性能测试工作的时候, Jim和其他很多语言进行了比较, 他非常震惊地发现Java在一些简单的数值运算上居然和C语言的执行速度一样快。于是, 他开始开展了一项具体的任务, 那就是把某些东西移植到JVM平台上, 这件事的最终结果就是现在大家所说的那个知名项目了。后来呢, 他也加入了施乐PARC这个机构。在那里, 他又参与设计了那个非常有名的AOP库, 然后一下子就掀起了面向切面编程的热潮。这个情况尤其在中大那边发展得非常兴旺。在2004年加入微软以后, 他又把相关的东西进行移植到了.NET平台上面, 也就是指。在这四项工作当中, 哪怕是仅仅圆满完成其中的一项成就, 都足以在软件行业的发展历程里留下属于自己的辉煌印记。然而, 令人感到震惊的是, Jim先生竟然把全部四项任务都顺利完成。他这种不可思议的表现, 不得不让人感叹其真是一位堪称奇特的人物。吉姆现在的兴趣发生了巨大的变化, 他转向了布料模拟器的研究, 每天都玩的不亦乐乎, 沉浸在里头无法自拔。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Anaconda加速AI模型训练:环境管理与依赖隔离实战指南 2026/9/28 7:02:01

Anaconda加速AI模型训练:环境管理与依赖隔离实战指南

第一次用Anaconda跑AI模型训练的时候,我其实挺不以为然的。那时候我的想法很简单:装个Python官网版,缺什么包就用pip装什么,环境这种东西不就是几个路径的事吗?直到有一次我在调一个YOLOv5的检测模型,为了升…

阅读更多 →
ProxySQL读写分离实战:从主从复制到流量路由与故障切换 2026/9/28 7:02:00

ProxySQL读写分离实战:从主从复制到流量路由与故障切换

读写分离系列写到了第十篇。前面聊过主从复制原理、从库搭建、半同步复制、延迟监控,这一篇终于要把流量真正“分开”的关键组件摆上台面:ProxySQL。这几年我处理过不少读写分离做不下去的线上项目,共同点几乎一样——不是不会搭主从&#xf…

阅读更多 →
GESP二级真题:用二维数组判断等差矩阵的解题思路与调试技巧 2026/9/28 7:02:00

GESP二级真题:用二维数组判断等差矩阵的解题思路与调试技巧

每年GESP二级的题目里,二维数组都是重头戏。今年3月的“等差矩阵”,看起来是个数学名词,实际考察的是你对数组下标的掌控力。很多学生考完说:明明每一行都判断了,怎么还是错?问题多半出在列判断的循环写法上…

阅读更多 →
pgBackRest增量备份报错:WAL summarization未开启的定位与修复指南 2026/9/28 7:01:54

pgBackRest增量备份报错:WAL summarization未开启的定位与修复指南

凌晨四点十七分,告警群突然刷屏。定时任务里pgbackrest backup的日志停在一条 ERROR 上:incremental backups cannot be taken unless WAL summarization is enabled。数据库实例本身一切正常,CPU、连接数、慢查询都没有波动,但备…

阅读更多 →
Agent工具调用实战:从设计到落地的完整指南 2026/9/28 7:01:54

Agent工具调用实战:从设计到落地的完整指南

1. 工具调用:Agent 从“会说”到“会做”的分水岭很多人做 Agent 做到第七篇的时候,手里已经有一个能聊天、能记住上下文、能按角色设定回复的“对话体”了。但只要你稍微往真实场景里推一步,立刻就会发现一个尴尬的事实:它除了说…

阅读更多 →
协程原理深度拆解:从线程到事件循环,看清挂起与恢复的底层机制 2026/9/28 7:01:54

协程原理深度拆解:从线程到事件循环,看清挂起与恢复的底层机制

协程这个概念,我在面试里被问到过很多次,也在不同语言的项目里被折腾得不轻。第一次接触Python的async/await时,我脑子里一直绕着一个问题:你说挂起就挂起,那挂起的时候函数里的局部变量到底放在哪了?恢复的…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉