内容 30年来我们已经走过了漫长的道路(但你还什么都没看到!)

30年来我们已经走过了漫长的道路(但你还什么都没看到!)

30年的Mathematica

长期的技术

在6月23日,我们庆祝纪念发射30周年Mathematica..30年前的大多数软件现在都已经过时了。但不是数学。事实上,从很多方面来看,即使30年过去了,我们还只是刚刚开始。我们的使命一直以来都是一个重要的目标:让世界尽可能的可计算,并为一切事物添加一层计算智能。

我们的第一个大应用领域是数学(因此得名“Mathematica”)。我们一直在探索数学的可能性。但在过去的30年里,我们已经能够建立在我们定义的框架之上Mathematica 1.0.来创建整个计算能力的大厦我们现在称之为Wolfram语言- 与当今的数学相对应。

从我开始设计Mathematica开始,我的目标就是创建一个经得起时间考验的系统,为我对未来计算的愿景打下基础。看到一切进展得如此顺利,真是令人兴奋。我原来的语言设计的核心概念继续注入我们所做的一切。这些年来,我们一直能够在现有的基础上不断建设,打造一座越来越高的综合能力塔。

今天在旧电脑上启动Mathematica 1.0很有趣,并将其与今天进行比较:

老款Mac vs iPhone

是的,即使在版本1中,也有一个可识别的Wolfram笔记本拭目以待。那Mathematica代码呢(或者,我们现在叫它,Wolfram语言代码)?1988年运行的代码今天也能运行,完全一样!实际上,我经常使用我在过去30年里写的代码,然后运行它。

当然,这需要在语言设计方面进行大量长期的训练。如果没有最初设计的强度和清晰度,这是不可能的。但是很高兴看到这一点所有的日常努力我投入领导力和一致的语言设计在30年来的长期稳定性上得到了很好的报酬。

它的成长如此之多

回溯到1988年,Mathematica是向前迈出的一大步在高级计算中,人们对它能做的事情感到惊讶。但这绝对比不上Mathematica和Wolfram语言今天所能做的。从一个角度来看,这是不同的主要功能领域从1988年到今天都在“点燃”:

功能差异

551 1988年内置职能;现在有5100多家。对每个功能的期望也大大增加了。"的概念机能亢进自动化的一系列算法能力在1988年就已经存在了——但它们的能力与我们现代的超级功能相比就相形见绌了。

早在1988年,符号化表达和符号化编程的核心思想就已经存在了,就像他们今天所做的一样。还有各种各样与数学计算有关的功能,以及基本的可视化功能。但在随后的几年里,我们征服了一个又一个地区。

按版本划分的功能增长

部分原因是原始计算机能力的增长使新领域成为可能。部分原因是我们有能力理解我们能做什么。但最重要的是,通过我们系统的集成设计,我们已经能够在我们已经做的基础上,以更快的速度,逐步扩展到一个又一个新的领域。(这里是函数计数的版本图。)

最近,我发现了我在1991年写的一个待办事项清单——我很高兴地说,现在,在2018年,基本上上面的所有事情都已经成功完成了。但在很多情况下,需要花费大量的时间来建立一个完整的能力塔,才能实现我想要的。

从一开始,甚至从我在Mathematica之前的项目我的目标是在系统中建立尽可能多的知识。一开始,这些知识大多是基于算法和形式的。但是,当我们可以常规地预期到中央服务器的网络连接时,我们开始认真地构建我们现在的巨大的知识库关于真实世界的可计算数据

早在1988年,我就能在我写了一本750页的书.今天,如果我们打印出来在线文档这需要36,000页。系统的核心概念保持简单明了,但它们仍然完全可以捕捉它们小的书

书形式的当前文档

世界如何变化

30年基本上是现代数字计算历史的一半。令人惊讶的是,Mathematica和Wolfram语言不仅有力量坚持下去,而且在整个过程中保持了它们的整体形式和结构。

三十年前的Mathematica(所有2.2兆字节)在“邻居软件商店”的盒子里进入了“邻居软件商店”的盒子上,并分发了软盘集合(或者对于各种磁带上的较大电脑)分发。今天,只需随时下载它(约4千兆字节),访问其知识库(许多Terabytes)在线 - 或者一个只需直接运行整个系统Wolfram云,通过Web浏览器。(在历史上的好奇的脚注中,网络实际上是在1989年又发明了一系列已购买以运行Mathematica的下一个计算机。)

