背景和愿景Mathematica

开幕式基调Wolfram Mathematica虚拟会议2011, 9月26 - 27日。

你好。我很高兴和你在一起。我被要求谈论背景和愿景Mathematica

这个月正好是我开始建房25年的日子Mathematica.这真的很令人兴奋Mathematica多年来增长和繁荣。但我不得不说,在过去几年中,真正显着的事情似乎已经发生。感觉像Mathematica真的是年龄的。它在合适的时间只是正确的地方。它可以实现一些基本上和深刻的强大的事情。喜欢Wolfram | Alpha,提供以及我们在明年将会遇到的其他事情。

但让我开始在一开始就开始。如何做Mathematica成为第一名?下面是我个人的故事。

在我十几岁的时候,我是一名物理学家。做理论物理需要做大量的数学计算。我想:这些计算是机械的。为什么我不能找个机器来做呢?

那是在20世纪70年代中期。当时有很多研究系统都是用计算机来做代数和其他事情的。我开始使用它们,并设法用它们做了一些非常有趣的物理实验。但没过多久我就摆脱了现有的系统。

所以在1979年末,我决定,要想拥有我想要的那种系统,唯一的方法就是自己建造。所以我所做的。很快这个系统就成为了第一个商用计算机代数系统。但几年后,我想要更多。

我一直在做很多基础科学。为被称为“复杂性理论”的基础开发基础。做了很多东西真正只能通过电脑做的事情。但是你知道,这是一团糟。我有很好的计算机代数系统。我有编程语言。和图形系统。和数字子程序库。和排版系统。而且我意识到,实际上我可能花了大部分时间只是在一起抚摸这些东西。 And that got me to thinking: perhaps I should just build a single system, once and for all, that can do all the computational stuff I’ll ever want to do.

我想了一会儿,然后,就在25年前的这个月,我决定,是的,我应该这么做。

我开始建设Mathematica

从一开始我就有几个原则。我想第一个原因很私人:我想Mathematica成为我生命中唯一使用的计算系统。所以我想让它涵盖所有我想做的事情:并且有一个足够强大的结构,可以向任何方向延伸到我想要的范围。我知道Mathematica将是一个庞大的系统,并将继续增长。

从一开始,我就付出了巨大的努力来确保它是连贯的、统一的。并且将永远如此。我希望系统的各个部分都能完美地结合在一起。所以如果你在使用系统的一个部分,你可以立即把其他部分拉进来,你马上就会知道如何使用它,它就会无缝地融入进来。

另一个原则是,我希望这个系统尽可能地自动化。我的意思是,使用电脑的全部意义就是让它为你工作。所以我的想法是,你应该直接说出来Mathematica你想做什么,它应该弄清楚怎么做。如果你是一个专家,那么你会设置各种旋钮和开关。但大多数时候,你会放任不管Mathematica找出最好的算法,或者别的什么。完全自动的。这样你作为一个人就可以开始思考你想做什么,而不是电脑怎么做。

好吧,所以,这些是原则。但系统应该如何实际工作?那里有一个很大的想法:这是象征性的编程。实际上,当我开始在先行者工作时Mathematica32年前,我想我是一个坚定的,年轻的基础科学家。所以我想,要做一个用于计算的系统,我最好在最基本的可能的层面上理解什么是计算。以及它应该如何表示。

所以我回到了基础,意识到有一个非常干净的方法来做这件事。关键思想是,一切都可以用符号表达。无论是字符串、数组、公式、图形、程序、文档还是用户界面。无论什么。因为所有东西都是用统一的方式表示的,所以可以对它进行统一的操作。这就是这个巨大系统的实际情况Mathematica能够很好地结合在一起,并以一种连贯的方式工作。这很有趣。在某种意义上,符号程序设计是使Mathematica可能的。当你开始吸毒的时候Mathematica这是在那里的东西,总是为正在发生的事情提供框架。

但是我想符号化编程确实是可行的-以这种方式Mathematica是困难的。它需要一个巨大的技术堆栈。这就是为什么,即使经过这么多年,严肃的符号编程仍然是一种独特的特性Mathematica

好的。所以让我们看一点Mathematica.有很多方法可以使用Mathematica.但这里有一个。你只要输入一个问题,它就会打印出结果。

1000年!

1000年!

让我们画一个图。

Plot[Sin[x] + Sin[10 x], {x, 0,20}]

图[Sin[x]+Sin[10 x], {x, 0,20}]

这很容易。好的。现在我们想让它动态。这也很简单。我们只需要添加一个参数,然后告诉Mathematica我们想要操作这是这个参数的函数。

