快速业务通道

冒号和他的学生们(连载16)——动态语言 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

冒号和他的学生们(连载16)——动态语言

时间:2011-07-01 BlogJava 郑晖

16.动态语言

Freedom is not free               ——Kelly Strong

叹号急不可耐地问:“现在可以谈动态语言了吧?”

冒号感言:“曾几何时,动态语言还只是陪太子读书的角色,那时候它们的名字是‘脚本语言’。近来却迅速崛起,俨然有与静态语言分庭抗礼之势。”

问号忍不住问道:“动态语言与脚本语言是一回事吗?”

“相比动态语言定义上的模糊,脚本语言的概念还是比较明确的。”冒号回避直接给出答案,“脚本(script)的提法,是为了区别于一般的程序(program)。Perl的发明者Larry Wall不愧为语言学家,对此有一个精彩的说法:‘A script is what you give the actors, a program is what you give the audience’。直译为:脚本是给演员看的,节目是给观众看的。此言妙在一语双关——program兼有‘节目’和‘程序’的意思。”

句号领会:“这里的演员指的是程序员,观众指的是用户。换言之,程序是为终端用户服务的,而脚本是为程序员服务的。”

“正解!”冒号肯定道,“脚本最常见的形式是壳脚本(shell script),在非Unix类的操作系统中也称为批处理文件(batch file)。”

“批处理文件倒是很熟悉,壳脚本听起来就怪怪的。”逗号嘀咕着。

“那是因为你在Windows的世界里长大,听不惯Unix的方言。”冒号一语道破缘由,“操作系统的内核称为核(kernel),出于安全考虑不便直接与用户交互,因此裹上一层壳(shell),即人们常说的命令行解释器(command line interpreter)。壳脚本是在壳上运行的脚本,扩展了命令行下可执行的命令。它最初主要是内建(built-in)命令的组合,用于系统程序的调度,是系统管理员的必备武器。其后,壳脚本也发展到用于应用程序的调度、连接、调试等,成为粘合(glue)语言。”

逗号不禁有些疑问:“难道一般的程序语言如C之类的不能作此用吗?”

引号回应道:“这些语言通常需要‘编写-编译-链接-运行’的过程,十分繁琐。脚本语言编写后即可运行,快捷方便得多。”

冒号点点头:“不错,既然脚本主要用于整合其他程序,本身并不占用太多的资源,同时逻辑也不太复杂,因此脚本语言注重简洁、实用,语法要求不那么严格,性能上的要求也不高。除壳脚本外,还有一些专用于文本处理(Text Processing)的语言或工具如AWK、sed和grep等,多用于读写配置文件和日志文件、过滤处理各种程序的输入和输出,对于整合各种程序也非常实用。随着对脚本语言需求的增长,其局限性日益突出,Perl之类的高级脚本语言便应运而生了。Perl在壳脚本、AWK、sed的基础上,融合了命令式的C与函数式的Lisp的特征,渐渐成为最流行的脚本语言之一。”

问号注意到:“Javascript是浏览器端的脚本,来路似乎有些不同。”

冒号解释道:“除了命令行程序外,脚本语言在其他的应用程序中也身影频现,如图形界面应用、多媒体应用、网络应用等。尤其是网络应用,成为滋生和繁荣脚本语言最肥沃的土壤。例如:Perl非常广泛地用于网络服务器端的CGI编程;PHP更是专为动态网页而设计的语言;Ruby虽与Java同岁,但真正开始风行得益于网络应用框架Ruby on Rails的成功;至于Javascript,长期被边缘化为网页设计人员的语言,是web2.0的新宠AJAX真正将其带入程序员的视线。”

逗号有些好奇:“什么时候脚本语言变成了动态语言呢?”

“不是所有的脚本语言都

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号