Mathematica软盘

30年前,有运行Mathematica的“工作站级计算机”,但基本上都是由机构拥有的。1988年,pc使用MS-DOS,工作内存限制在640K,这不足以运行Mathematica。Mac可以运行Mathematica,但它总是非常合适(“需要2.5兆内存;推荐4mb”)——在每本笔记本的页脚上都有一个内存指标,告诉你你有多接近内存耗尽。哦,是的,Mathematica有两个版本,这取决于您的机器是否有“数字协处理器”(让它在硬件而不是软件中执行浮点运算)。

摩托罗拉手机

回到1988年,我有第一个手机 - 这是鞋的大小。和Mathematica这样的想法可以“在手机上运行”似乎是荒谬的。但在这里我们今天是Wolfram云应用程序在手机上,和Wolfram播放器在ipad上运行(是的,是的,他们没有虚拟记忆,因此我们在过去的旧日内的内存管理传统非常方便)。

1988年,运行Mathematica的计算机总是插入电源插座的东西。例如,在飞机上使用Mathematica的概念基本上不可思议(好的,好的,即使在1981年,当我把奥斯本的1台电脑拖到飞机上时,我确实为它找到了一个电源插座回到747)。直到1991年,我首先骄傲地举行了一个谈论的康复笔记本电脑(粗鲁地)运行Mathematica ood电池 - 并没有常规运行Mathematica,也许是另一十年。

我用了很多年1989年^ 1989年这是我在一台新机器上尝试Mathematica时的测试计算。在1989年,我通常会数秒等待计算完成。(1988 ^ 1988.在1988年,它通常太慢,无法发挥作用:可能需要几分钟才能返回。)当然,今天,同样的计算是瞬时的。(实际上,几年前,我在第一个问题上又做了一次计算覆盆子π电脑这又花了几秒钟。但那是一台25美元的电脑。现在即使它运行计算也非常快。)

多年来计算机速度的提高不仅在数量上,而且在质量上影响了我们所能做的事情。在1988年,一个人做了一个计算然后看结果。我们讨论了如何实时地与Mathematica计算交互(实际上,在1989年,NeXT计算机上就有一个演示,做了一个简单的例子)。但是,在计算机速度达到我们能够实现的标准之前,基本上花了18年的时间操作动态" Mathematica in the loop "。

从一开始,我就认为图形和可视化是Mathematica的一个重要特性。那时有“paint”(位图)程序,还有“draw”(矢量)程序。我们决定使用当时新出现的PostScript语言独立地表示所有图形输出分辨率。

我们有各种各样的计算几何的挑战(想想所有那些小破碎的多边形),但即使是在1988年我们能够生成分辨率无关3 d图形,并在准备原始启动Mathematica我们发现“最复杂的3 d图形我们可以轻松地生成”,最终形成了最初的二十面体“尖钉”——它进化成了今天的我们菱形hexecontahedron标志

Spikey进化

在一个破坏软件时代的标志中,原来的Spikey也很好地展现了优雅,但异想天开的Mathematica启动屏幕:

Mathematica启动屏幕

早在1988年,就有命令行界面(如Unix shell)和字处理程序(如WordPerfect)。但将文本、输入和输出以及图像混合在一起的“笔记本”(游戏邦注:通常是在单独的窗口甚至是单独的屏幕上生成)是一个新想法。

甚至在Mathematica 1.0中,今天的Wolfram笔记本中已经出现了许多熟悉的特性:单元格、单元组、样式机制等等。甚至有相同的doubled-cell-bracket评价indicator-though在那些日子里更长的渲染时间意味着需要更多的“娱乐”,而数学的形式提供bouncing-string-figure沙漏光标在实时计算中纵向追溯中断刷新阴极射线管显示器。

在现在标准的优秀软件体系结构中,Mathematica从一开始就被分为两部分:执行计算的内核和支持笔记本界面的前端。这两个部分通过MathLink协议进行通信(今天仍然使用,但现在调用了该协议)WSTP),基本上以一种非常现代的方式来回发送象征性的表达。

早在1988年,当像Macs这样的计算机努力运行mathematica时,在本地桌面机器上运行前端,然后在更强大的机器上运行“远程内核”是很常见的。有时,这台机器将通过以太网连接,或很少通过互联网。更常见的情况是使用拨号连接,是的,1.0版本中有一个完整的机制来支持调制解调器和电话拨号。

