← 返回故事列表

孤独的拓荒者:Calvin Mooers与TRAC的未竟革命

时代:1962
阅读时间:8 分钟
浏览:39
点赞:0

1962年,波士顿郊外一间狭小的办公室里,Calvin Mooers正对着IBM 7090计算机的打印输出发呆。屏幕上,他用自己设计的TRAC语言写出的文本处理程序,正以一种前所未有的方式工作——用户可以在程序运行时修改代码本身。这一刻,他意识到自己触碰到了计算机科学的一个核心秘密。然而,当他试图向

# 孤独的拓荒者:Calvin Mooers与TRAC的未竟革命 1962年,波士顿郊外一间狭小的办公室里,Calvin Mooers正对着IBM 7090计算机的打印输出发呆。屏幕上,他用自己设计的TRAC语言写出的文本处理程序,正以一种前所未有的方式工作——用户可以在程序运行时修改代码本身。这一刻,他意识到自己触碰到了计算机科学的一个核心秘密。然而,当他试图向这个世界展示这个秘密时,迎接他的却是冷漠、怀疑,以及一场差点毁掉他职业生涯的法律纠纷。这是一个关于天才、偏执与商业失败的故事,也是一个关于语言如何塑造我们与机器对话方式的传奇。 ## 从信息检索到文本炼金术:一个叛逆者的技术宣言 20世纪50年代末,计算机世界被FORTRAN和COBOL这样的“高级语言”统治。这些语言的设计者们执着于用数学符号和商业术语来模仿人类思维,试图让计算机“理解”数字和记录。但Calvin Mooers——这位曾因发明“信息检索”一词而闻名于世的MIT毕业生——却看到了另一片天地。 Mooers的职业生涯始于对信息爆炸的焦虑。在二战后的科技文献洪流中,他发现传统分类法根本无法应对非线性的人类知识。他发明了“描述符”系统,允许用户通过组合关键词来检索信息,这后来成为现代搜索引擎的基础。但Mooers并不满足于仅仅检索文本,他想要**操控**文本本身。 “为什么计算机只能处理数字和表格?”Mooers在1961年的一次学术会议上质问同行,“文本才是人类知识的根本形态。我们需要一种语言,让文本成为唯一的货币。” 这种近乎偏执的信念,催生了TRAC(Text Recording and Conversion,文本记录与转换)。在Mooers的设计中,TRAC抛弃了所有传统语言的数据类型——没有整数、浮点数、布尔值,甚至没有数组。**一切皆是字符串**。程序的输入是字符串,输出是字符串,代码本身也是字符串。这种设计在今天看来或许激进,但在1962年,它几乎是对计算机科学神圣原则的亵渎。 更让传统程序员感到不安的是TRAC的“宏”系统。Mooers允许用户定义可以嵌套的文本替换规则,这些规则可以在运行时被修改、被调用,甚至自我复制。这比Unix的M4宏处理器早了整整十年,也比Lisp的宏系统更早具备了动态特性。TRAC的语法极其简洁,只有几个基本操作符——`#`用于定义函数,`@`用于引用变量,`!`用于控制流——却可以表达出任何复杂的文本变换。 “这就像炼金术,”Mooers后来回忆道,“你在一个纯文本的坩埚里混合咒语,然后看着它们自动生成新的咒语。计算机不再是计算器,而是一个活的语言实验室。” 但技术上的突破并没有带来商业上的掌声。IBM的工程师们嘲笑TRAC“不是真正的编程语言”,认为它缺乏数学严谨性。而学术界则怀疑Mooers是否在玩弄某种文字游戏。面对质疑,Mooers做出了一个大胆的决定——将TRAC从实验室推向市场。 ## 法庭上的文字游戏:专利、盗版与创业者的孤独 1963年,Mooers创立了Rockford Research Institute,专门商业化TRAC。他的商业模式很简单:向企业出售TRAC解释器,并提供定制化的文本处理服务。他相信,只要用户体验过在TRAC中实时修改代码、交互式编辑文本的魔力,他们就会爱上这种语言。 然而,市场反应冷淡。当时的计算机用户习惯于批处理——写完整段代码,提交给操作员,几小时后拿到结果。TRAC的交互式编辑模式(用户可以在运行中修改程序)被视为一种危险的“黑客行为”,而不是生产力工具。Mooers不得不花费大量时间向潜在客户解释:“这不是失控,这是自由。” 真正的转折点出现在1965年。Mooers发现,一家名为“Textron”的初创公司,在未获得授权的情况下,复制了TRAC的核心算法并用于自己的产品中。愤怒的Mooers将对方告上法庭,但这场官司却演变成了一场噩梦。 在法庭上,Textron的律师抓住TRAC的“所有东西都是文本”这一设计哲学进行攻击:“如果程序本身也是文本,那么修改程序是否等同于修改数据?如果用户可以在运行时任意改变程序逻辑,那么TRAC产生的输出是否还能被视为‘计算’的结果?”这些问题在当时缺乏清晰的法律定义。法官最终判定,TRAC的宏系统属于“抽象思想”,不受美国版权法保护。Mooers不仅败诉,还被迫支付了对方的诉讼费。 这场官司几乎摧毁了Rockford Research。Mooers不得不解散团队,将TRAC以极低的价格授权给一家小型软件公司。他后来在日记中写道:“我发明了一种可以自我修改的语言,却无法修改人们对它的偏见。商业世界比我设计的任何宏都要复杂。” 但TRAC并没有完全死去。在接下来的几年里,它成为了一些研究机构内部使用的“秘密武器”。例如,兰德公司的科学家用TRAC编写了最早的交互式文档系统,而美国国防部的高级研究项目则将其用于自动生成技术报告。这些用户都珍视TRAC的灵活性和可扩展性,但他们都不愿意公开承认自己使用了一种“非主流”的语言。 ## 被遗忘的先驱:宏编程的遗产与商业的教训 20世纪70年代,随着Unix操作系统的兴起,M4宏处理器开始进入主流。M4的设计者之一Brian Kernighan曾公开承认,他受到了Mooers早期工作的启发。然而,当有人问及Mooers时,Kernighan只是淡淡地说:“那是一个有趣的实验,但M4更实用。” 这种评价反映了TRAC的悲剧性矛盾:它太超前了,以至于在它诞生的时代,既没有足够强大的硬件来支持其交互式特性,也没有足够成熟的市场来理解其非传统设计。Mooers的宏系统需要用户具备高度的抽象思维和耐心,而这正是大多数商业用户所缺乏的。 然而,TRAC的遗产远比表面看起来深远。它的“一切皆文本”哲学,后来在Tcl/Tk语言(由John Ousterhout在1988年设计)中得到了复兴。Tcl的设计者同样强调动态、交互性,并将所有数据视为字符串。更近的例子是JavaScript的eval函数,它允许在运行时执行字符串形式的代码,这本质上就是TRAC宏系统的现代变体。 在商业层面,Mooers的故事提供了一个深刻的教训:**技术的价值不仅取决于其内在的优雅,还取决于它能否融入现有的生态系统。** TRAC的失败,不是因为技术不好,而是因为它要求用户改变对“计算”的根本认知。这种认知变革的成本,超出了当时市场的承受能力。 Mooers晚年对TRAC的评价充满了苦涩与自豪:“我创造了一个怪物,它吞噬了所有传统编程语言的假设。但怪物太早出生了,世界还没有准备好迎接它。”1994年,他在一次采访中演示了TRAC的一个简单示例——用几行代码生成一个完整的HTML页面。观众惊叹于其简洁性,但没有人知道,这个演示背后的语言,已经沉睡了三十年。 ## 评论 TRAC的故事是软件历史中一个被遗忘的隐喻:**最革命的创新,往往诞生于最不恰当的时代。** 在1962年,计算机还是被锁在空调房间里的庞然大物,用户是穿着白大褂的科学家,编程是严肃的数学活动。Mooers却试图将编程变成一种诗意的、流动的、交互的文本游戏。他的失败不是因为技术不够好,而是因为他挑战了“程序”与“数据”、“作者”与“用户”之间的根本界限。 从商业角度看,TRAC的教训至今仍然适用:创业公司不应过早挑战用户的基本认知框架。Mooers试图同时改变编程语言(宏)、编程范式(交互式)和编程文化(一切皆文本),这种多重颠覆超出了市场的吸收能力。相比之下,Unix的M4虽然更保守,却因为融入现有环境而获得了成功。 但历史总是充满讽刺。今天,当我们用JavaScript在浏览器里动态修改网页,用Python的装饰器实现宏般的代码生成,用Jupyter Notebook进行交互式编程时,我们都在无意中实践着Mooers五十年前的梦想。TRAC没有死,它只是化作了无数现代编程语言中的幽灵,提醒着我们:最激进的思想,往往需要最漫长的时间来被消化。 ## 参考资料 - [Calvin Mooers - Wikipedia](https://en.wikipedia.org/wiki/Calvin_Mooers) — 详细介绍了Mooers的生平、信息检索贡献以及TRAC的发明背景。 - [TRAC (programming language) - Wikipedia](https://en.wikipedia.org/wiki/TRAC_(programming_language)) — TRAC语言的技术细节、语法设计以及历史影响。 - [The TRAC Language: A History](https://www.softwarepreservation.org/projects/TRAC) — 由软件保护协会整理的TRAC原始文档、代码和Mooers的回忆录。 - [Calvin Mooers: The Father of Information Retrieval](https://www.computerhistory.org/calvin-mooers/) — 计算机历史博物馆对Mooers的专题报道,包含其创业历程的访谈。 - [M4 Macro Processor - GNU](https://www.gnu.org/software/m4/manual/m4.html) — GNU M4的官方文档,其中提到了与TRAC的关联。

发布于 2026/7/4