一、从设计计划到公开发行
1988年六月二十三日,斯蒂芬·沃尔夫勒姆在加利福尼亚州圣克拉拉公开发布Mathematica。按照他2013年的回忆,项目在1986年启动编程,到1987年中逐渐成形;写作使用说明与设计功能同步进行,目标是让说明本身帮助澄清软件应当怎样工作。
发行还需要具体的商业安排。他组织团队、经营公司,并与计算机厂商讨论配套发行;史蒂夫·乔布斯为尚未上市的NeXT计算机达成捆绑软件的安排。发布前夕,团队仍在复制软盘、装盒,同步准备由Addison-Wesley出版的手册。首发版本能在Macintosh及若干Unix工作站上运行,这种机器条件也限定了最初用户可以怎样接触它。
参考:[3]
二、要解决的是工具彼此脱节
在1998年大会的回顾演讲中,沃尔夫勒姆把动机解释为研究工作中的反复劳动:代数计算、数值程序与图形工具各自可用,却常要另外编写连接它们的代码。他先前参与开发符号处理系统SMP,从中积累了模式匹配与表达式变换的经验,但新系统希望覆盖的任务更广。
Mathematica的设计以符号表达式作为共同表示,让不同操作能够进入同一套计算规则。这样的目标不只是更快算出一个数,也包括保留公式结构、改变表达式以及继续编程。按他的自述,1986至1987年既要设计内核,也要协调其他部分的实现;把功能整合起来需要统一概念,而不是简单收集一批互不相干的数学程序。
参考:[2]
三、首版手册留下的分工
1988年手册将设计与实现列为团队工作。沃尔夫勒姆负责总体设计和部分内核;丹尼尔·格雷森承担任意精度算术、方程及矩阵等功能;罗曼·梅德尔负责符号积分和多项式运算;西奥多·格雷制作前端;斯蒂芬·奥莫洪德罗编写三维图形部分;杰里·凯珀处理特殊函数及若干数值算法。
这份同期记录表明,首版能力来自团队合作:数学算法、界面和图形由不同专长的人承担,再通过系统设计组合起来。
参考:[1]
四、封面图怎样连接计算与显示
首版手册封面是一幅黎曼ζ函数的三维图。书中给出的基础输入为Plot3D[Abs[Zeta[x + I y]], {x, -2, 6}, {y, 2, 35}]:先计算复数自变量处的函数值,再取绝对值作为高度,并在指定区域绘图。封面另加了着色和视角等选项。
这个实例把特殊函数、数值求值与图形输出接在同一次工作中。
参考:[1]
五、同期计算教学中的位置
就在发布当日,威廉·卡汉与戴维·戈德堡的一份课程讲义借Mathematica面世介绍符号数学系统,并列举MACSYMA、REDUCE和Maple等既有工具。讲义用从零至无穷的高斯积分作区别:数值计算可以给近似小数,符号运算则给出含平方根与圆周率的表达式。由此可见,Mathematica进入的是已经发展中的领域。
同份讲义随后讨论浮点精度、迭代停止条件与舍入误差。对使用者而言,公式形式整洁与小数结果可靠并不是同一件事;运算采用什么精度、算法是否合适,仍需判断。
参考:[4]
六、可保存的计算过程
沃尔夫勒姆2018年回忆,首版已把说明文字、输入、输出与图形放进笔记本式界面,计算内核和前端分开工作。他还记录了一次旧版重运行:在早期Mac上从软盘启动首版、保存笔记本,再把文件移至新机器;补上旧扩展名后,较新系统读入并重新呈现了内容。
这项旧版运行记录展示的用途是:软件保存的不仅是最后的数值,还包括可以再检查的输入与组织方式。回看1988年,Mathematica的特点在于让公式处理、算法执行、图形和文档共享工作环境。
参考:[5]