当前位置:编程学习 > 网站相关 >>

Perl 语言的重要价值体现

信息来源:中国Perl协会
文章作者:klaus

出处:中国Perl协会 FPC(Foundation of Perlchina)
原名:The Importance of Perl
原文:_0498.html">http://www.perl.com/pub/a/oreilly/perl/news/importance_0498.html
请保护作者的著作权,维护作者劳动的结晶。

尽管媒体们如此关注Java和ActiveX,但真正“让英特网活起来”的却应该是Perl,一种专业技术分析家们视而不见,但是却出现在所有网络管理员、系统管理员或程序员脑中的语言。他们每天的工作包括建立常规的网络应用,或是把不同的程序粘起来,以实现它们的设计者们没有预见到的功能。Sun的第一位网络管理员Hassan Schroeder评论道:“Perl是英特网的传送带/血管。”
Perl最初是由Larry Wall为UNIX开发的一种脚本语言,其目的是为了将UNIX shell的易用性和编程语言(比如C)的强大功能与可塑性结合起来。Perl很快成为了UNIX系统管理员们的偏爱的语言。

随着World Wide Web的发展,Perl的用途有了极大的拓展。公共网关接口(CGI)提供了在网络服务器和程序之间传递数据并利用网页返回结果的简单方法。而Perl则迅速成为了CGI编程的主要语言。

在功能强大的Win32移植版本出现之后,Perl也有力地入侵,成为为NT系统的脚本语言之一,特别是在系统管理、网站管理与编程方面大显身手。

曾经,在主流的分析家们认为CGI程序和Perl将会很快被Java,ActiveX和其他新的专门为网络开发的技术所取代。然而,他们没有料到的是, Perl继续在发展壮大,Microsoft的Active Server Pages(ASP)和Apache服务器的mod_perl都支持在服务器上直接运行perl程序,以及数据界面如DBI,Perl DataBase界面,为后台数据库与Perl的整合提供稳定的API。

这篇文章探讨了为什么Perl变得越来越重要的原因,不局限于网络,而是做为一种广泛用途的计算机语言。这些原因包括:

Perl这样的脚本语言与Java,C++或C这样的传统程序语言适合的任务有着跟本的不同。
Perl将许多程序“粘着”在一起的能力,或者说将一个程序的输出转化成另一个程序的输入的能力。
Perl在处理文本方面无以伦比的能力,如正则表达式等强大特性。当网络文本(HTML)重新兴起而成为所有应用软件和系统的网络“外交语言”后,这一点变得尤其重要。
分布式的开发团队以一种以有机的、进化式的方式,跟随着快速变化的需求。
一种好的脚本语言应该是一种高级软件开发语言,既能够快速地开发小工具,同时又拥有开发复杂程序所需要的工作流与数据组织形式。执行速度一定要快。在调用系统资源如文件操作,内部进程通信,进程控制等方面一定要有效率。一种好的脚本语言应该可以运行在所有流行的操作系统上,适合信息处理(自由文本格式)和数据处理(数字与二进制数据)。它要可插入,可扩展。Perl符合了上面所有的标准。
为什么/何时要用脚本语言?
John Ousterhout在他的文章中有力地阐述道,脚本:二十一世纪的高层次程序语言。“像Perl和Tcl这样的脚本语言代表了一种与C或Java这样的系统程序语言非常不同的编程风格。脚本语言是被设计来“粘着”应用程序的;它们使用无类型的方法以达到比系统程序语言更高层次和更快捷的应用程序开发。计算机速度的提升和各种应用程序的混和与变化正使得在未来脚本语言变得越来越重要。”
Ousterhout继续道:就在我们接近二十世纪的尾声的时候,人们编写程序的方法发生了一个跟本性的转变。这个转变是人们从C和C++这样的系统程序语言转向了Perl或Tcl这样的脚本语言。虽然许多人正处于这样的转变之中,但很少人意识到了它的发生,更少有人明白它为什么在发生....

脚本语言是被设计来完成与系统程序语言所不同的任务的,这导致了它们之间根本性的差异。系统程序语言的设计是从底层开始建立数据结构和算法,从最初级的计算机元素如内存单元开始。与之相反,脚本语言被设计用来做“胶着”的工作:它们假定已经存在很多有效的组件,然后将它们连接起来。系统程序语言使用严格的数据类型来控制复杂性,而脚本语言则没有数据类型,以便方便地连结组件并提供快速开发应用程序的能力。

脚本语言和系统程序语言是互补的,而且从60年代起主要的操作系统都同时支持它们。然而,近期的一些趋势,如更快的计算机、更好的脚本语言的出现,图形用户界面和组件体系结构的重要性不断增加,和英特网的发展,使得脚本语言的应用大大拓展。脚本语言将有越来越多的应用,而系统程许语言则主要被用来开发各种组件,这样的趋势在下个十年中还会继续。

系统管理员们是最早利用脚本语言的强大功能的人。任何一个操作系统中,都存在这种问题。一般是为了自动完成某种重复性的工作。即使Macintosh系统也需要一些用户定义的自动操作。任务可能很简单,比如自动备份和恢复系统,或者很复杂,比如周期性地储存硬盘上所有文件,或者存储二十四小时内所有系统设置的改动。有些时候已经有这样的工具可以完成这些工作,但自动操作需要有控制程序来启动它们,提取和转化它们的输出,以及协调这些程序的工作。