当我们第一次构建笔记本电脑前端时,我们认为它是内核的一个相当薄的包装——我们可以“快速”处理不同计算机系统的不同用户界面。我们首先为Mac做前端,然后(部分是并行的)为NeXT做前端。在几年的时间里,我们为当时的新微软Windows和X Windows建立了独立的代码库。

但随着我们对笔记本电脑前端的打磨,它变得越来越复杂。因此,当我们在1996年设法创建了一个可以在所有平台上运行的合并代码库时,我们松了一口气。

在超过15年的时间里,事情就是这样运作的。但后来出现了云计算和移动技术。现在,出于必要,我们又有了多个笔记本前端代码库。也许再过几年我们就能把它们合并起来。但有趣的是,几十年过去了,同样的问题一直在循环。

与前端不同,我们从一开始就把内核设计得尽可能健壮可移植。多年来,它已被移植到各种各样的计算机上——通常是作为一种新型计算机运行的第一个严肃的应用软件。

从Mathematica开发的早期开始,一直都有一个原始的内核命令行界面。今天它仍然存在。让我惊讶的是,在一些新的和不熟悉的情况下,拥有原始的界面真的很好。早在1988年,它甚至可以制作图像——就像ASCII艺术——但现在对它的需求并不那么大。但是,原始的内核接口就是一个例子Wolframscript.用于提供对Wolfram语言的编程访问。

软件考古

那里的历史上有很大的计算历史正在消失。练习仍然是运行Mathematica 1.0并不容易。但经历了几次早期的MAC后,我终于发现了一个似乎仍然跑得很好。我们从其分发的翻盖加载了Mathematica 1.0,是的,它推出了!(我想在1988年6月23日在实际发布前一周进行了分布式流放;我模糊地记住了一个争夺来获得复制的最终磁盘。)

版本1截图

不用说,当我想直播的时候当电脑停止工作时,屏幕上只显示了一个奇怪的斑马图案。敲打电脑的一侧(典型的20世纪80年代的补救方法)没有任何效果。但就在我打算放弃的时候,这台机器突然活了过来,我又要运行Mathematica 1.0了。

我尝试了各种各样的东西,创造了一个相当长的笔记本。但后来我想知道:这是多么兼容?所以我在软盘上保存了笔记本,并将其放入软盘驱动器(是的,您仍然可以在现代计算机上获取)。起初,现代操作系统不知道如何处理笔记本文件。

但后来我加上了我们的老。Ma”文件扩展名,并打开它。哦,我的天啊,成功了!最新版本的Wolfram语言成功读取了1988年的笔记本文件格式,并渲染了活的笔记本(同时也创建了一个漂亮的、现代的”。nb”版本):

早期Mac上的Wolfram语言

图形周围有一点有趣的间隔,反映了1988年的旧方法。但如果只需选择笔记本电脑中的单元格,然后按转变+进入,出现了一个完全现代化的版本,现在有彩色输出!

现代版

前方的道路

在Mathematica之前,复杂的技术计算充其量只是技术计算专家的一小部分“神职人员”的职责。但一旦Mathematica出现,一切都改变了——突然间,一个典型的工作科学家或数学家可以实际地指望自己动手进行严肃的计算(然后将结果保存或发表在笔记本上)。

在过去的30年里,我们非常努力地工作,逐步开放更多的领域进行即时计算。通常里面都有非常复杂的技术。但我们的目标是让人们能够将高层次的计算思维尽可能直接和自动地转化为实际计算。

结果是令人难以置信的强大。看到这么多年来用Mathematica发明和发现了这么多东西,以及世界上许多最有生产力的创新者都在使用Mathematica和Wolfram语言,这是一种巨大的满足感。

但令人惊讶的是,即使在这些年之后,我认为Mathematica和Wolfram语言的最大优势只是刚刚开始变得广泛明显。

部分原因在于,人们逐渐认识到系统地、连贯地将知识构建到一个系统中是多么重要。是的,Wolfram语言在这么多年来一直是独一无二的。这意味着我们有一个巨大的计算智能塔,可以立即应用到任何事情上。

平心而论,在过去的30年里,Mathematica和Wolfram语言主要是作为桌面软件部署的。但特别是随着一般计算生态系统的日益复杂,我们已经能够在过去的5-10年里构建出极其复杂的计算生态系统强大的部署渠道现在已经允许Mathematica和Wolfram语言用于越来越重要的重要企业设置。

