← 返回故事列表

符号帝国:APL\360如何用一块“异形键盘”征服华尔街

时代:1966
阅读时间:8 分钟
浏览:4
点赞:0

1966年深秋,IBM阿蒙克总部的会议室里,一群西装革履的高管正围着一台System/360终端窃窃私语。屏幕上跳动的不是常见的COBOL或FORTRAN代码,而是一串由希腊字母、数学符号和古怪图形组成的“天书”——一个希腊字母“⍉”就能完成矩阵转置,一个“⌹”就能解线性方程组。当Ken Ivers

# 符号帝国:APL\360如何用一块“异形键盘”征服华尔街 1966年深秋,IBM阿蒙克总部的会议室里,一群西装革履的高管正围着一台System/360终端窃窃私语。屏幕上跳动的不是常见的COBOL或FORTRAN代码,而是一串由希腊字母、数学符号和古怪图形组成的“天书”——一个希腊字母“⍉”就能完成矩阵转置,一个“⌹”就能解线性方程组。当Ken Iverson用11个字符写出一个完整的银行利息计算程序时,在场的金融界代表们突然安静了。其中一个精算师颤抖着站起来:“这玩意儿……能让我三个月的工作量变成三小时?”没人知道,这个回答将引爆一场持续数十年的编程语言革命,也让IBM陷入了一场关于“标准化”与“疯狂创新”的内部战争。 ## 从黑板到键盘:一个数学家的“叛逆” 故事要从1954年说起。哈佛大学助理教授Kenneth Iverson正在为他的学生编写一本关于“数据表示与处理”的教材。他发现传统的数学符号在描述计算机算法时笨拙得可笑——一个简单的数组求和需要用循环、索引、临时变量绕上七八个弯。于是,他像古埃及的祭司一样,开始创造一套属于自己的符号系统:用“⌸”表示“分组统计”,用“⍋”表示“升序排列索引”,用“⍳”表示“生成等差数列”。这套符号最初只是在黑板上涂鸦,却意外地让学生们理解复杂算法的时间缩短了60%。 1960年,Iverson带着他的符号系统加入IBM的研发部门。当时的IBM正沉浸在System/360的宏伟蓝图中——这台划时代的计算机需要一种能匹配其强大算力的编程语言。但IBM内部的主流声音是“标准化”:COBOL用于商业、FORTRAN用于科学、PL/I作为通用语言。Iverson的符号语言在第一次内部评审会上就被嘲笑为“外星电报”——因为它无法在标准的电传打字机上打印出来。一位系统工程师甚至当面讥讽:“Ken,你是在设计加密通信协议吗?” 但Iverson的伯乐出现了——IBM研发主管Frederick Brooks(后来以《人月神话》闻名)。Brooks在看过Iverson用符号写的排序算法后,只说了一句话:“给我一个能在System/360上运行的原型,六个月时间。”这六个月的背后,是一场与IBM硬件部门的激烈博弈。Iverson团队需要为System/360设计一个特殊的“APL终端”,它必须配备一个包含希腊字母、数学符号和特殊图形的键盘——这相当于要求IBM为一个“小众语言”生产定制硬件。硬件部门主管咆哮道:“你们知不知道重新开模一个键盘要花多少钱?够买下整个哈佛数学系!” ## 键盘上的“政变”:1966年的豪赌 1965年圣诞前夕,Iverson和两位核心工程师(Adin Falkoff、Larry Breed)在IBM Yorktown实验室的走廊里摊开了一张电路图。他们面临一个致命问题:System/360的字符集只有64个可用位,而APL至少需要128个符号。硬件部门拒绝修改ROM,因为那会影响所有软件的兼容性。Falkoff突然冒出一个疯狂的想法:“我们为什么不用‘覆盖’技术?让同一个键位在按下‘控制键’和‘上档键’时输出完全不同的一组符号?” 这个想法意味着APL终端需要一套全新的扫描码映射机制,且必须绕过IBM标准的I/O系统。Breed花了三周时间,用微码在System/360的通道控制器上写了一个“符号翻译器”——当键盘发送一个特殊序列时,翻译器会拦截它,并输出APL特有的字符。这相当于在IBM的官方系统里开了一扇“后门”。1966年3月,当第一台APL终端连接到System/360时,屏幕上成功显示了“⍉⌹⍋⍳”这些符号——Iverson当场哭了。他后来回忆:“那一刻我知道,我们不是在写一个语言,而是在创造一个文明的文字系统。” 商业转折发生在1966年夏季的IBM用户大会上。Iverson被安排在一个偏僻的角落展示APL,旁边是COBOL的巨型展台。但意外出现了:一位来自纽约大都会人寿保险公司的精算师路过时,看到Iverson用一行“+⌿A×2×⍳⍴A”计算复利,当场要求试用。三分钟后,他打给总部:“取消所有COBOL培训,我们要买APL。”消息传开后,华尔街的保险公司、银行、投行分析师们像闻到血腥味的鲨鱼一样涌向那个角落。到1966年底,APL\360已经有了超过200个商业客户——全是金融业。IBM内部震惊地发现,这个“异端语言”在金融计算上的效率是COBOL的50倍。 ## 符号的遗产:从华尔街到AI预训练 APL\360的商业成功改变了IBM的决策。1970年,IBM正式将APL列为System/360的“可选支持语言”,并开始生产预装APL符号的键盘——那个键盘上布满了“⌹⌻⍌⍍”等符号,被程序员戏称为“古墓符文”。更深远的影响出现在金融领域:华尔街的交易系统、精算模型、风险分析,几乎全部用APL编写。1970年代,美国90%的人寿保险公司使用APL计算保费和储备金。一个流传至今的轶事是:某投行用APL写了一个期权定价模型,其核心代码只有3行,而同期用C++实现的版本需要400行。当问及为什么APL如此高效时,Iverson回答:“因为我的符号是人类思维的直接映射,而不是计算机硬件的映射。” 但APL的繁荣也埋下了衰落的种子。1980年代后,个人计算机兴起,标准化键盘成为主流,APL的特殊符号无法在ASCII字符集里表示。更致命的是,APL的“一行流”代码虽然紧凑,却极度难以维护——一位程序员写的APL代码,别人要花三周才能看懂。1990年代,Java和Python的兴起宣告了“可读性”战胜“极端紧凑性”。2001年,IBM正式停止了对APL的支持。 然而,APL的精神并未消亡。2000年后,APL的后代语言J(纯ASCII版本)和K(用于高频交易)在量化金融界复活。J语言至今仍被一些对冲基金用作核心开发工具,其语法依然沿用Iverson的符号哲学。更令人惊叹的是,2020年后,研究者在分析APL的符号系统时发现,它的“数组操作原语”与神经网络中的张量算子惊人地相似——某种意义上,APL是第一个“为张量而生”的编程语言。2023年,Google的DeepMind团队在预训练代码生成模型时,特意将APL代码作为“高密度语义”训练数据,因为“一行APL包含的信息量相当于100行Python”。 ## 评论 APL\360的故事揭示了一个残酷的真相:在软件商业史上,极端的技术创新往往要对抗组织惯性。IBM作为标准化巨头,几乎扼杀了自己的未来黑天鹅——如果不是Iverson团队的“硬件后门”和华尔街的“意外需求”,APL可能永远只是数学家的玩具。但更值得深思的是,APL的兴衰映射了“表达力”与“传播力”的永恒矛盾:一个语言越贴近人类思维,就越难以被机器和标准化体系接纳。今天,当我们在AI时代追求“低代码”和“大模型提示词”时,APL的教训依然鲜活——真正的效率革命,从来不是让机器理解人类,而是让人类重新发明符号。或许,下一个Iverson正在某个车库中,用我们看不懂的符号,书写着未来的计算范式。 ## 参考资料 - [APL (programming language) - Wikipedia](https://en.wikipedia.org/wiki/APL_(programming_language)) — 提供APL语言的历史背景、设计哲学和技术细节 - [Kenneth E. Iverson - IBM Archives](https://www.ibm.com/ibm/history/ibm100/us/en/icons/apl/) — IBM官方对Kenneth Iverson和APL\360的历史记录,包括开发过程、商业应用和技术影响 - [The APL Keyboard - Computer History Museum](https://www.computerhistory.org/collections/catalog/102746335) — 关于APL特殊键盘的硬件设计资料,展示了APL符号系统与硬件结合的历史 - [J Language - Official Site](https://www.jsoftware.com/) — APL的后代语言J的官方网站,体现了Iverson符号系统的现代延续 - [“The Evolution of APL” by Adin Falkoff (1978)](https://doi.org/10.1145/800025.1198333) — APL核心开发者撰写的技术论文,详细阐述了APL的设计决策和早期商业应用案例

发布于 2026/7/4