本系列文章将依托《Starting Forth》这一权威著作,通过PC-DOS与51单片机上运行的FORTH系统实例,引领各位读者系统探索Forth计算机语言的奥秘。 一、初学者指南:揭秘计算机语言 初识“计算机语言”这一术语,初学者或许会遐想:“计算机究竟说着怎样的语言?这定是难以捉摸的密码,或许形如:976#!@NX714&+”。然而,计算机语言实则并不晦涩。它仅是人与计算机沟通的一座便捷桥梁。 不妨以木偶为例。操控者只需轻摇木制控制器,木偶便能“翩翩起舞”,无需直接接触操控线。在此情境下,摇动控制即木偶的“行走”指令。操控者以木偶能懂、自身易掌握的方式,引导木偶行动。 计算机亦如提线木偶,需以特定语言精确指示其操作。因此,我们亟需一种兼具两种看似矛盾特性的语言:既需精确传达计算机执行操作所需的所有信息,又需简洁易用,便于程序员驾驭。 自计算机诞生以来,语言层出不穷:Fortran乃先驱,COBOL仍是数据处理标杆,BASIC作为初学者语言,正逐步迈向Fortran与COBOL的殿堂;C与Java则是90年代的通用语言。 而本书聚焦的,是一种别具一格的语言——Forth。近年来,Forth的受欢迎程度历久弥新,在各领域程序员中均享有盛誉。 前述所有语言,包括Forth,均属“高级”语言范畴。对于初学者而言,明晰高级语言与运行它的计算机之间的差异至关重要。高级语言对程序员而言始终如一,无论运行于何种品牌或型号的计算机。但每种品牌或型号均有其独特的内部语言,即“机器语言”。 为阐释机器语言,让我们再次以木偶为例。设想没有木制控制器,木偶师需直接操控琴弦。每根琴弦对应木偶身体的一部分,琴弦运动的和谐组合便构成了木偶的“机器语言”。 现将琴弦绑定至控制器,控制器犹如高级语言,操控者只需手腕一转,便能同时驱动多根琴弦。 高级计算机语言亦然,简单熟悉的符号“+”背后,是众多内部功能的协同执行。 计算机的巧妙之处在于:它能通过编程,将高级符号(如“+”)翻译为自身的机器语言,进而执行机器指令。高级语言实则是一种计算机程序,将人类可理解的单词与符号,翻译为特定品牌与型号的计算机所能理解的机器语言。 Forth与其他高级语言有何不同?简而言之,这关乎人与计算机之间的妥协。语言设计需兼顾人类用户的便捷性与计算机操作的兼容性。 Forth在语言领域中独树一帜,因其对此问题的解决方案独具匠心。本书将为您揭晓其独特之处。 二、专业人士探秘:Forth在现实世界中的风采 直至1994年前后,Forth的受欢迎程度持续攀升,在爱好者与业余爱好者中尤为显著。约1996年后,其受欢迎程度保持相对稳定。然而,这一发展仅是Forth悠久历史中的新篇章。 自1972年起,Forth便已在重要的科学与工业应用中崭露头角。事实上,若您专业使用小型或微型计算机,Forth或许能以更高效的方式运行您的应用程序。 此刻,您或许会问:“若Forth如此高效,为何我未曾使用?”答案在于,您与大多数人一样,对Forth知之甚少。 欲深入了解Forth,建议您阅读本书,并尽可能寻找Forth系统亲身体验。
然而,对于仍在书店徘徊的读者,本部分将解答两个关键问题:“Forth究竟为何?”以及“Forth有何妙用?” Forth集多重身份于一身: 高级语言 汇编语言 操作系统 一套开发工具 软件设计哲学 (1)作为高级语言,Forth以一组强大的标准命令为起点,进而提供定义自定义命令的机制。在先前定义的基础上构建定义,这一结构化过程便是Forth的高级编码之道。 (2)作为汇编语言,Forth允许使用汇编程序,在汇编助记符中直接定义单词。所有命令均由同一解释器解释,由同一编译器编译,赋予语言极大的灵活性。 (3)您的代码顶层将酷似应用程序的英语描述。Forth被誉为“元应用语言”——一种能够创建面向问题语言的语言。 (4)作为操作系统,Forth具备传统操作系统的所有功能,包括解释、编译、汇编、虚拟内存处理、I/O、文本编辑等。 (5)然而,得益于Forth的独特设计,Forth操作系统较传统操作系统更为简洁,运行更迅速,使用更便捷,且占用内存更少。 Forth有何优势?Forth提供了一种简便方法,以最大化处理器效率。例如: Forth运行迅捷。高层Forth的执行速度与其他高级语言并驾齐驱,较同等汇编语言程序仅慢20%至75%。而时间关键代码可用汇编语言编写,以全速运行。Forth摒弃传统操作系统,消除冗余与不必要的运行时错误检查。 Forth编译后的代码紧凑。Forth应用程序较同等功能的汇编程序所需内存更少,能耗更低(对于手持设备与便携式设备至关重要!)。以Forth编写,整个操作系统及其标准词集驻留于不足8K字节之中。对目标应用程序的支持或许仅需不足1K字节。 Forth具备可移植性。它已在工业界所知的几乎每一种小型与微型计算机上实现。大多数微控制器与DSP,即便规模小巧,亦有Forth实现。 众所周知,Forth能将相当于汇编语言编程的程序开发时间缩短10倍,将相当于C或Java高级编程的时间缩短2倍。生产率的提升,源于Forth是“结构化编程”的典范,亦因其具备交互性与模块化特性。 以下是Forth在现实世界中的部分应用实例: (1)AVCO/Textron系统,用于楼宇自动化与辅助服务,服务于沙特阿拉伯哈立德国王国际机场。系统包含9台PDP 11/44、378台基于8086的计算机与320台基于8085的安全处理器,共同监控与控制超过36,000个点。 (2)伊士曼柯达公司,质量控制系统监控摄影胶片密度,包括胶片运动控制、胶片密度步长的自动识别以及定制的IEEE-488总线接口。 (3)联邦快递,手持超级追踪器,由每位联邦快递递送员携带。包含条形码阅读器、键盘、2x20行显示器,执行广泛的包裹输入与跟踪功能,包括从机场代码到所有10,000个美国邮政编码的交叉索引,并具备智能断电序列,以延长电池寿命。 (4)美国国家航空航天局?戈达德航天飞行中心: 1)航天飞机模拟器的50英尺长六关节臂的控制。大量数学例程将两个三轴操纵杆命令转换为六个不同坐标系中所需的关节速度。 2)航天飞机仪器中使用的UT69R000抗辐射微处理器的多任务操作系统、Forth语言编译器与库。
3)开发基于Forth的小型有效载荷住宿接口模块(SPAIM),将航天飞机的太阳反向散射紫外线(SSBUV)仪器与航天飞机的航空电子系统相连。SSBUV仪器用于校准NOAA卫星上的臭氧测量仪器。 (5)欧文斯科宁玻璃纤维公司,多年来一直将Forth作为其分布式工业控制器的基本固件。这些控制器执行多种功能,管理绕线机、称重设备等,用于制造各种玻璃纤维产品。韩国与墨西哥的工厂亦使用FORTH, Inc.的EXPRESS提供监控与报告功能。 (6)土星公司,整个土星汽车装配厂的分布式暖通空调系统,控制超过200个40马力加热-冷却-加湿单元(配备Z-80s),通过双层网络使用PC作为文本与图形系统监视器。外部空气传感器为智能设定点控制以及燃气加热与冷却水冷却系统的经济使用提供输入。 (7)萨克拉门托市政公用设施区(加利福尼亚州):州议会大厦中的光伏阵列提供用户可配置的实时趋势、历史趋势、警报/异常报告、规则跟踪、I/O系统练习器、基于类的实时数据库、图形过程显示、同步多供应商I/O系统扫描、I/O与开发过程模拟,以及带有完整图形的多个远程终端访问。Digitronics Sixnet(TM) I/O系统的定制驱动程序在一周内便可提供;EXPRESS已支持Modicon、Allen-Bradley、OPTO-22 OPTOMUX与PAMUX等。
(8)明尼苏达大学,基于PC的望远镜控制与数据采集系统(通过IEEE-488总线),数据分析与图形显示。包括提供远程观测,使用自定义协议在单条电话线上多路复用来自三个独立数据流的数据包。 (9)VertexRSI(分区),用于定制卫星跟踪接收器的软件。包括频率合成器控制、远程RS-232命令端口、真空荧光图形显示。 (10)一家移动电话制造商正引入源自SENDIT项目的新游戏引擎。该引擎使用基于Forth的虚拟机,以减小电话中游戏的大小,并允许在电话中提供更多功能,而不增加存储器大小。 (11)近期,一项基于MPE 8051与ARM硬件的咨询项目即将向市场推出一系列全新的自动售货机,引领行业创新潮流。
(12)开普敦的建筑计算机软件巨头CCS(建筑计算机软件公司),其研发的MARS与CANDY应用程序已在全球范围内树立行业标杆。CCS软件是ProForth for Windows环境下开发的大型Windows应用程序典范,VFX Forth版本代码量已突破85万行。值得一提的是,CCS软件在香港新启德机场的规划中发挥了关键作用。欲了解更多,请访问CCS官方网站。 (13)Barefoot Auditor,这一微软用于收集自身电脑信息的工具,正是基于MPE的Forth系统精心打造。《赤脚审计者》近期频频亮相各大杂志封面,欲获取更多详情,请联系Pathfinder。 (14)微系统电子公司,将MPE的ProForth for Windows作为商业洗衣控制系统的核心驱动力,同时采用MPE的Forth 6交叉编译器为PLC提供实时控制支持。这些系统已广泛应用于全球多个国家,您或许正躺在由Micross Tracknet控制系统清洗的床单上享受美梦。 (15)Forth虚拟机在支付终端领域大放异彩,助力EuropayInternational的开放终端架构(OTA)实现跨平台应用部署。OTA通过虚拟机(VM)架构,将支付终端应用程序直接推送至各类支付终端,无需考虑硬件或CPU差异。目前,OTA VM已适配多款CPU,正在全球范围内加速部署。OTA项目团队规模庞大,多达30名程序员在两大洲的多个地点协同作战。欲深入了解OTA,请点击此处。 三、精通Forth,开启高效计算之旅 我们不得不承认,这是一个难得的机遇:Forth赋予您更高效地利用电脑的能力。 打个比方:手动变速器虽比自动变速器更难驾驭,但对许多司机而言,它却能带来更佳的操控体验。 同理,Forth相较于传统高级语言,学习门槛或许更高,但传统高级语言之间相似性极高(即掌握一种后,学习另一种并不难)。然而,一旦您精通Forth,便能以最小化CPU时间和内存空间为目标,运用其独特的组织原则,显著缩短项目开发周期。 请记住,Forth的所有元素均遵循同一协议,包括操作系统(有时)、编译器、解释器、文本编辑器、虚拟内存、汇编程序以及多道程序。相较于逐一学习这些单独元素,掌握Forth的整体学习曲线要短得多。 若这一切让您心潮澎湃,那么,请翻开新的一页,开启您的Forth之旅吧! 2007年注:另请参阅维基百科上的第四条相关条目。 2007年:《Starting FORTH》出版后,FORTH语言正式迈入标准化时代,遵循ANS Forth标准。 2007年:ANS Forth标准于1994年尘埃落定,并以与ISO Forth标准几乎一致的形式获得广泛认可。 2007年:Forth早期的部分应用已逐渐淡出历史舞台。然而,更多Forth的应用实例,请访问Forth公司、MPE及其他相关网站。
|