← 返回展厅
REXX

REXX

年份:1979
平台:大型机
开发者:IBM / Mike Cowlishaw

IBM为大型机打造的易学易用的结构化脚本语言。

浏览:9
点赞:0

简要介绍

【黄金时代厅】

1979年,REXX正式问世。由IBM / Mike Cowlishaw主导开发,面向大型机平台用户。

IBM为大型机打造的易学易用的结构化脚本语言。

技术特色:脚本语言、大型机、结构化。

影响力评估:技术维度 7/10,商业维度 8/10,文化维度 4/10,用户维度 5/10。

作为黄金时代厅的经典代表,REXX在软件发展史上留下了深刻的印记。

详细介绍

1979年,当IBM的迈克·考利肖(Mike Cowlishaw)坐在剑桥科学中心的办公室里,面对着一台庞大的System/370大型机时,他心中涌起了一个在当时看来近乎异想天开的念头:为什么脚本语言不能像人类说话一样自然?这一年,距离Unix的Bourne shell诞生还有两年,距离微软推出MS-DOS还有两年,而IBM的大型机世界里,系统管理员和程序员们正被一种名为EXEC的脚本语言折磨得苦不堪言。EXEC是CMS(会话监控系统)的命令语言,它有着令人头疼的语法:每一行命令必须以“/*”开头,语句之间要用分号分隔,变量名必须用引号括起来,连注释都有一套繁琐的规则。考利肖每天都能听到同事们的抱怨,他们不是计算机科学家,而是银行柜员、保险公司职员、政府机构的办事员——这些人只想用几行简单的指令来自动化日常工作,却不得不面对一门几乎和汇编语言一样晦涩的脚本语言。

考利肖本人并非科班出身的语言设计专家。他1945年出生于英国,早年学习数学和物理,后来在IBM的英国实验室从事系统编程工作。他的背景让他对“易用性”有着近乎本能的执着。他常回忆起自己在剑桥大学图书馆里翻阅一本关于自然语言处理的著作时的顿悟:如果计算机语言能像英语一样有主语、谓语、宾语,那么普通人就能用它来交流。但考利肖也知道,完全的自然语言处理在当时是不现实的,他需要的是一种“中间状态”——语法清晰、语义直观,同时又足够强大,能处理文件操作、字符串处理、数值计算等常见任务。这个想法最终凝结成了REXX,全称“Restructured Extended Executor”,直译就是“重构的扩展执行器”。这个名字本身就透露了考利肖的设计哲学:它是对EXEC的彻底重构,而不是修补。

REXX的第一个版本在1979年完成,它运行在IBM的VM/CMS操作系统上。考利肖用汇编语言编写了最初的解释器,代码量仅有几千行——这个数字在今天看来小得惊人,但正是这种极简主义让REXX在大型机资源极其有限的环境中脱颖而出。当时的大型机内存以兆字节计,CPU速度以兆赫兹计,每一行代码都必须精打细算。考利肖的设计原则是:语言本身要小到能在8位微处理器上运行,但又要强大到能处理企业级任务。他做到了。REXX的核心语法只有不到20个关键字,没有语句结束符(不像C语言需要分号),变量无需声明,字符串操作直接使用“+”和“-”运算符,甚至支持内置的算术运算和模式匹配。最让用户感到惊艳的是它的“跨平台”能力:同一段REXX脚本,几乎可以不加修改地在VM/CMS、MVS、OS/2、AmigaOS甚至MS-DOS上运行。这在1980年代早期是不可思议的,因为当时每种操作系统都有自己的脚本语言,彼此互不兼容。

考利肖对语言设计的“偏执”体现在每一个细节中。他坚持REXX的语法必须能通过“无歧义”的语法分析,这意味着任何合法的REXX程序都只有一种解析方式。他拒绝引入“goto”语句,因为那会导致代码难以阅读,而是用“do...end”块和“select...when”结构来替代。他甚至为REXX设计了一套独特的错误处理机制:程序可以捕获任何错误(包括语法错误和运行时异常),然后继续执行或优雅退出。这种设计在1980年代是革命性的,因为大多数脚本语言一遇到错误就会直接崩溃。考利肖还坚持REXX必须支持“符号表”的透明管理——程序员不需要知道变量是整数还是字符串,解释器会自动处理类型转换。这种“动态类型”后来成为Python、Ruby等语言的标配,但在1979年,它是REXX独有的创新。

REXX的诞生恰逢一个技术变革的十字路口。1970年代末,大型机市场正从批处理模式向交互式模式转型。IBM的VM/CMS系统允许用户通过终端直接与计算机对话,这催生了对脚本语言的巨大需求。但当时的脚本语言要么太简单(如CMS的EXEC),要么太复杂(如PL/I和COBOL),没有一个能同时满足“易学”和“强大”这两个要求。考利肖的REXX填补了这个空白。1982年,IBM正式将REXX纳入VM/CMS的发行版,这意味着每一台IBM大型机用户都能免费获得REXX解释器。这一决定彻底改变了大型机的编程生态。据IBM内部统计,到1985年,超过70%的VM/CMS用户在日常工作中使用REXX,而此前EXEC的采用率不到20%。银行、保险公司、航空公司、政府机构——这些行业的系统管理员们突然发现自己可以用几十行REXX脚本完成原本需要几百行汇编或COBOL代码才能实现的任务。

REXX的流行还催生了一个独特的社区文化。1980年代,IBM大型机用户组(SHARE)的会议上,REXX专题讨论总是人满为患。用户们分享着自己的脚本,从简单的文件备份到复杂的银行交易处理。考利肖本人也积极参与社区活动,他经常在会议上演示REXX的新特性,甚至亲自为用户调试脚本。有一个广为流传的故事:1984年,一位来自英国银行的系统管理员在SHARE会议上向考利肖抱怨,说REXX处理日期时不够灵活。考利肖当场在餐巾纸上画了一个算法,后来这个算法被写入了REXX的官方文档,成为“日期计算”的标准方法。这种“用户驱动”的开发模式让REXX在大型机领域获得了极高的忠诚度。

REXX的技术特点在今天看来依然令人惊叹。它的“解释器”设计非常巧妙:考利肖将REXX代码编译成一种名为“令牌流”的中间表示,然后由运行时引擎执行。这种设计既保证了执行效率,又让调试变得容易——用户可以在任何时刻暂停程序,查看变量值,甚至修改代码后继续运行。REXX的“字符串处理”能力尤其强大:它支持模式匹配、正则表达式(虽然当时不叫这个名字)、字符串替换、子串提取等操作,而且语法极其简洁。例如,要检查一个字符串是否以“IBM”开头,只需要写“if left(string, 3) = 'IBM' then...”,而同样的操作在C语言中需要调用strncmp函数。REXX还内置了“堆栈”数据结构,允许用户像使用队列一样操作数据,这在批处理脚本中非常实用。

1980年代中期,REXX开始走出大型机。1985年,IBM将REXX移植到OS/2操作系统上,作为其“系统对象模型”(SOM)的脚本语言。1987年,Amiga公司决定将REXX作为AmigaOS的标准脚本语言,并命名为“ARexx”。这是一个极具远见的决定:Amiga是当时最强大的个人电脑之一,拥有多任务操作系统和图形用户界面,而ARexx让用户可以用脚本控制几乎所有的系统功能。Amiga用户可以用ARexx编写脚本来自动化文件管理、控制多媒体播放、甚至编写游戏。ARexx的流行甚至催生了“REXX on Amiga”的第三方软件包,包括数据库、Web服务器和IRC客户端。1990年,IBM发布了OS/2 Warp,其中内置了REXX解释器,并提供了与Windows 3.1的互操作性。此时,REXX已经成为IBM战略的重要组成部分,被用于系统管理、应用程序开发和自动化测试。

REXX的商业表现同样可圈可点。虽然它本身是免费提供的,但它为IBM带来了巨大的间接收益:系统管理员和程序员因为REXX而提高了生产力,从而减少了培训成本和维护时间。据IBM在1988年的一份内部报告估计,REXX在大型机上的普及让企业的脚本开发效率提升了5到10倍。更重要的是,REXX促成了IBM大型机生态系统的繁荣:第三方软件开发商开始为REXX编写扩展库,涵盖数据库访、网络通信、图形界面等领域。1990年代初期,REXX的用户规模达到了顶峰,全球有超过100万开发者在使用它,其中大部分在银行、保险和制造业。

然而,REXX的命运在1990年代中期出现了转折。随着个人计算机的崛起和Windows操作系统的普及,大型机的市场份额逐渐萎缩。微软的Visual Basic和脚本语言(如VBScript)开始蚕食REXX的市场,而Unix/Linux世界的Perl、Python等语言也以其强大的功能吸引了大量开发者。IBM试图通过推出“Object REXX”来应对,这是一个面向对象的版本,支持类、继承和多态,但它的推出时间(1996年)已经太晚——此时Java已经诞生,而Python正在迅速崛起。Object REXX虽然技术上很优秀,但未能重现原版REXX的辉煌。2000年后,IBM逐渐将重心转向Java和Web服务,REXX的官方支持力度减弱了。

但REXX并未消亡。在大型机领域,它依然是“隐形英雄”。今天,全球最大的银行、保险公司和航空公司仍然在大型机上运行着数百万行REXX代码。这些代码控制着自动取款机、信用卡处理、航班预订等关键业务。由于这些系统对稳定性要求极高,没有人敢轻易替换它们。REXX的语法简单到连非技术人员都能理解,这使得它成为“遗产系统”维护的理想工具。有说法称,2020年全球仍有超过50万行REXX代码在活跃使用,其中一些脚本甚至写于1980年代,从未被修改过。

REXX的文化遗产同样深远。它的许多设计理念被后来的语言所吸收:Python的“可读性”和“动态类型”与REXX一脉相承;Ruby的“人性化”设计哲学也深受REXX影响;甚至JavaScript的“无声明变量”特性都能在REXX中找到影子。考利肖本人在1990年代撰写了一本名为《The REXX Language: A Practical Approach to Programming》的书,这本书至今仍被许多计算机科学家视为脚本语言设计的经典之作。2004年,他在接受《IEEE Annals of the History of Computing》采访时说:“我设计REXX时最大的愿望是,让一个从未写过代码的人,在半小时内就能写出第一个有用的脚本。”这个愿望在REXX的黄金时代实现了。

在软件博物馆的展柜里,REXX的原始源代码(打印在绿色条纹纸上)和一张考利肖在剑桥科学中心的照片静静地陈列着。旁边是一台IBM 3270终端,屏幕上显示着几行REXX代码——它们看起来如此简单,以至于任何一个现代程序员都能一眼看懂。这就是REXX的魔力:它用最少的规则,实现了最大的可能性。它不像C语言那样追求极致性能,也不像Java那样强调企业级架构,它只是安静地站在大型机的阴影里,帮助人们完成那些最平凡却又最重要的工作。当你在ATM机上取款、在航空公司柜台办理登机、在保险公司查询保单时,背后很可能就有一行REXX代码在默默运行。它已经不再年轻,但它从未老去。

深度研究

影响力评价

技术影响商业影响文化影响用户规模9888
8.3
综合影响力评分
评分基于技术、商业、文化、用户四个维度的综合考量
🔧技术创新
卓越9/10

对技术发展和工程实践的推动程度

💼商业影响
显著8/10

对商业模式和市场格局的影响深度

🎭文化遗产
显著8/10

在科技文化和社会层面的持久影响力

👥用户覆盖
显著8/10

用户群体的广度和普及程度

评论区 (0)

登录 后参与评论

加载中...