冒号课堂§5.3:动态语言 - 编程入门网
以Perl为代表的高级脚本语言便应运而生了。Perl在壳脚本、AWK、sed的基础上,融合了命令式的C与函数式的Lisp的特征,渐渐成为最流行的脚本语言之一。”
问号注意到:“JavaScript是浏览器端的脚本,来路似乎有些不同。” 冒号解释道:“除了命令行程序外,脚本语言在其他的应用程序中也身影频现,如图形界面应用、多媒体应用、网络应用等。尤其是网络应用,成为滋生和繁荣脚本语言最肥沃的土壤。例如:Perl非常广泛地用于网络服务器端的CGI编程;PHP更是专为动态网页而设计的语言;Ruby虽与Java同岁,但真正开始风行得益于网络应用框架Ruby on Rails的成功;至于JavaScript,长期被边缘化为网页设计人员的语言,是web2.0的新宠AJAX真正将其带入程序员的视线。” 逗号有些好奇:“什么时候脚本语言变成了动态语言呢?” “尽管动态语言并无确切的定义,但不是所有的脚本语言都能称作动态语言的——比如Bash之类的壳脚本语言(shell script language);另一方面,也不是所有的动态语言天生就是为脚本服务的——比如Lisp[1]。不妨这么理解,脚本语言以语言的实际用途为标志,动态语言以语言的语法特征为标志。”冒号回答,“单从用途上看,一个脚本语言如果不再局限于命令行工具和粘合工具,从专用语言发展为通用语言,并能胜任复杂的应用开发,或许更有资格归为动态语言。” 句号发现:“动态语言似乎对字符处理都特别擅长。” 冒号道:“脚本语言与一般程序一个不同之处是,它一般是面向字符而非数值的,因为字符是最通用的接口,正好发挥其粘合作用,而数值运算对性能要求较高,多由核心程序来完成。动态语言继承了这个特点,并且除了正则表达式(regular expression)外,为字符串、数组、列表、集合、映射等常用结构提供了丰富简洁的运算,远比静态语言依赖于库(library)的方便自然得多。” 叹号问:“我们清楚了脚本语言中‘脚本’的来历,那动态语言中‘动态’又体现在何处呢?” “问得好!”冒号闻言,正中下怀,“再从用法上看,动态语言能在运行中增加或改变数据结构、函数定义、对象行为或指令流程等。如果说动态类型语言的动态体现在类型上,动态语言的动态则体现在结构和功能上。相比而言,静态语言虽然也可能实现同样的效果,但既不方便也不自然[2]。另外不容忽视的一点是,动态语言大多是开源的,其本身的发展也更具动态性。” 引号非常注重理论:“动态语言的语法特征有那些?” “动态语言秉承的一个理念是:优化人的时间而不是机器的时间。为提高人的生产率,宁肯牺牲部分的程序性能或者购买更高配置的硬件。由于硬件相对于人件一直在贬值,该理念便有了合理的现实基础。”冒号讲述着,“从语法上看,动态语言为了更好地粘合来自不同系统、不同语言的程序,对类型的要求一般不如静态语言那么严格,代码更加简洁自由,故而多为动态类型的和弱类型的,天然支持泛型式编程。当然这不是绝对的,比如Groovy也支持静态类型,Scala完全是静态类型的,Python一般认为是强类型的。大多数动态语言支持eval函数,能动态执行任意字符串形式的代码,并有丰富的反射(reflection)机制,天然支持元编程。动态语言很多还支持包括高阶函数(high-order function)和闭包(closure)等在内的函数式编程。此外,大多动态语言也支持对象式编程,如Python、Ruby、Perl 5、PHP 3等。” 句号补充道:“许多动态语言还支持过程式编程和并发式编程,简直把主要的编程范式一网打尽了!” “其实Python、Ruby和Groovy等还可以进行 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |