摘要
- FORMAC 把公式表示成可操作的结构,能够求导、替换、展开和化简,再输出 FORTRAN 可接受的形式供普通编译与数值求值。
- 变换后的表达式证明的是指定形式规则在某种表示上运行过;它不会自动证明所有定义域和分支上的等价,也不证明数值稳定、程序无错或科学结论成立。
- Jean E. Sammet 发起并领导了这项语言工作;E. R. Bond、Robert G. Tobey、Stephen N. Zilles、IBM 其他成员和同期符号计算社群的贡献仍须分别保留。
一个代数式进入计算机后,不再只是一行给人看的墨迹。运算符、变量和嵌套部分变成结构。系统可以对它求导,把一个变量换成另一个,去括号、展开或化简,再把新表达式改写成 FORTRAN IV 能接收的形式,随后编译并带入数值。
这就是 FORMAC 的实践承诺,也是几种不同证据串成的链。
Computer History Museum 的 Jean E. Sammet 档案记载,她 1961 年加入 IBM,并主持开发了后来广泛使用的符号数学系统 FORMAC。Sammet 在口述史中说,出发点是在已有数值语言上加入符号计算能力。FORTRAN 是现实的基础,但依附它也会反过来约束符号工作的写法与表示。
公式第一次成为计算对象
Sammet 与 E. R. Bond 合著的 1964 年论文 Introduction to FORMAC 描述了一门能给公式命名、查看并变换的语言。形式微分、变量替换、代数展开、化简和后续数值求值,都成为机器对表示执行的操作,而不只是交给人类代数学家的指令。
这一区别很重要。普通数值 FORTRAN 在变量获得数值后计算结果;FORMAC 则能先处理表达式本身的形式。公式由此进入可执行的工作材料。
Sammet 1966 年的 Survey of Formula Manipulation 把这项工作放回更大的领域:微分、积分、化简、显示与编辑、高精度运算、批处理与交互系统以及应用程序。FORMAC 是重要系统,却不是脱离同行社群的孤立发明。
IBM 的回顾资料把最初概念追溯到 1962 年 7 月:Sammet 在 Robert G. Tobey 协助下开展设计,8 月形成内部提案,12 月完成语言规格,1964 年 4 月出现完整系统,同年 11 月发布。1964 年 ACM 会议的 FORMAC—an experimental formula manipulation Compiler 书目记录列出 Elaine R. Bond、Marc A. Auslander、S. Grisoff、Robert Kenney、Mat Myszewski、Sammet、Tobey 与 Stephen N. Zilles。领导语言项目和共同实现编译器有关联,却不是同一种署名。
FORTRAN 边界是一条真实的工程接口
一份 1968 年 NASA 技术说明展示了这条边界怎样工作。工程师先用符号形式描述线性方框图模型,再让 FORMAC 消去变量、解方程并生成传递表达式。符号阶段能够形成分子分母、代入系统关系,并在存储允许时展开复有理式。
下一阶段被有意分开。所得方程以穿孔卡形式输出,插入 FORTRAN IV 子程序。FORMAC 的末尾标记以及 FORTRAN 不接受的部分指数写法要先移除。随后由 FORTRAN 编译子程序,接收数值输入,算出实部、虚部、幅值和相位。
作者这样分工,是因为在符号环境里反复做数值求值很慢,表达式存储也昂贵。FORMAC 负责代数约化,FORTRAN 负责大量数值计算。接口缩短了路程,却没有让交接点消失。
同一文档还写下限制:模型必须是线性的,不允许时变系数;任意函数必须由用户提供对应的 FORTRAN 函数;表达式膨胀和内存不足可能阻止展开。一篇同期的地球物理应用论文也把 FORMAC 当作符号预处理器,其产物还要进入另一种语言和机器环境。
变换成功,证明的事情比画面看上去少
系统返回一个更简洁的表达式,首先能确认的是:某组规则在某个内部表示上执行,并产生了这个输出。其他主张还需要另外的证据。
约分可能删去原分母为零的点。平方根、对数和非整数次幂带着定义域和分支条件。符号上重新排列后,数值计算可能出现不稳定的相消。生成的 FORTRAN 即使通过编译,也可能包含错误模型、错误的用户函数、糟糕的尺度或危险的舍入行为。一个稳定的数值结果也可能只是在忠实计算不符合物理系统的假设。
这些问题继续存在,不是 FORMAC 的失败。恰恰相反,它把一个关键过渡变成可操作的流程:代数能够生成程序材料。严谨的做法,是为每一步单独记账:
- 输入式记录模型和公开的假设;
- 符号结果记录在既定表示上执行过的变换;
- 生成的 FORTRAN 记录向常规程序形式的转换;
- 编译输出记录特定工具链接受了什么;
- 运行输出记录特定输入和数值条件下发生了什么;
- 领域审查判断这些结果是否支持科学主张。
前一条记录不会自动授权后一条结论。
历史贡献也需要精确“定型”
Sammet 1993 年的回顾 The Beginning and Development of FORMAC分别讨论了概念工作、后续开发、相关系统、IBM 软件管理和影响。这种分法很有价值:“Sammet 领导 FORMAC”不等于 Bond 的文档、Tobey 的早期概念与算法工作、Zilles 和其他实现者,以及相邻的计算机代数研究都能被压进一个名字。
更准确的叙述反而更有力量。Sammet 识别并主持了横跨符号代数与生产计算的语言项目。Bond 合著同期导论,还写过 NASA 团队引用的早期用户手册。Tobey 参与最初概念。Zilles 与其他署名的 IBM 作者共同实现和说明实验编译器。更广泛的社群则不断检验“公式操作”究竟可以做到什么。
因此,FORMAC 留下的教训既是技术的,也是制度的:边界可以变得快速、实用、可重复,但边界两侧不会因此自动成为同一个证明。
来源
- Computer History Museum:Jean E. Sammet
- Sammet 与 E. R. Bond:Introduction to FORMAC
- Jean E. Sammet:Survey of Formula Manipulation
- Jean E. Sammet:The Beginning and Development of FORMAC
- Bond 等八位作者的 1964 年 ACM 会议记录
- Jean E. Sammet 口述史
- IBM Journal 的 FORMAC 与符号数学回顾
- NASA:Use of FORMAC in a Program for Block Diagram Reductions
- FORMAC 在地球物理中的应用
- IEEE Computer Society:Jean E. Sammet
- Heng Lu:Running-Code Primacy
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
