REXX(Restructured Extended Executor)是IBM在1980年代發(fā)明的一種程序設(shè)計(jì)語(yǔ)言。主要用在IBM的大型計(jì)算機(jī)(Mainframe Computer)上,在VSE、VM、OS/400、AIX、OS/2其他的IBM平臺(tái)上也可以找到它的解譯器或編譯器。另有面向?qū)ο蟮陌姹荆蔀镺bjectRexx。
發(fā)展歷程
從 Rexx 誕生起,IBM 就將各種版本的 Rexx 加入到它的操作系統(tǒng)中 —— 從主機(jī)到中型機(jī)再到終端用戶操作系統(tǒng),比如 OS/2 和 PC-DOS。其他 OS 制造商,比如 Amiga,也將 Rexx 作為永遠(yuǎn)可用的系統(tǒng)腳本語(yǔ)言集成進(jìn)來(lái)。此外,許多獨(dú)立軟件開(kāi)發(fā)商為很多平臺(tái)創(chuàng)建了 Rexx 環(huán)境。再晚些時(shí)候,ANSI 于 1996 年正式為 Rexx 采納了一個(gè)標(biāo)準(zhǔn)。
當(dāng)前(尤其是在 Linux 或者起源于 BSD 的 OS 上),Rexx 的那些大部分早期實(shí)現(xiàn),主要作為歷史足跡為人們所關(guān)心。不過(guò),兩個(gè)當(dāng)前保持的 Rexx 實(shí)現(xiàn)可以用于包括 Linux、Mac OS 和 Windows 在內(nèi)的許多平臺(tái):Regina 和NetRexx。Regina 是本地執(zhí)行文件,以免費(fèi)軟件源代碼方式,或者為諸多平臺(tái)預(yù)編譯好的方式獲得 —— 您可以像安裝任何其他語(yǔ)言解釋器一樣安裝它。NetRexx 是一個(gè)有趣的“混合物”。此語(yǔ)言派生自普通的 Rexx。更類似于 Jython 或者 Jacl,NetRexx 將類似于 Rexx 源代碼編譯為 Java 字節(jié)代碼,并(可選)在 JavaOS 中運(yùn)行作為結(jié)果生成的 .class 文件。
NetRexx 是一個(gè) IBM 項(xiàng)目,用于為 Java 虛擬機(jī)編譯類似于 Rexx 的代碼。在實(shí)際能力和編程級(jí)別上,Rexx 最接近于 bash 加上 GNU 文件工具(外加 grep 和 sed );或者可能相當(dāng)于 Awk 或 Perl。當(dāng)然,相對(duì)于 Python、Ruby 或者Java 來(lái)說(shuō),Rexx 讓人感覺(jué)更為快而粗糙。Rexx 的冗長(zhǎng) —— 或者更應(yīng)該說(shuō)是,簡(jiǎn)潔 —— 類似于 Perl、Python、Ruby 或者 TCL科技。并且,Rexx 當(dāng)然是完全 Turing 的,支持模塊和結(jié)構(gòu)化編程,有面向?qū)iT(mén)任務(wù)的庫(kù),例如 GUI 接口、網(wǎng)絡(luò)編程和數(shù)據(jù)庫(kù)訪問(wèn)。但是它最自然的目標(biāo)在于系統(tǒng)腳本的自動(dòng)化和本文處理任務(wù)。與shell 腳本一起,Rexx 使得應(yīng)用程序的控制非常自然且顯而易見(jiàn);但相對(duì)于 bash (或者 tcsh 、 ksh 等等),Rexx 中包含了更豐富的內(nèi)置控制結(jié)構(gòu)和(文本處理)函數(shù)。
在文體上,Rexx 的 IBM/mainframe 根源體現(xiàn)在它對(duì)命令的大小寫(xiě)敏感;在某種次要程度上也體現(xiàn)在它使用標(biāo)點(diǎn)符號(hào)相對(duì)較少(更多用關(guān)鍵字而不是符號(hào))。我傾向于認(rèn)為這些特性的目的是提高可讀性;但這在很大程度上取決于個(gè)人的愛(ài)好。
語(yǔ)言特點(diǎn)
十進(jìn)制浮點(diǎn)數(shù)算術(shù):能準(zhǔn)確計(jì)算表示和計(jì)算0.1之類的數(shù)字。
Rexx 一個(gè)層次非常高的腳本語(yǔ)言,有特別強(qiáng)大的用于文本處理任務(wù)的工具。
語(yǔ)言組成
基本的 REXX 組成包括了指令和內(nèi)置函數(shù)兩部分,此外 TSO/E 環(huán)境下的 REXX 還提供了外部函數(shù)以及數(shù)據(jù)堆棧函數(shù)等。
參考資料 >