许多系统都内置了一些脚本语言,如VMS的DCI,MS-DOS的BAT文件,UNIX的shell脚本,IBM的Rexx,Windows的 Visual Basic and Visual Basic for Applications,还有Applescripts都是专用于某种系统的脚本语言的好例子。Perl的独特在于他打破了脚本语言与某个操作系统的紧密联系,而成为了一种在多个平台下广泛使用的脚本语言。

有些脚本语言,特别是Perl和Visual Basic,或者算上Tcl和Python,都做为多用途的语言而被广泛使用。成功的脚本语言一个长处在于它们很容易调用操作系统功能/服务。更高一层次来说,做为一种多用途的脚本语言,它们必须稳健到你可以使用它们编写复杂应用程序的程度。脚本语言可以用来编写原型,建模和做测试,但当脚本语言运行足够迅速和稳健的时候,原型就直接成为了应用程序。

那么,为什么不使用那些多用途的程序语言如C,C++或Java替代脚本语言呢?答案很简单:成本。开发时间比硬件和内存更昂贵。脚本语言容易学习并且使用起来很简单。

正如Ousterhout指出的,脚本语言通常没有什么数据类型概念。脚本不区分整数和浮点数,变量是没有类型的。这是脚本语言善于快速开发的原因之一。大概念是“不着急处理细节”。因为脚本语言擅长调用系统工具来做难做的事情(如拷贝文件和建立目录或文件夹),尚未实现的细节就可以用编译语言易于写成的小程序来处理。

对于编译语言来说数据类型有什么用呢?它使得内存管理更加容易,但对于程序员来说更难了。想想看:当FORTRAN流行的时候一个程序员赚多少钱一小时?内存值多少钱?而现在呢?时代变了。内存便宜,程序员很贵!

系统语言必须把任何东西都写出来,这使得编译复杂数据结构更容易,但是程序员更难编写。脚本语言尽量多地自己做出假定,尽量少地要求明确指定。这让脚本语言更容易学习,写起来也更快。其代价是编写复杂的数据结构和算法时很困难。但是Perl在复杂数据结构和算法方面都做得很好,同时也没有牺牲写简单程序时的简便。

解释语言与编译语言
绝大多数脚本语言都是解释型语言,感觉上好像不适合大型程序项目。这种说法是应该要纠正的。
确实,除某些有硬件特异性的语言之外,大部分情况下解释型语言程序都比编译语言要慢。解释型语言的优势在于,它写的程序在解释器所能安装的任何系统上都可以运行。解释器负责处理那些系统特异性的细节问题,而不是应用程序本身。(当然也有例外,比如这个应用程序可能调用了某个不可移殖的系统特性)

操作系统命令解释器如MS-DOS的command.com以及早期版本的UNIX C shell是解释器运行的很好例子:脚本里的命令一条一条都喂到解释器里去。对于效率影响最大的就是循环:循环中的每一条命令在每次运行的时候都重新解释。有些人认为所有的解释型语言都这么...缓慢、低效、一次一行。不过事实并不是这样。

实际上有一些中间型语言,运行的时候被编译成某些中间码,然后被解释器装载运行。Java就是一个例子,这让它成为了一种很有价值的跨平台语言。所有在不同硬件上的java解释器都能交流并共享数据和进程资源。对于嵌入系统来说这是非常棒的,因为嵌入系统实际上就是一种特殊目的的硬件。然而Java并不是一种脚本语言。它需要数据声明,而且是预先编译的。(除非你把实时编译也算在内—虽然它实际上只是生成代码)

Perl也是一种中间型语言。Perl代码根据需要一块一块地进行编译,所不同的是编译好的可执行部分被存在内存中而不是写成文件。任何一块Perl代码块只被编译一次。Perl在设计上的优势使得所有这些优化都很值得。Perl保留了解释语言的可移殖性,又有了接近编译语言的执行速度。已经快经历了十年历史的Perl,拥有数十万的开发者,现在又将经历它的五次脱胎换骨,它运行得既简洁又迅速。虽然在启动的时候可能会有一些延迟,因为需要一些时间编译代码,但是相对于代码执行的时间来说这很短暂。而且,像”fast CGI”这样的技术可以将反复执行的脚本镜像存在保留在内存中来避免启动延迟,除非这个脚本是第一次运行。

不管怎么说,Perl 5.005将有一个由牛津大学的Malcolm Beattie所写的编译器。这个编译器将消除编译过程中的启动延迟,并加入一些小的加速技术。它也消除了某些编写商业应用程序的程序员对脚本语言的生理恐惧。(使用编译器之后,其他人将无法再看到源代码)

信息处理与数据处理
互联网只是我们与计算机交流形式的许多巨大变化中的一个。这个改变在我们对工业的称乎中就能看得出来。过去它被称为“数据处理”,比如说:“如果我想中午拿到数据处理的结果的话,就得早上四点中把东西递交到数据中心去。”现在我们将它称为“信息服务”,比如“信息服务部的头正和我们的计划委员会一起工作”。兴趣和重点现在放在了“信息”而不是“数据

补充:综合编程 , 安全编程 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,