你可能经常和强大的Excel打交道,在一个个“框”内拖公式,拉图表,驾轻就熟。
但你知道吗,有一种编程语言,它是一种没有“框”的“电子表格”,不但能画各种函数图像,生成图标,还能查询实时数据,做图像识别、生成 3D 几何图形、自动计算微分积分…… 计算灵活性号称是Excel的1000倍。
这门编程语言就是著名的Wolfram语言。
01
强大的Wolfram
Wolfram语言有多厉害呢,我们先来看几个例子:
1.获取中国的GDP数据
CountryData["China", "GDP"]
CountryData是一个函数,函数的调用用的是方括号。
两个参数一目了然,Wolfram有个内置的知识库,可以从中取出中国的GDP数据。
当然,你可以用CN来代替China,Wolfram会用知识库自动做转换。
2.把中国 GDP 的历史数据画成折线图
DateListPlot[ CountryData["China", {"GDP", All}], PlotLabel -> "中国历年GDP变化", Frame -> True, PlotTheme -> "Detailed"]
3.图像处理
下面三行代码,先是导入图片,然后识别其中的文字,最后将图像缩小。
img = Import["https://unix.org/images/unix-an-open-group-standard.png"]text = TextRecognize[img]smallImg = ImageResize[img, {50, 50}]
4.识别视频中的汽车
仅仅用两行代码,就可以识别出视频中的所有汽车
从这几个例子就能看出Wolfram的特点:语义驱动,高度抽象,对于很多事情都是一行搞定。
02
最聪明的人
Wolfram语言的创造者就是Wolfram,Stephen Wolfram(史蒂芬·沃尔夫勒姆),被誉为“活着的最聪明的人”。
沃尔夫勒姆的人生就那种绝对开挂的,让人仰望的那种。
他小时候非常聪明,他发现:只要阅读,就能很快学会很多知识,上不上学无所谓。
12岁那年,当别的小朋友在院子里疯跑的时候,他花了一个夏天的功夫,静静坐在书房里,把自己掌握的物理知识整理成了一本“书”,书名叫《简明物理学目录》。
这本书包括经典力学、电磁学、热力学、量子力学、粒子物理、天体物理等几百个物理概念和术语,每个概念都配有简短定义、公式或关键参考信息,特别让人印象深刻的是,书中用众多手绘的配图形象地展示了这些概念。
15岁他开始研究量子场论和粒子物理学,并且发表学术论文,由于学术水平远超同龄人,他觉得伊顿公学的课程没意思,17岁就退学了。
高中毕业证都没拿到,沃尔夫勒姆一点儿都不在乎,因为他直接进入了牛津大学。
在牛津大学呆了两年,沃尔夫勒姆又觉得大学课程非常糟糕,再次退学,大学毕业证也没拿到。
不过他在牛津写的一篇关于“量子色动力学”的论文,引起了诺贝尔奖得主、提出夸克理论的沃尔默里·盖尔曼的注意,盖尔曼邀请他加入他在加州理工学院的研究小组。
于是,沃尔夫勒姆于1979年来到了加州理工,在这里仅仅呆了一年,他就获得了粒子物理学博士学位。
诺贝尔奖得主,著名科学家费曼对沃尔夫勒姆和他的研究极为赏识,特意给他写推荐信,强烈建议他获得麦克阿瑟奖。
(左 费曼, 右 沃尔夫勒姆)
当然,沃尔夫勒姆的研究成果也足以获奖,21岁的他成了最年轻的麦克阿瑟奖得主。
03
创业失败
沃尔夫勒姆很早就接触了计算机,学会了编程,他的老师是图灵的好友Norman Routledge。
早在70年代,沃尔夫勒姆已经可以“上网”了,当时英国一些大学已经连入了互联网的雏形ARPANET。
在研究粒子物理的时候,经常需要做大量的代数运算,所以他在上面找了一个用Lisp写的数学计算软件Macsyma,开始玩得不亦乐乎。
有了计算机的强大辅助,他非常喜欢在物理论文中写一些非常华丽的公式,让读者目瞪口呆:你是怎么推导到这一步的?
很快,获得了计算高手美誉的沃尔夫勒姆就觉得Macsyma不够用了,他决定设计一个自己的数学计算系统:SMP。
他在物理系找了一台能运行Unix的计算机VAX11, 卷起袖子开始实现SMP。
用什么编程语言呢? 沃尔夫勒姆会用汇编,ALGOL,Lisp,APL,这都是当时著名的编程语言。
但是,一个叫 Rob Pike的物理系研究生(没错,就是那个Go语言的发明人)建议他用刚刚诞生不久的C语言。
沃尔夫勒姆一看,C语言不错啊,就是它了。
1981年,SMP正式问世,这是它运行起来的样子:
眼尖的同学可能已经发现,看起来很简陋的SMP已经有了Wolfam语言的感觉了。
你看它也是Input ,Output成对出现,函数调用用方括号,只不过所有的图形都是在终端的字符界面上显示的。
SMP功能强大,解救了无数研究者,诺贝尔物理学奖得主斯蒂芬·温伯格说:自从有了它,再也不用担心要请我的学生帮忙求解微分方程了。
看到商业机会的沃尔夫勒姆决定创业,成立了一家叫做Computer Mathematics Corporation的公司,SMP卖得相当不错,虽然每份售价高达40000美元,还是有不少工业和政府得实验室在买。
不过他的运气不好,首先学校对知识产权的态度发生了变化,不让他随便把软件拿出去商业化,其次80年代初AI(专家系统)也火了一阵,风险投资认为专家系统是未来,押宝AI,沃尔夫勒姆没机会了。
04
乔布斯帮助起名
创业失败,沃尔夫勒姆又一头扎进了基础研究之中。
在普林斯顿大学,他对元胞自动机做了大量的研究,系统性地调查了基本元胞自动机制的类别,提出“计算等价原理”:任何看起来复杂的系统(如流体、社会系统、蚁群等),在计算能力上都等价于图灵机。自然界的很多过程,其实就是一种计算;
在伊利诺伊大学研究复杂系统时,他发现现有的工具根本无法满足他的科研需求,因为他需要一个这样的系统:
1.能做符号计算(不是只处理数字)
2.能快速可视化复杂图案
3.能支持编程、建模、数学推理的统一环境
4.能跨学科整合:数学、物理、图形、算法
而当时虽然有各种工具,但是太分散,每次做点儿事情就得不停地切换工具,非常低效。
为了最大化自己的科研效率,实现“工具+语言+环境三位一体”的独特思路,沃尔夫勒姆决定利用开发SMP的经验,重新设计一个系统。
新系统叫什么名字呢,这个很让人发愁,这时候沃尔夫勒姆遇到了被苹果放逐的乔布斯。
乔布斯此时正在开发一个叫做NeXT的电脑,他看到沃尔夫勒姆的软件,立刻就有了浓厚的兴趣。
乔布斯建议沃尔夫勒姆放弃Omega,Polymath这样让人难以理解的名字,坚持说一定要用这个名字:Mathematica 。
不仅给软件起了名,乔布斯还和沃尔夫勒姆达成了一项协议,把Mathematica预装在NeXT计算机上。
有了乔布斯这个榜样的力量,沃尔夫勒姆又和Sun,SGI公司,IBM等巨头达成了协议。
注意,这个列表中没有微软,因为当时MS-DOS对应用程序有640K内存的限制,Mathematica无法运行。
软件还没有开发出来,就有了销路了,沃尔夫勒姆开始了疯狂的开发。
1988年6月,Mathematica正式发布了。
看看,当时的软件都是用软盘来安装的。
Mathematica一推出就火了,尤其在科研和工程界,它几乎立刻成为主流的计算工具之一。
NASA、CERN、MIT、哈佛、沃顿商学院等机构都在用,一度是“高水平科研的标志”。
Mathematica功能强大,但是非常专业,普通得用户使用门槛比较高。
当沃尔夫勒姆6岁的儿子接触到Mathematica时,提出了这么一个问题:为什么我不能用简单的英语来表达我的意思呢?
这引发了沃尔夫勒姆的思考,他开发了一个Wolfram|Alpha 的网站,让大家可以用自然语言来提问。
Wolfram|Alpha不但极大地降低了Mathematica的使用门槛, 也引起巨头们的注意,变成了主流平台背后的知识引擎:
微软把它接入到了Bing之中,Siri也也将其接入语音助手,而Siri不久被苹果收购。
随着 Wolfram|Alpha 的成功和云计算的兴起,Stephen Wolfram 开始重新审视自己早期的一个想法:把 Mathematica 中的语言部分独立出来,作为一个通用的、知识驱动的编程语言。
新语言不仅仅是做数学计算,而是一个内置世界知识的通用计算语言。
这就是我们开头提到的Wolfram编程语言。
05
结语
Wolfram能结束Excel长达30年的统治吗?
当然不行,因为两者要解决的问题侧重点是不同的。
Excel适合结构化数据的基本处理,上手快,适合报表,数据分析等领域。
Wolfram内置丰富的现实世界知识和数据,支持复杂的数据分析和处理,但是门槛也比较高。
虽然Wolfram在功能和灵活性方面具有显著优势,但Excel凭借其易用性和广泛的用户基础,仍将在日常办公中占据重要地位。
附录,和沃尔夫勒姆有交集的知名人物
沃尔默里·盖尔曼:诺贝尔奖获得者,邀请他加入加州理工学院研究小组。
费曼:诺贝尔奖获得者,对沃尔夫勒姆非常赏识,推荐他入选麦克阿瑟奖。
乔布斯:苹果创始人和CEO,Mathematica和Wolfram|Alpha的早期推动者。
谢尔盖·布林 :Google创始人,曾在沃尔夫勒姆的公司实习。
Rob Pike:UTF-8 作者,Go语言发明人,建议沃尔夫勒姆使用C语言开发SMP。
下村努:日裔计算机安全专家,帮助FBI追踪头号黑客凯文·米特尼克闻名于世,被沃尔夫勒姆雇佣写C编译器。