为了解决软件开发的难题,人们发明了汇编语言,通过一些助记符来减轻二进制编码的开发压力。这的确是行之有效的方法,然而,汇编语言太依赖程序员的素质,而且无法适应大规模的开发。
到了上世纪60年代,出现了Fortran,Cobol,Lisp,Algol 60等现代高级语言。程序员可以用接近自然语言的程序语言编制软件,再通过编译器转换成机器可执行的代码。由于使用精确的形式语言来定义程序语言本身,并通过对硬件的抽象使得程序与计算机平台无关,导致高级语言生产效率提高、费用降低,计算机软件业得以蓬勃发展。
为了实现生产效率的提高、可靠、易、易管理的开发思想和方法。文中在介绍脚本语言及使用的基础上,提出了其在数据采集系统中的使用模型及具体实现。
脚本语言是为了缩短传统的编写一编译一链接一运行(edit-compile-link-run)过程而创建的计算机编程语言。相对于编译型计算机编程语言,用脚本语言开发的程序在执行时,由其所对应的解释器(或称虚拟机)解释执行。系统程序设计语言是被预先编译成机器语言而执行的。脚本语言的主要特征是:程序代码即是脚本程序,亦是最终可执行文件。脚本语言可分为型和嵌入型,型脚本语言在其执行时完全依赖于解释器,而嵌入型脚本语言通常在编程语言中(如C,C++,VB,.Java等)被嵌入使用。
脚本技术得益于计算机硬件的加速发展。过去某些情况下甚至系统程序设计语言也不够有效,因此不得不用汇编编写应用程序。而今的机器比1980年的快100~500倍,且仍在以每18个月翻一番的速度增长。计算机性能快速提高,使计算机程序越来越复杂。因此,开发时间已远比运行时间紧迫。这时,脚本语言作为系统程序设计语言的补充,开始被主要的计算机平台所同时提供。编程语言已经由性能低下的硬件与执行效率之间的矛盾,转变为快速变化的市场需要与低效的开发工具之间的矛盾,所以脚本语言的发展在今后的软件开发中有着必然的趋势。
脚本语言和系统程序设计语言,一个重要的不同是脚本语言是被解释而系统程序设计语言是被编译。被解释的语言由于没有编译时间而提供快速的转换,通过允许用户运行时编写应用程序,而不需要耗时的编译/打包过程。解释器使应用程序更加灵活,脚本语言的代码能够被实时生成和执行。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序设计师快速完成程序的编写工作。
(1)作为批次处理语言或工作控制语言。许多脚本语言用来执行一次性任务,尤其是系统管理方面。DOS,Windows的批处理文件和Unix的shell脚本都属于这种应用;
(2)作为通用的编程语言存在,如Perl、Py-thon、Ruby等。由于“解释执行,内存管理,动态”等特性,它们仍被称为脚本语言。但它们已经用于应用程序编写,用户也不把它们看作脚本语言;
(3)许多大型的应用程序都包括根据用户需求而定制的脚本语言。同样地,许多电脑游戏系统使用一种自定义脚本语言来表现NPC(Non-Player Character,Non-Playable Character,Non-Player Class)和游戏的预编程动作。此类语言通常是为一个单独的应用程序所设计,虽然它们貌似一些通用语言(如Quake C,Modeled After C),但它们有自定义的功能;
(4)网页中的嵌入式脚本语言。熟知的HTML(Hyper Text Mark-up Language)即超文本标记语言,就是一种脚本语言,它的解释器就是浏览器。JavaScript直到现在仍然是网页浏览器内的主要编程语言,它的ECMAScript标准化了它成为流行的通用嵌入式脚本语言。另外,随着动态网页技术发展,ASP、JSP、PHP等嵌入网页的脚本语言正被广泛使用,不过这些脚本要通过Web Server解释为Html而被浏览器执行;
(5)脚本语言在系统应用程序中嵌入使用,作为用户与系统的接口方式。在工业控制领域,PLC编程、组态软件的脚本语言是扩充组态系统功能的重要手段;在通信平台领域,IVR(自动语音应答)流程编程;Office办公软件,提供的宏和VBA;其他应用软件如ER Studio提供的Basic MacroEditor,用户可以编写Sax Basic脚本操作ER图,生成Access库、导出Word文档等扩展功能。
纵观程序设计语言的发展,一个很显著的特点就是以机器的性能换取人的效率,以提高开发者的工作效率和满足人的需求为目标,在所有资源中人是最昂贵的资源,因而程序的编写从面向机器逐渐向面向人过度。而脚本语言就是可以提高开发效率和满足客户需求程序设计的最好选择。比如在开发中需要对客户自定义表达式计算时,如果自己去写表达式解析,将是一个几乎无法完成的任务。而使用微软的Script控件,把表达式作为脚本函数返回值,让Script控件解释计算,几行代码就完成了,开发效率大大提高。
在软件系统实践中,用的最多的就是把脚本嵌入应用程序中。快速开发工具Delphi除了可用使用ActiveX控件类型的脚本引擎外,也有许多优秀的原生Delphi脚本引擎控件如Scripter Studio,PaxScr4pter,Inner Fuse Pascal Script,Fast Script等。在开发一款通用的数据采集系统中,就采用了核心架构使用高级语言,用户扩展和通讯协议使用Fast Script描述的设计模式。之所以选择FastScript,因为Fast Script是一个交叉平台的语言的脚本引擎。它对希望增加脚本功能的编程人员非常有用。Fast Script是用100%的Object Pascal编写,具有支持OLE和变量数组,可以使用多语言脚本(Pascal Script、C++ Script、JScript和BasicScript),与标准面向对象语言语法相近,可以使用程序内的任何对象、标准库访问基类、控件、窗体和DB;易可扩展的库结构;内存占用小等特点。
系统的结构,如图1所示。采用这种模式,就是要充分发挥系统程序语言和脚本语言的各自优势。因为核心架构需要创建采集线程、进行任务调度、处理系统消息和加载脚本引擎等,而这些需要稳定且处理效率高,所以使用系统程序语言开发;而对于千变万化的通讯协议,如果全都被系统核心架构包括,是不可能的。而把各种通讯协议用不同的脚本语言文件描述,供采集系统调用,问题就可以解决了。