Mathematica和Wolfram语言长期以来一直是研究、教育和定量金融等领域的标准。但现在他们有能力将他们所代表的计算智能塔带到任何使用计算的领域。

从Mathematica开始,我们就一直在研究现在的人工智能(在最近的时间里,我们一直是支持人工智能的领导者现代机器学习).我们也非常深入地参与了各种形式的数据现在称为数据科学

但是现在才能更清楚,这是Mathematica和Wolfram语言的广度是多么关键,允许数据科学和人工智能实现其潜力。当然,看到我们在过去的30年里建造的所有这些能力都很满意 - 以及我们努力维持的所有设计一致性 - 现在在这样的地区非常重要。

计算的概念无疑是上个世纪最重要的智力发展。Mathematica和Wolfram语言一直是我的目标,提供最好的工具,将高级计算注入到每一个可以想象的领域。

对于几乎每一个领域(从艺术到动物学),要么现在,要么很快就会有一个“计算的X”,它通过使用计算范式来定义该领域的未来。令人兴奋的是,Wolfram语言的独特特性使它能够帮助推动这一过程,并成为“计算X语言”。

传统的非基于知识的计算机语言基本上被设置为一种告诉计算机该做什么的方式——通常是在相当低的水平上。但是Wolfram语言的一个方面现在才开始被认识到它不仅仅是用来告诉计算机该做什么;它应该是真实的计算交流语言,它提供了一种表达计算思维的方式,对计算机和人类都有意义。

在过去,基本上只有计算机能够“读取代码”。但是,就像数学符号思想的广泛推广一样,Wolfram语言的目标是拥有一些人类可以轻松阅读的东西,并使用它们来表示和理解计算思想。

与笔记本电脑的想法相结合给我们带来了概念计算散文- 我认为我们的想法注定是未来的关键通信工具,由Wolfram语言独特地实现,其30年历史。

30年前,看到这么多科学家和数学家通过Mathematica“发现计算机”是令人兴奋的。今天,看到这么多“计算X”的新领域被开辟,真是令人兴奋。但同样令人兴奋的是,我们已经在Wolfram语言中实现了自动化,我们做到了将复杂的计算带到它基本上任何人访问的程度.并且它特别令人满意看到各种各样的孩子-在中学水平开始熟练使用Wolfram语言及其提供的高级计算思想。

如果我们回顾一下计算的历史,就会发现它在很多方面都是一个不断添加功能层并变得无处不在的故事。首先是早期语言。那么操作系统。后来,大约在Mathematica出现的时候,用户界面开始变得无处不在。不久之后出现了网络,然后是大规模的互联系统,如网络和云。

但现在,Wolfram语言提供了一个新的层:计算智能层——它使人们可以理所当然地拥有关于计算和世界的高水平内置知识,以及自动化应用程序的能力。

在过去的30年里,许多人使用了Mathematica和Wolfram语言,还有更多的人通过像这样的系统暴露了他们的能力Wolfram | Alpha与他们建立。但是现在有可能的是让Wolfram语言在整个计算世界中提供一个真正无处不在的计算智能层。我们花了几十年的时间建立了一个技术和能力的塔,我认为这是值得的,但现在我们已经在那里,是时候让它发生了。

但是Mathematica和Wolfram语言的故事不仅仅是一个技术的故事。这也是一个非凡群体的故事,他们选择了Mathematica和Wolfram语言作为他们工作和生活的一部分。现在,当我们向前迈进,认识到Wolfram语言在未来世界的潜力时,我们需要这个社区来帮助解释和实现Wolfram语言定义的范例。

不用说,向世界注入新的范式从来都不是一件容易的事。但这样做最终推动了我们的文明,并决定了历史的轨迹。今天,我们正处在一个非凡的时刻,我们有能力将无处不在的计算智能带到世界上。

但对我来说,当我回顾这30年来,自从Mathematica成立以来,我感谢所有的一切,让我能够一心一意地追求这条道路,正是这条道路把我们带到了今天的Mathematica和Wolfram语言。我期待着我们共同努力,从这一点出发向前推进,并为我认为最终将被视为技术发展和我们的世界的关键因素作出贡献。


如欲发表评论,请访问Wolfram博客»

Baidu