操作(图(Sin (x) +罪恶(10倍),{x 0 20}), {, 0, 1}]

实际上,你可以操纵任何东西。比如说,我们来做一个代数运算。

操纵[因子[x ^ n  -  1],{n,10,100,1}]

当然,因为这是Mathematica只是有效。

好吧,好吧。让我们做一些数据。我们也可以从任何地方导入数据。或者连接到外部设备或程序等等。这里,我们来做一些数据。

表[i→mod [i ^ 2,100],{i,100}]

表i→Mod[i^2, 100], {i, 100}]

好吧,现在假设我们想把它解释成一个网络。

GraphPlot (%)

表[i→Mod[i^2, 100], {i, 100}]

我们可以问Mathematica情节。它会自动找到一个好的布局。如果我们想要一堆呢?我们可以做一张表。

表(表[GraphPlot[我→国防部(i ^ 2 n),{我n}]], {n, 50、60}]

输出表[GraphPlot[Table[i→Mod[i^2, n], {i, n}], {n, 50,60}]

我们可以用制表符来表示。

TabView[表[GraphPlot[表[我→国防部(i ^ 2 n),{我n}]], {n, 50、60}]]

你知道:Mathematica几乎可以处理任何类型的数据。我们来拍张照片。假设我们从网上拖过来。因为这是Mathematica我们可以立即使用该图片作为函数的参数。

EdgeDetect

显示EdgeDetect输出的图像

也许我可以把这幅图像分解成碎片。等等。整个象征结构Mathematica这意味着我们可以像处理数字、文本、公式等一样处理图像。

imagePartition [%,20]

图像被ImagePartition分割

让我给你们稍微介绍一下这个符号语言。

f [x]

f [x]

这是一个象征性的表达。

f (x, y)

f (x, y)

这是什么?

x + y

x + y

这也是一种象征性的表达。

FullForm (%)

+ (x, y)

或者这个。

x ^ 2 + y / / FullForm

加[[x, 2], y)

有各种各样非常强大的函数可以构造和操作符号表达式,以非常普遍的方式。

就像这里一样。

雀巢[f,x,5]

{x, f (x), f (f [x]], f (f (f [x]]), f (f [f (f [x]]]], f (f (f [f (f [x]]]]]}

现在你可以用它做各种事情。这是制作嵌套框架。

NestList[陷害x 5]

使用巢式列表显示5帧

这就像用编程的方式构建一个玩具用户界面。当然,你可以很容易地做一个真实的版本。

TabView[{#, #}]和,x,5]

TabView NestList的

好的。但也许我应该回到那个故事Mathematica.就是这样。1988年6月23日。Mathematica版本1已释放。你知道,回来,甚至像科学家和工程师这样的人几乎从未做过自己的计算。有专门的“计算机人”谁这样做了。因为计算有点凌乱,并且耗时。好,Mathematica在过去的几年里迅速增长。但即使是Mathematica1已经有了我们现在所知和爱的基本感受Mathematica

并在1988年回来我认为大多数人这是一个非常壮观的东西。它将计算变成了你实际上所做的事情。没有特别高度训练的“计算机人”。第一批赶紧使用的人Mathematica在数学和物理科学附近。虽然即使从一开始就有人们来自各种各样的领域 - 有时候是非常意想不到的。

这些年来,世界上发生了一系列令人印象深刻的事情Mathematica.对我来说,这是非常令人满意的。感觉我们的工作为如此多的发现,如此多的发明,如此多的东西被建造。很多人告诉我,他们不可能接受教育,不可能完成项目,不可能创办自己的公司Mathematica

一开始,解释什么是Mathematica是多少。它是一个可以做你想做的一切计算的系统。它是一种用来表示所有计算性的语言。这是一种无法用语言来描述的东西。

一开始,显而易见的“杀手级应用”Mathematica是数学。所以我们决定——事实上,是史蒂夫·乔布斯真正鼓励我在这个方向——打电话给他MathematicaMathematica”。说它是“一个用计算机计算数学的系统”。嗯,人们有这个想法。并开始使用它,用它做一些很棒的事情。

当然,还有很多事情要做Mathematica甚至在最广义的意义上,“数学”一词也被使用。事实上,这么多年来,尽管Mathematica在数学中被广泛使用,这代表的比例越来越小Mathematica用法。

你知道,25年后,你可能会认为任何软件系统都会走自己的路。但不是Mathematica.相反,如果你画出功能的增长Mathematica,它实际上已经加快了。我总能找到整洁。偶尔会出土Mathematica我20多年前为它编写的程序Mathematica版本1.我会启动Mathematica8 -它就能运行。更重要的是,这个程序看起来会完全现代化。这只是纯粹的永恒符号编程。这就是建立正确基础的结果。人们可以继续在它们上面建造更多的建筑。

多年来,我们建立了一个庞大而令人印象深刻的团队Mathematica.我们发明了惊人数量的技术,惊人数量的算法,等等。但有一件事我个人一直非常参与就是弄清楚系统的总体设计。用户应该如何看待其中的所有函数;它们应该如何结合在一起。

这是很辛苦的工作。但这是一个迷人的过程。真正深刻地理解所有这些不同的领域,能够为它们创造正确的结构,正确的功能。你知道,我认为语言设计师的工作是这样的:那里有所有这些计算,人们可能想要做。您必须理解整个空间,并看看哪些正确的原语可以方便地构建这些计算。然后你必须给这些原语命名,并实现它们。这些变成了语言中的功能和其他结构。

你知道,从某种意义上说,这是一个语言设计师的重要责任。因为当人们很好地学习你的语言时,他们不仅仅是使用它 - 他们实际上是在思考它。和在Mathematica看到懂这门语言的人真是太棒了。它的实现速度非常快,令人印象深刻。

现在,当然,进来Mathematica这是一种不公平的优势。除了符号编程的思想——这是什么让Mathematica成为这样一种高级语言——还有一点:Mathematica拥有惊人数量的内置算法知识。我们的目标之一是Mathematica已经嵌入了人们能想到的所有通用算法。在每一个区域。数值计算。图像处理。数据分析。图论。无论什么。这就意味着,在语言中,你可以调用这些东西中的任何一个。它只是在你的程序中“免费”地解决一个旅行推销员的问题,或者做精细的图像处理,或者对一个巨大的稀疏矩阵进行对角化。

所有这些东西都以连贯的方式完全集成到核心系统中。你并不是在追逐库,购买随机的工具箱,并尝试着将各种各样的碎片粘合在一起,并希望它们能够工作。你有所有这些功能,所有这些算法Mathematica,都被安排得前后一致。

你知道,这很有趣。当我们进攻一个新的领域时,这是一个有趣的过程。我们总是在为长远做打算。以一种非常干净的方式实现所有可以合理实现的东西。通常我们要发明很多东西。我们知道如何用最清晰和连贯的方式来表达事物。这通常会暴露漏洞,我们必须发明全新的算法。然后我们将开始自动化——事实上,我们发明的一些最复杂的算法是为了使自动化工作平稳可靠。

当你使用Mathematica,其中一个伟大的事情是它是如何可扩展的。我的意思是,你可以一次开始做一行,计算和探索一些东西。但是,你可以开始建立很少的函数。也许赚几个用户界面。也许并行运行东西,或在GPU上或其他任何东西。但是你可以继续建设。严重的大规模Mathematica程序员在某些时候倾向于转换到沃尔夫勒姆工作台ide..但整个Mathematica系统只会向上扩展。

例如,Wolfram|Alpha现在是一个相当大的程序,以任何人的标准来说:1500万行,纯Mathematica代码。在生产中运行的无数并行机器。你知道,Mathematica它本身现在大多写在Mathematica语言。

这非常令人兴奋,尤其是最近几年。看速率是多少Mathematica发展不断加快。我们有这些原则——一致性和自动化。我们在他们身上投入了大量资金。这些年来,除了让我们所有的用户受益之外,他们现在也在为我们支付巨大的红利。因为他们让我们建造Mathematica越来越快。

就像在Mathematica我们加入了符号概率计算。我觉得我们做得很好。但让它成为可能的是,我们可以把其他一切都视为理所当然Mathematica.微积分。的数字。计算几何。无论什么。我们可以构建得越来越快,因为我们不断地构建越来越大的构件。这些都是相辅相成的。

所以,现在Mathematica拥有世界上最大的内置算法集合,所有算法集成在一起,每天被大量的人使用。在几乎所有行业的研发前线。在每个技术领域。几乎所有的财富500强公司。在世界上每一所主要大学。在很多意想不到的地方。

你知道,这很有趣。基于符号编程的基础和核心原则,Mathematica定义了一种思考计算的方式。随着时间的流逝,我们越来越明白这意味着什么,以及在这些基础上可以建立什么。偶尔也会有一些大的跳跃。比如在20世纪90年代中期,当我们首次引入符号文档时。或者在2007年,当我们引入了动态交互,以及像操作-提供了一个全新的互动模式Mathematica.不只是得到静态的结果。而是立即使用象征的力量Mathematica生成动态程序作为结果。

正如我提到的,我个人想要建房子是有自私的原因的Mathematica首先:我想用它。实际上,开始很快Mathematica第一次发行时,我就做到了,在很大程度上。我认为Mathematica作为一种望远镜的计算模拟。但我不是在观察天文宇宙,而是在观察计算宇宙。做实验用Mathematica了解计算宇宙中的节目如何表现。

我发现了一些非常非常有趣和令人惊讶的事情。我写了一本大书叫一种新的科学有关。除了这本书对科学的介绍,它还提出了创建算法的新方法,以及思考计算的新方法。

首先,这给了我们新的发展方式Mathematica.但实际上,它也给了我们一些别的东西。因为它给了我一个Wolfram|Alpha的范例基础。长期以来,我一直想尝试把世界上的知识变成可计算的。但是几年前,基于我的科学想法,和我的实践能力Mathematica,我开始构建已经成为Wolfram|Alpha。如果你还没见过它,它就存在于网络中,应用程序中,嵌入越来越多的地方。

这是在网上的。让我们从简单的开始。

2 + 2

好的。这很好。

好吧,好吧。Wolfram | Alpha对世界有很多知识。

GDP法国

我们可以在自然语言中提出问题。

法国/德国的GDP是多少

它有各种各样的数据。

西班牙的香蕉消费量

或者,让我们尝试一些教育。

波士顿校区

或者让我们比较两个名字。

罗伯特和威廉

然后它可以取出生曲线,与死亡曲线卷积,等等。

飞行开销

它有很多实时数据。我们来问一下我们附近的平面。也许我们可以点击其中一个,看看它的所有细节。

或者让我们输入一个基因组序列,Wolfram|Alpha会找出与人类基因组匹配的位置。

AGGTTTAATTGTTAAA

或者我们做一个更复杂的物理计算。在这里。

55mev电子在铅中

基本思想总是一样的。您输入一个查询(只是用普通的自然语言),Wolfram|Alpha将使用它内置的所有知识来计算您的查询的答案。这是一个非常复杂的系统。拥有来自数千个不同领域的数据、模型和算法。这是一种基于大量重大突破的方法,用于理解人们提供的自由形式的输入。而下面,就像我之前说的,一切都Mathematica——大Mathematica系统。

在Wolfram|Alpha中有很多令人兴奋的东西。但让我告诉你一件事。Wolfram|Alpha如何接入Mathematica.一般Mathematica是一种精确的语言,可让您以非常谨慎的方式建立任意大型程序。但是如果你把Wolfram放入其中呢?

下面是它的工作原理。从去年开始Mathematica8、可以给自由形式的输入Mathematica

极地绘图罪(3θ)

极坐标图sin(3)

所以你可以要求这样的图。Wolfram|Alpha可以将这种模糊的输入转化为精确的输入Mathematica

让我们要求添加一个框架。再次,我们会得到Mathematica由自由形式输入合成的代码。现在我们来做图像处理。你也可以做数据。

添加紫色框架

用紫色坐标系画sin(3)的极坐标

模糊的图像

极坐标sin3的模糊图像

或者假设我们要旗子。

南美国家

阿根廷,玻利维亚,巴西,智利,哥伦比亚,厄瓜多尔,福克兰岛,法国瓜岛,圭亚那,巴拉圭,秘鲁,苏里南,乌拉圭,委内瑞拉

南美国家的国旗

南美洲国家的国旗

现在我们可以做边缘检测。

EdgeDetect / @ %

EdgeDetect之后的南美国旗

如果你知道怎么写就好了Mathematica,以全文的语言Mathematica.但是这种自由形式的输入意味着你不需要知道那种语言。你可以开始使用Mathematica只懂简单的英语。这是另一种自动化你只要说你想要什么,然后Mathematica弄清楚怎么做。

你知道的,Mathematica,现在是Wolfram|Alpha,我们有一个相当惊人的技术堆栈。而现在我们正享受着一段美妙的时光去理解这一切的含义。并开发了一些非常出色的新产品。

你们可能见过25个移动应用程序我们带出来的。或是我们的衍生公司最畅销的电子书联系媒体已使用Mathematica生产管道。在接下来的几个月里,你会看到一些真正出色的产品出现,建立在这两个基础上MathematicaWolfram | Alpha。我一点也不觉得尴尬的产品是用了25年的技术开发才生产出来的。

顺便说一下,我应该提一下几个月前刚出来的一个主要产品和方向:CDF-可计算文件格式.这是另一种由象征的本质而成为可能的想法Mathematica:可计算的文档。过去的情况是,要制作严肃的交互式内容,你真的没有任何选择,只能做各种乱七八糟的界面编程。但在Mathematica在这里,你做的所有事情都在一个文档中,就像所有事情都在一个文档中一样Mathematica,可以象征性地操纵。

使用动态交互Mathematica,我们推出了我们称之为Wolfram示范项目.贡献了超过7,000示威活动。所有人都在写的Mathematica.就像嵌入文档中的小应用程序。演示项目是示例代码的一个很好的源代码,它补充了Mathematica文件系统。

但是现在CDF所做的是提供一种封装交互式可计算文档的方法。所以它们可以发生在任何地方。在网页上。无论在哪里。你可以用它们来制作新一代的教科书和其他教育材料:这方面有很多工作要做。你可以用它们来制作交互式报告。我不得不说,这是相当壮观的。

我的意思是,我之前坚持我们公司内部的所有报告都以cdf的形式生成,它真的非常强大,能够与报告动态交互,并重新计算你想要的东西。

当然还有更多的统一。因为现在Wolfram | Alpha可以生成CDF.所以实际上,我们直接从自由形式的自然语言转向交互式程序。这只是一个典型的例子,说明了我们拥有的所有这些技术,都能很好地结合在一起。

我不得不说,尽管我最初创造了Mathematica25年前,我一直对它让一切成为可能感到惊讶,就在此时此地。对我,对我们所有人沃尔夫勒姆研究Mathematica已经不仅仅是一个软件系统,而是一种思考计算的整体方式。你知道,在公司外面,我经常遇到一些人,他们告诉我他们正在做这个或那个项目。我说,“你应该吸毒Mathematica的。”他们说,“真的吗?”然后他们真的去尝试。我听到他们说:“哇。我不知道这能行。我不知道有什么能做到这一点。”

而且,对于作为系统设计师的我来说,所发生的事情通常是相当令人满意的:他们只是尝试了最明显的事情——最干净和直接的方式来攻击他们的项目Mathematica.它刚才工作。他们能够从头到尾一路走来Mathematica

好了,我想我该结束了。我希望通过今天,你们有机会了解更多关于Mathematica.我们很自豪Mathematica而这么多人能够做些什么Mathematica在过去的几年里。虽然你还没有看到任何东西!

谢谢。

发布在:Mathematica

4评论

  1. 你确实提供了一份非常出色的工作。这是显而易见的。一种革命。毫无疑问,所有的科学家都会同意……

    而我们,老师,必须应对你们的发现所带来的后果。我们该如何生存下去,并继续教孩子学习基础数学,以及分析……我们如何解释这些是真正先进的和心智发展的东西,以了解?孩子们将知道(或已经知道)在Mathematica或Wolfram|阿尔法能力。他们的手机里有微型电脑,程序比人脑增长得快,变得越来越聪明。

    不过,我们都记得计算器的故事。现在没有必要知道乘法表……那么,如果所有这些积分,甚至微分方程,以及更多的积分,只要键入一行,点击免费的w|a,那么21世纪的孩子们为什么要学习如何求简单的积分呢?...

    这是我们自2009年以来一直在思考的问题。去年,我们八年级的学生检查了俄罗斯中学毕业考试(K-12水平左右),至少可以通过W| a的“通过”分数。也许这没什么。然而,有一种可能性是,人们会决定不学习任何电脑可以做得更有效的东西。我们想到的例子是:国际象棋世界冠军的名字现在应该总是加上“在人群中”。看看近年来国际象棋的流行,类似的故事可以很容易地用数学技巧来重复,然后是....在不久的将来,谁会开发Mathematica或W|A ?那些没有互联网的人?

  2. 上帝真的提出了我想过的观点。然而,我不是数学教育家,至少现在不是。我做过物理计算,我发现这个Mathematica和写得很好的C代码相比是很棒的。事实上,我现在正在转换一段由senior编写的C代码来完成我的工作,只是因为我不能忍受仅仅更改一些参数就一次又一次地运行她的代码。我不想成为一台机器!我应该mathematica基本上比C或Matlab更接近数学,尽管在我的位置更受欢迎。

    M。

    迈克尔
  3. 我是数学专业的学生,我很自豪我是Mathematica的用户。它是数学家的伟大工具。

  4. 我是一名巴西学生,我对Mathematica这个神奇的工具感到很好奇。
    Wolfram是天才系统设计师!当然,他正在为世界展示展示许多其他令人难以置信的东西。

    H警里
Baidu