快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
能称作动态语言的,尽管后者并无确切的定义。”冒号回答,“从用途上看,一个脚本语言如果不再局限于命令行工具和粘合工具,从专用语言发展为通用语言,并能胜任复杂的应用开发,或许更有资格归为动态语言。”

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

时间:2011-07-01 BlogJava 郑晖

句号发现:“动态语言似乎对字符处理都特别擅长。”

冒号道:“脚本语言与一般程序一个不同之处是,它一般是面向字符而非数值的,因为字符是最通用的接口,正好发挥其粘合作用,而数值运算对性能要求较高,多由核心程序来完成。动态语言继承了这个特点,并且除了正则表达式(Regular Expression)外,为字符串、数组、映射等常用结构提供了丰富简洁的运算,远比静态语言依赖于库(library)的方便得多。”

叹号问:“我们清楚了脚本语言中‘脚本’的来历,那动态语言中‘动态’又体现在何处呢?”

“问得好!”冒号闻言,正中下怀,“从用法上看,动态语言能在运行中增加或改变数据结构、函数定义、对象行为或指令流程等,具有典型的动态特征。相比而言,静态语言虽然也能实现同样的效果,但既不方便也不自然。此外不容忽视的一点是,动态语言大多是开源的,其本身的发展也更具动态性。”

引号非常注重理论:“动态语言的语法特征有那些?”

“动态语言秉承的一个理念是:优化人的时间而不是机器的时间,因此为提高人的生产率而不惜牺牲部分的程序性能。”冒号讲述着,“从语法上看,动态语言对类型的要求一般不如静态语言那么严格,代码更加简洁自由,故而多为动态类型的和弱类型的,天然支持泛型式编程。当然这不是绝对的,比如Groovy也支持静态类型,Python一般认为是强类型的。大多数动态语言支持eval函数,能动态执行任意字符串形式的代码,天然支持元编程。动态语言很多还支持包括高阶函数(high-order function)和闭包(closure)等在内的函数式编程。此外,大多动态语言也支持对象式编程,如Python、Ruby、Perl 5、PHP 3等。”

句号补充道:“许多动态语言还支持过程式编程和并发式编程,简直把主要的编程范式一网打尽了!”

“其实Python、Ruby和Groovy等还可以进行切面式编程。”冒号进一步指出,“而逻辑式编程语言的代表Prolog,同样有动态语言的特征。”

引号高兴地看到:“前面讲的八大范式无一漏网啊!”

叹号较为感性:“静态语言给人的感觉是沉稳持重,而动态语言则活泼轻快。如果同时用静态语言和动态语言编程,岂不培养出双重人格?”

“程序员本就是双重人格的。”冒号淡淡地说,“你总结得没错,两类语言的风格的确大相异趣:待静态语言披盔戴甲、备马抬枪之际,动态语言已衣袂飘飘,长剑出手了。当然如果是应付强敌的长期作战,静态语言还是有优势的。”

引号听声辨音:“这意味着动态语言不适用大型应用开发吗?“

“这么说未免有些武断。”冒号并不同意,“诚然,动态语言的语法比较宽松,相对容易出错。但也有人辩称,动态语言的代码量少于相应的静态语言,bug应该更少。有人认为动态语言调试不如静态语言方便,有人却说随着IDE的日益强大,出错几率和找错成本也在减少。谈到运行效率,动态语言虽然多为解释型语言(Interpreted Language),但许多也提供了与Java类似的字节码编译(bytecode compilation)甚至JIT编译(Just-in-time compilation)。动态语言在某方面甚至还更胜一筹:譬如一个类的接口如果发生变动,在静态语言中所有该类的子类必须重新编译、连接,这在大

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号