以前有一段时间Mathematica

再过几周就是25年前的6月23日,1988年的一天Mathematica推出。

Late the night before we were still duplicating floppy disks and stuffing product boxes. But at noon on June 23 there I was at a conference center in Santa Clara starting upMathematica首次在公众场合:

Mathematica v1.0

(是的,这是最初的启动屏幕,是的,Mathematica1.0运行在mac和各种Unix工作站计算机;个人电脑还不够强大。

人们都很兴奋,想看看会发生什么Mathematica能做的。有很多关于承诺的很好的演讲徳赢彩票游戏Mathematica从计算机行业的领导者中,包括史蒂夫•乔布斯(在未来)who was kind enough to come even though he hadn't appeared in public for a while. And someone at the event had the foresight to get all the speakers to sign a copy of the,那天刚在全国各大书店上架的书:

Mathematica v1.0版本中演讲者的签名

发生了很多事情Mathematicain the quarter century since then. What began withMathematica1.0已经变成了一个庞大的系统Mathematicatoday. And as I look at the25周年剪贴簿,看到这么多的贡献,我感到很自豪Mathematica创造了发明,发现和教育:

Mathematica的故事:剪贴簿

但对我来说,也许最令人满意的是我所建立的基本原则Mathematicahave stood the test of time. And how the core ideas and language that were inMathematica1.0持续到今天(是的,大多数Mathematica1.0代码今天仍然会保持不变)。

但是,好吧,在哪里Mathematicacome from? How did it come to be the way it is?说来话长,really. Deeply entwined with my own个人故事尤其是当我展望未来,我觉得理解事物是如何从那段历史演变而来很有趣。

也许是第一个微弱的方向Mathematica当我6岁的时候,我意识到我可以“徳赢彩票游戏自动化”那些繁琐的加法和,by creating an "addition slide rule" out of two rulers. I never liked calculational math,and was never good at it. But starting around the age of 10,我对物理越来越感兴趣,学物理需要学数学。

Electronic calculators arrived on the scene when I was 12—and I immediately became an enthusiast. And around the same time,我开始使用我的第一台电脑——一个大桌子大小的物体,8千瓦18位内存,主要用纸带汇编程序编写。我试着用它来做物理,没有大的成功。但当我16岁的时候,我发表了一些物理论文,离开了高中,那时,“真正的”理论物理学家基本上不使用计算机。But I did. Alternating between an HP desk calculator (with a plotter!) and an IBM mainframe programmed in Fortran.

我只是在做数理运算,though. But in the physics I wanted to do,有各种各样的代数。And not just a little algebra. Huge amounts. Expressions from Feynman diagrams with hundreds or thousands of terms,如果要得到正确答案,所有这些都必须是完全正确的。

I wondered what to do. I imagined spending my life chasing minus signs and factors of 2. But then I started thinking 徳赢彩票游戏about using a computer to help.就在那时,有人告诉我其他人也有这样的想法。我发现了三个程序——所有这些程序都是14年前在CERN 1962年的一次谈话中开始的:徳赢彩票游戏Reduce(用LISP编写)Ashmedai(用Fortran编写)和Schoonschip(用CDC 6000汇编程序编写)。

这些项目是专门的,and it wasn't clear how many people other than their authors had ever used them seriously. They were pretty clunky to use: typically you'd submit a deck of cards,然后一段时间后返回一个结果——或者更常见的是一个神秘的错误消息。但我还是开始和他们一起研究物理。

1977年夏天我发现了阿帕网,or what's now the internet. There were only 256 hosts on it back then. And @O 236 went to an open computer at MIT that ran a program called Macsyma—that did algebra,并且可以交互使用。我很惊讶很少有人用它。但没过多久,我就把大部分时间花在这上面了。我发明了一种特定的工作方式——用机器来来回回,尝试一下,看看发生了什么。并且经常做一些奇怪的事情,比如枚举一个积分的不同代数形式——然后“实验”地看看哪个微分是正确的。

我的物理论文开始包含各种神奇的公式。没有想到我可以用电脑,人们开始认为我一定是某种伟大的人类代数计算器。我变得越来越有野心,trying to do more and more with Macsyma. Pretty soon I think I was its largest user. But sometime in 1979 I hit the edge;我长大。

And then it was November 1979. I was 20 years old,我刚刚获得了物理学博士学位。我在欧洲核子研究中心待了几个星期,计划我在物理方面的未来。我的结论是,要想学好物理,I'd need something better than Macsyma. And after a little while I decided that the only way I'd really have a chance to get what I wanted was if I built it myself.

And so it was that I embarked on what would become SMP (the "Symbolic Manipulation Program"). I had a pretty broad knowledge of other computer languages of the time,无论是“普通的”阿尔戈尔式程序,and ones like LISP and APL. At first as I sketched out SMP,我的设计看起来很像我在那些语言中看到的。但渐渐地,随着我对SMP的不同有了更多的了解,徳赢彩票游戏我开始尝试自己创造一切。

I think I had some pretty good ideas. And actually even some of my early SMP design documents have a remarkablyMathematica他们喜欢的味道:

早期SMP设计文档

回头看看它文档,SMP是一个令人印象深刻的系统,especially given that I was only 20 years old when I started designing it. But needless to say,not every idea in SMP was good. And as a long-time connoisseur of language design,我无法抗拒本贴底部提到一些我“最喜欢”的错误。

即使在我早期的设计中,SMP was a big system. But for whatever reason,I didn't find that at all daunting. I just wanted to go ahead and implement it.I wanted to make sure I did everything as well as possible. And I remember thinking: "I don't officially know computer science;I'd better learn it". So I went to the bookstore,买了我能找到的所有关于计算机科学的书——整整半个书架。然后把它们都读了。

那时我在加州理工工作。我邀请了我能找到的所有在世界各地从事相关系统工作的人来做演讲。我在加州理工学院组建了一个“工作小组”,其中包括一段时间理查德·费曼我开始从校园各处招募人员参与“SMP项目”。

早期的一个重大决定是应该用什么语言编写SMP。Macsyma是用LISP写的,很多人说LISP是唯一的可能。但是一个年轻的物理学研究生Rob Pike让我相信C是“未来的语言”,正确的选择。(罗布继续做各种各样的事情,比如发明围棋语言)1980年初,编写了SMP的C代码的第一行。

研究SMP的小组是一个有趣的小组。我的第一个新成员是克里斯·科尔,他曾在IBM工作并成为APL的爱好者,后来,他成立了一家相当成功的公司,名为Peregrine Systems。还有一些学生有各种不同的技能,还有一位编程狂热的教授他是我在一些物理论文上的合作者。在这个过程中有一些怪癖,当然可以。比如写高效代码的人,都在一条线上,函数的名称很有色彩,所以它们的组合读起来就像小笑话。或者是一个非常聪明的本科生,他在这个项目上非常努力以至于他所有的课都不及格,然后他承诺不会碰电脑,但很快就发现他在给别人口授代码。

I wrote lots of code for SMP myself (徳赢彩票游戏about 1000 lines/day). I did the design. And I wrote most of the documentation.I'd never managed a large project before. But somehow that part never seemed very difficult. And sure enough,1981年6月,SMP版本1正在运行——甚至看起来有点像Mathematica:

SMP的输出

的时间,SMP是一个非常大的软件系统(尽管它的可执行文件只有不到兆字节)。Its original purpose was to do mathematical computation. But along the way I realized that even to do that well,我必须创造一个整体,而一般情况下,symbolic language. I suppose I saw it as being a bit like physics—but instead of dealing with elementary particles,我试图找到计算的基本组成部分。I developed a kind of aesthetic: always try to pack the largest capability into the smallest number of primitives. Sometimes I would puzzle for weeks 徳赢彩票游戏about how to do something—but in the end I'd come up with a design,然后实现它。

I understood the idea that everything could be represented by symbolic expressions. Although the whole business of symbolically indexed lists prevented SMP from having the notion of "expression heads" that's so clean inMathematica在符号表达式的内部实现中肯定有一些古怪的东西——最明显的是将所有数字存储在浮点数中的古怪想法。徳赢彩票游戏(Tini Veltman,Schoonschip》的作者,后来的诺贝尔物理学奖得主,他告诉我用浮点数存储数字是他做过的最好的决定之一,因为fpu的运算速度比ALUs快得多。

在SMP之前,我为像Macsyma这样的系统写过很多代码,我意识到我一直想做的是说"如果我有这样一个表达式,我想把它变成这样。在设计SMP时,以模式表示的符号表达式族的转换规则成为中心思想之一。它几乎没有in那么干净Mathematica,当然也有一些新奇而又超前的想法。但是很多核心元素已经存在了。

最后,1981年SMP 1.0版文档的目录具有相当程度的现代性:

SMP v1.0的目录

是的,“图形输出”被归入一小部分,alongside "memory management". And there are the charming "programming impasses" (i.e.系统挂起),以及“统计表达式生成”(即making random expressions). But "parallel processing" is already there,连同“程序构造”(即代码生成)。(SMP甚至有一种创建C代码的方法,编译它,而且,很可怕,动态链接到正在运行的SMP可执行文件中)有很多数学函数,还有数学运算——尽管它的功能远不如数学运算强大Mathematica

但是,OK. So SMP 1.0 was running. What should be done with it?It was pretty clear there were lots of people who would find it useful. It only ran on quite big computers—so-called "minicomputers",像VAX,有几个大冰箱那么大,and cost a few hundred thousand dollars. But still,我知道徳赢中国有很多研究和工程组织都有这样的机器。

I really didn't know anything 徳赢彩票游戏about companies or business at the time. But I did understand that it cost money to pay people to work on SMP,and it seemed pretty obvious that a good way to get that money was to sell copies of SMP. My first idea was to go to what would now be called the "technology transfer office" at Caltech,and see if they could help. At the time,办公室里基本上只有一个和蔼可亲的老人。it became clear he really didn't know what to do. I asked him how this could be,假设在加州理工学院,类似的事情经常发生,他说,“问题是,大多数教师都是自己去创业,所以我们从不参与。“哦”,我说,"can I do that?". And he leafed through the bylaws of the university and said: "Software is copyrightable,这所大学不要求拥有版权,所以,是的,你可以。”

And so off I went to start a company. But it wasn't as simple as that. Because a little while later the university administration suddenly decided that,不,这不是好的。它变得非常奇怪——而且下流(“给我一刀,我在这里签字"etc.). Richard Feynman and Murray Gell-Mann interceded on my behalf. The president of the university didn't seem to know what to do.And for a while everything was completely stuck. But eventually we agreed that the university would license whatever rights they might have—even though they were (very foolishly,后来,当他们试图招聘计算机科学教师时,他们改变了软件的规章制度。徳赢彩票游戏

当它发生的时候,还有最后一个问题,由当时的大学教务长提出。他声称,如果我在大学工作并且拥有公司的一部分,那么在大学和公司之间拥有一份许可证就会产生利益冲突。我说,“这很容易解决:我要退学。”That seemed to come as a big surprise. But quit I did,搬到了普林斯顿高等研究院,在那里,正如当时的导演所指出的,当他们“放弃电脑”的时候约翰·冯·诺依曼死后,所以他们不能太担心知识产权。徳赢彩票游戏

多年来,I'd wondered what had actually been going on at Caltech. And as it happens,就在几周前,我同意再次访问加州理工学院(以获得“杰出校友奖”),在那里的教职工俱乐部吃午饭时,我发现坐在我旁边的不是别人,正是加州理工学院的前任教务长,现在快9徳赢彩票游戏5岁了。他立即深刻地回忆起他所谓的“沃尔夫拉姆事件”(Wolfram Affair),给我留下了深刻的印象。我们的谈话最终把事情解释得更好了。

坦率地说,it was more bizarre than I could have possibly imagined. The story in a sense began in the 1930s,阿诺德·贝克曼在加州理工学院的时候,发明了pH计,然后去找贝克曼乐器。到1981年,贝克曼是加州理工学院的主要捐助者,以及董事会主席。与此同时,the chairman of its biology department (Lee Hood) was inventing the gene sequencer. He's told me he tried many times to interest Beckman Instruments in it,但是失败了,于是他创立了自己的公司(应用生物系统)结果非常成功。在某个时刻,我被告知,阿诺德·贝克曼很不高兴,并告诉政府他们需要“阻止IP走出校园”。好吧,it turned out that the only thing of relevance happening on campus right then was none other than my SMP project. Which the then-provost said he thought he had a duty to "deal with". (Well,他也是一个化学家,费曼和盖尔曼,作为物理学家,声称对物理学家有兴趣,徳赢彩票游戏等等)。

尽管经历了这整个冒险,我命名的计算机数学公司成立了。当时,我仍然认为自己是一个年轻的学者,and didn't imagine that I'd know how to run a company. So I brought in a CEO,who happened to be 徳赢彩票游戏about twice my age. And at the behest of the CEO and some venture capitalists,公司安排与一家初创公司合并,他们认为这家公司的人工智能研发将非常热门。

与此同时,SMP开始打着“计算机数学”的旗号销售:

数学,计算机

他们犯了可怕的错误。首席执行官:“让我们建造一台工作站计算机来运行SMP”;我:“不,我们是一家软件公司,and I've seen this Stanford University Network (SUN) system that's going to be better than anything we can build". And then there were the charmingly misguided agency-created ads:

为SMP创建的代理广告

And pretty soon I decided the whole thing was too frustrating. SMP remained something of a cash cow,虽然CEO不擅长赚钱,他很擅长养它,经历了令人眼花缭乱的投资回合——直到多年后终于有了一桩不起眼的IPO。

与此同时,我在做基础科学的时候非常开心,发现为之奠定基础的东西一种徳赢中国新的科学事实上,SMP是我所做的事情的一个重要的先驱。因为正是我在为SMP语言发明计算原语方面的成功让我想到了为自然发明计算原语——并通过研究这些原语的结果来构建一门科学。徳赢彩票游戏

You might ask what happened to SMP. It continued to be sold until sometime afterMathematica被释放了。它的代码从来没有被使用过Mathematica。但偶尔我也会这样做,只是想看看和它相比感觉如何Mathematica随着时间的流逝,越来越难找到运行SMP的计算机。也许15年前,我们拥有的最后一台可以运行SMP的计算机停止了工作。

好吧,我想,我总是收到一份SMP源代码的个人副本——尽管我已经很久没有看过它了。So now why not just recompile it on a modern system? But then I remembered: I'd had this "great" idea that we should keep the source code encrypted.但关键是什么呢?I asked everyone I could think of. But nobody remembered.

已经很多年了,and I'd really like to see SMP run again. So here's a challenge.是像SMP源代码一样加密的C程序的源代码。它是进行加密的程序的源代码:大约在1981年的Unix crypt实用程序的一个版本,“聪明地”修改参数等。有人能破解加密吗?And finally free SMP from the strange digital time safe in which it's been locked for so long. (Here's whatWolfram | Alpha职业必须说,如果只是上传这个原始文件)

Wolfram|Alpha Pro的结果在C程序加密像SMP的源代码

But back to the main story. I stopped working on SMP in 1983,开始在基础科学之间转换,软件项目来说,and my (wonderfully educational) "hobby" of doing technology and strategy consulting.我用过SMP,但最主要的是我写了很多很多的C代码,通常是将算法、图形和接口粘合在一起。

科学我开始的时候一切都很顺利,很明显有很多重要的事情要做。但我不想自己做,我决定我应该试着让其他人参与进来。作为其中的一部分,我决定创办一个研究机构,并从不同的大学得到了相当于投标的东西。伊利诺伊大学是赢家,所以在1986年8月,我去那里成立了复杂系统研究中心。

But by this point I was already getting concerned that my scheme of "other people doing the science" wasn't so good. And within just a few weeks of arriving in Illinois I'd come up with plan B: build the best tools I could,最好的个人环境,and then try to do as much science as I could myself. And since I was pretty well plugged into the computer industry,I k徳赢中国new that powerful software systems would soon be able to run on the zillions of personal computers that were starting to appear. So I knew that if I could build something good,会有一个很好的市场,这将支持一个有趣的公司和环境。

1986年8月底,我决定尝试建立我的终极计算系统——可以完成我想要的所有计算,或者可以想象我想要。

结果当然是Mathematica

从SM徳赢中国P和我的其他徳赢彩票游戏软件经验中,我知道了很多关于应该做什么(不应该做什么)。但是能够从头开始让人耳目一新,只是想让设计正确,之前没有约束。在SMP,代数计算一直是中心目标。但在Mathematica,我还想讲很多其他的领域,图形,编程,接口,whatever. I thought a lot 徳赢彩票游戏about the foundations for the system,例如,我想知道元胞自动机我学过的基础科学可能是相关的。But I just kept on coming back to the basic paradigm I'd already developed for SMP. Symbolic expressions and transformations for them seemed exactly right as a high-level,然而,一般情况下,表示计算。

如果不是因为SMP,我肯定会犯很多错误。但是SMP向我展示了什么是重要的,什么不是,问题在哪里。浏览我今天的档案,I can see the painstaking process of puzzling through problems that I k徳赢中国new from SMP. And one by one coming up with solutions.

与此同时,对于SMP,我组建了一个团队,并开始了实际的实现Mathematica. I'd also started a company—this time with me as CEO. Every day I'd write lots of code.(令我懊恼的是,相当一部分代码仍然在运行Mathematica今天,especially in the pattern matcher and evaluator.) But my biggest focus was design. And following a practice I'd started with SMP,I wrote documentation as I developed the design. I figured if I couldn't explain something clearly in documentation,没有人会理解它,and it probably wasn't designed right. And once something was in the documentation,我们都知徳赢中国道要实现什么,以及我们这么做的原因。

第一个代码Mathematicawas written in October 1986. And by the middle of 1987Mathematicawas beginning to come to life. I'd decided that the documentation should be published as a book,and hundreds of pages were already written. And I estimated thatMathematica1.0版将于1988年4月完成。

我对我们公司最初的计划是专注于研发,和分发Mathematica主要是通过电脑制造商。史蒂夫•乔布斯是第一个拿的吗Mathematica,与每一台尚未发布的NeXT电脑捆绑销售。处理的太阳,硅谷图形,IBM和其他一系列公司紧随其后。我们开始发送一些测试版Mathematica即使这是在网络出现很久之前,它的存在就开始传播了。一些媒体也开始报道(我仍然喜欢那种冰淇淋):

媒体报道

1988年春天的某个时候,我们正式将发布日期定为6月23日Mathematica(没有Wolfram | Alpha,我不知道阿兰·图灵的生日,etc.). There was a lot to get ready. In those days releasing software didn't just involve flipping a switch.就像我记得我们在最后关头数学书printed. So I flew to Canada with a hard disk and personally babysat a phototypesetting machine for a long weekend,handing the box of film it produced to a person who met me at the airport in Boston and rushed it to the printer. But despite adventures like that,就在6月23日之前不久,一些神秘的信件被寄出邀请:

1988年发布会邀请函

到了6月23日中午,房间里的人都走了填满,我们已经准备好发射了Mathematica进入世界。

Mathematica v1.0盒子

从那时起,这是一个伟大的25年。我们奠定的基础Mathematica事实证明,从我早期的经验中得到很大启发的1.0非常强大,and we've been able to just build and build on them. My "plan B" of developingMathematica,然后用它来做科学研究,很好,并导致一种徳赢中国新的科学。从Mathematica,我们已经能够建立一个伟大的公司,以及建造类似的东西Wolfram | Alpha在过去的25年里,我们有幸看到Mathematica以各种方式为世界上的许多事情做贡献。

附录: SMP教训

What was SMP like? Here are a few examples of SMP programs that I wrote for theSMP的文档:

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

为文档编写的SMP程序

在某些方面,它们看起来非常相似Mathematicaprograms-complete与[…]的功能,{…}列表和- >规则但不知何故,可读性是Mathematica没有,相反,SMP程序看起来相当神秘和晦涩。

最明显的问题之一是SMP代码到处都是美元%characters—appearing respectively as prefixes for pattern and local variables. In SMP,我没有Mathematica分离模式构造的思想(例如_)从名字(如x). And I thought it was important to emphasize which variables were local—but didn't have a subtle cue like color to do it with.

在SMP中,我已经有了区分即时(=)及延迟(:=) assignment. But in a nod to languages like ALGOL,我用一个相当模糊的符号表示它们:::(规则,- >是直接形式,因为它是Mathematica,而- - >:>S […]/。)

在SMP,就像在Mathematica,I indicated built-in functions with capital letters (at the time it was a fairly 徳赢中国new thing to distinguish upper and lowercase at all on a computer). But whileMathematica通常使用英语单词作为函数名,SMP通常使用缩写。当我在做SMP的时候,我非常喜欢Unix的设计,and wanted to emulate its practice of having short function names. That might have been OK if SMP had just a few functions. But with hundreds of functions with names likePs,Uspbthings began to get pretty unreadable. Of course,当时,还有另一个问题:许多用户不能快速键入—因此这就提供了使用短函数名的动机。

为文档编写的SMP程序

今天看一下SMP文档很有意思。SMP有很多好主意——其中大部分我又用到了Mathematica。但它也有一些相当糟糕的想法——幸好不是其中的一部分Mathematica。One example of a bad idea—that even sounds bad as soon as one hears it—are "chameleonic symbols": symbols that change their name whenever they're used. (These were an attempt at localizing things like dummy variables,有点像过度自动化的模块)。

There were some much more subtle mistakes too. Like here's one that in a sense came from trying to go too far in unifying the system.就像Mathematica,SMP有一个列表的概念,就像{a, b, c}它也有功能,就像f(x)。在我努力实现统一的过程中,我想也许可以把列表和函数的概念结合起来。

假设有一个链表v = { a,b,c }。(在SMP作业中是用:,所以这是可以写出来的v: {a, b, c}.) Then for example in SMPv [2]would extract the second element in the list. But this notation looks a lot like asking for the value of a functionv当它的参数是2。这让我想到,也许我们可以推广列表,不仅仅是整数索引的元素,而是任意符号下标的元素。

在SMP,模式变量(间的Mathematica)写$ x。当我们定义一个函数时f($ x):$ x ^ 2你可以想象这只是定义f本身的值是一个符号索引的列表:{($ x):$ x ^ 2 }如果你想知道一个函数是如何定义的,你只是输入了它的名字f。返回的值将是表示定义的符号索引列表。

一个普通的向量类型列表可以被认为是这样的{[1]:,[2]:b,[3]:c }。我们可以用符号指数来表示{[1]:1,[$ x]:$ x f(x - 1美元)}. There was also a certain unification with part numbering in general symbolic expressions. And at some level it all seemed rather nice.为了描述函数和列表的统一概念,我打电话给ff(x)一个“投影”,和x“过滤器”。(有人开玩笑说,定义列表就是“光学工徳赢彩票游戏作台”。)

但裂缝逐渐开始出现。变得很奇怪,例如,当人们开始定义v[2]:b,v[3]:c。根据SMP的分配约定v就会有价值{[3]:c,[2]:b}。但是如果我们做一个定义v [1]:吗?好吧,然后v突然不得不把自己重新排序为{一个,b,c }

当我们开始处理多参数函数时,情况就更奇怪了。它很好地定义了一个矩阵m: {{a、b}, {c, d}},然后m[1]{ a、b },,要么m [1]m[1][1]一个但是如果一个函数有几个参数呢?将f(x,y]和…一样f[x][y]吗?好吧,有时人们希望这样,有时不是。所以我必须想出一个属性("attribute" inMathematica)——我叫对于每一个函数它应该如何工作。(今天更多的人可能听说过“拍马屁”,但在那些日子里,这种区别真的很模糊。

SMP中的符号索引列表具有一些非常强大和优雅的特性。但最后,当整个系统建立起来的时候,there were just too many weirdnesses. And so when I designedMathematicaI decided not to use them. Over the years,不过,I've kept thinking 徳赢彩票游戏about them. And as it happens,现在,SMP 30多年后,我正在开发一些非常有趣的新功能徳赢中国Mathematica这与符号索引列表密切相关。

我学到了很多smp的设计——然后看到了设计的结果。对我来说一个特别难忘的时刻是这样的Mathematica,SMP是纯函数但不像。Mathematica,它没有像这样的语法&to indicate them. And that meant that it needed a special object called a "mark" (written)表示纯函数何时应该给出一个文本,常数,价值。好吧,徳赢彩票游戏在SMP发布5年后,I was looking at one of its training manuals. And out jumped at me the sentence: "Marks are the enigma of SMP".在那一刻我意识到:这就是语言设计错误的样子。

SMP was in many ways a very radical system—a kind of extreme experiment in programming language design. It had only grudging support for most of what were then familiar programming constructs. And instead almost everything in it revolved around the idea of transformation rules for symbolic expressions. In some ways I think SMP went too far into the unfamiliar. Because in a sense what a programming language has to do is to connect the human conception of a computation to an actual computation that a computer can execute. And however powerful a language is,如果人类没有足够的环境来理解它,它没有多大用处。这就是为什么Mathematica,我总是尽我所能让事情变得熟悉,把不熟悉的东西限制在那些真正需要它来支持全新事物的地方。徳赢中国

One of the things 徳赢彩票游戏about designing a system is knowing what's going to end up being important. In SMP,我们在所谓的“语义模式匹配”上花费了大量的精力。假设有一个定义是这样的f(x + y,美元x美元,$ y]: = {$ x,$ y}。很明显这是匹配的f(a + b,一个,b]。但徳赢彩票游戏f [7,3.4)吗?在SMP,那比赛-即使7不是结构上的形式x + y美元1 .这工作花了我很多精力在简单的例子中很容易看出。但最后,它只是不经常出现,当它出现的时候,这通常是要避免的,因为它通常使程序的操作非常难以理解。

There was something similar with recursion control. I thought it was bad to havef[$x]: $x f[$x-1]没有结束条件f[1])进入一个无限循环试图求值f [1],f [2],等。因为毕竟,at some point there's multiplication by 0. So why not just give 0?好吧,in SMP the default was to give 0. Because instead of running all the way down the evaluation of each branch of the recursion tree,SMP将反复停止并尝试简化所有未计算的分支。It was neat and clever. But by the time one started parametrizing this behavior it was just too hard for people to understand,没有人最终使用它。

然后是用户定义的语法。例如,允许用户设置U”(说,为“联盟") to be an infix operator. Which worked great until one wanted to type a function with a "U" in its name. Or until one completely trapped oneself in one's syntax,转移任何形式转义的解析。

SMP对我来说是一次很好的学习经历Mathematicawouldn't be nearly as good if I hadn't done SMP first. And as I reflect now on "mistakes" in SMP,one thing I find quite satisfying is that I don't think I'd make any of them today. Between SMP and 25 years ofMathematica设计,对我来说,他们中的大多数现在都属于“简单问题”的范畴。

有趣的是,不过,how often variations of some of the not-so-good ideas in SMP seem to come up. And actually I'm very curious with my modern design sensibilities how exactly I'd feel 徳赢彩票游戏about them if I ran SMP today. Which is part of the reason I'm keen to release SMP from its "数字时间安全”,并得到它再次运行。我希望有人能帮我。

9评论。显示所有»

  1. 作为一个语言怪才,我很自豪。我正在设计我自己的语言,它统一了函数和lua风格的哈希表(它的性能相当于列表),它不像统一函数和列表那样有问题,因为顺序是通过扫描整数索引在查询点确定的。其结果基本上就是掌握了面向函数编程的功夫语言,在很大程度上得益于从Mathematica和APL语言中窃取了大量的设计/函数。(我的语言模块系统特别有趣,(我不知道你会怎么想。

    无论如何,长话短说,作为一个有点偏颇的语言怪才,Mathematica的设计真的很天才,比我遇到的任何其他语言都要优秀。很长一段时间我都在想为什么Mathematica语言这么好。并不是真正的“为什么”语言是好的,但是这种语言是如何存在的呢,因为很明显,它需要一个“开明的世界观”,不仅要在c语言的海洋中制造出类似的东西,但是,通过各种各样的问题来坚持设计,而这些问题是许多其他人/公司会做出错误决定的

    amr
  2. 关于“:=”vs“=”的讨论让我回想起f[x_]:=f[x]=TediousFunction[x]的“memoization”构造,其中TediousFunction[x]是一个复杂的函数,它的评估挑战了主机的资源(这在90年代是很常见的)。我最喜欢的Mathematica功能之一,因为它是。

    MM托马斯
  3. 好故事-谢谢分享!

  4. 谢谢你的一篇非常有趣的文章。到达最后,我发现自己在想,在过去的25年里,有哪些潜在的进步是看不到的。毕竟,这几乎和圣人和Mathematica之间的时间一样长。

    “大约在1981年Unix crypt”可能是一台256转子的Enigma机器。已知的弱点,但更多的细节将是有用的。

    大卫·戴维斯
  5. 除了…
    文章中指出,用于加密源代码的Crypt版本在某种程度上被“修改”了。看看提供的文件,在我能在网上找到的,以及本文提供的版本。原始Crypt = 1,528字节,而SMP Crypt版本为8,313字节。

    我所使用的Crypt版本是在这里找到的:
    http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/crypt.c

    大小上的巨大差异不仅仅意味着微不足道的修改。

    同时,在文件Crypt.h中,有这样几行:
    #定义PASSNO 8
    #定义PASSLEN 13
    Crypt强制执行一个13字符密钥,这可能就是帕斯琳正在做的,但我在Crypt的在线源代码中找不到PASSNO的参考。我的猜测是,对SMP密码的修改之一是通过编码器多次“重新循环”已加密的文本。为了保持东西整洁,我认为这是在一个字符一个字符的基础上完成的,而不是与整个编码的明文。这只是对Crypt的SMP版本可能进行的修改之一,这些修改将使具有可疑价值的Crypt的在线“裂缝”可用。

    谢谢你!

    乔尔·M。侍从
  6. 谢谢你的大脑旅游,从你的角度回顾过去,不知道你为什么不冒险去研究分形,三维动画合成模型,还有其他令人信服的基于数学的消遣。再一次,谢谢。

  7. 为了恢复您的加密版本的SMP,我建议您创建一个竞赛,该竞赛的奖品与接受此挑战所需的努力相称。
    推广到业余和专业的密码社区。
    奖品可能包括Wolfram产品,订阅,甚至有机会和Dr。或一个孩子或一群孩子参加夏令营。这些类型的激励可能会吸引这些团体,并在媒体上对任务进行宣传,从而使任务在惠及所有相关方的情况下完成解密。

  8. 精彩的故事!很高兴听到克里斯·科尔的名字,他是我大学一年级时的物理助教。同时,我在博士论文中广泛使用了SMP,我的论文有一个附录,里面有很多页的SMP代码。

    谢谢你勾起我的回忆!

    延斯
  9. 乔布斯对赢家很有眼光。通过研究wolfram发布的SMP C代码和文档,我更加想知道这种语言是如何进化到如此好用的。多年来,我已经自学了一些语言。很久以前,在大学里,我读了一两次mm的书后,就把“做得更好”的想法放在一边:我把它放在一边,把它当做一项出色的工作,不需要重新做。

    如果“新群体”(wr员工)做出改变,让旧的共享笔记本无法徳赢中国工作,那将是一件憾事。毫米版本2)。与免费语言进行比较和对比,免费语言不能在以后的小版本中使用,而且往往是出于错误的原因。

    我唯一的愿望是mm笔记本和共享者能够体验到WR关于兼容性、外延和笔记本的长期声明(就像我到目前为止所做的那样)。徳赢彩票游戏我只是警告说,新员工离职时,产徳赢中国品将面临复杂的升级链和笔记本电脑共享功能的丧失:除非能找到一种方法确保这种情况不会发生,而不仅仅是图书打印:我百分之百肯定会发生。谢谢大家,节日快乐!

隐藏评论”

Stvwin中国ephen Wolfram©有限责任公司| 条款| RSS