admin 管理员组文章数量: 1086019
2024年4月24日发(作者:z型钢批发)
何谓动态?
对于动态语言,网上比较流行的说法是:程序在运行时可以改变其结构,新的函数可以
被引进,已有的函数可以被删除,即程序在运行时可以发生结构上的变化。我们可以理解成:
直接被解释执行的语言称为动态语言。而需要编译环境将程序转换为其它的中间编码再执行
的语言称为静态语言。
事实上,动态语言的根本是在语言设计之初的编译策略选择,即:编译器能对一段程序
作出哪些判定。如果一个语言使用的编译策略支持编译器静态决定某个问题,我们认为这个
语言使用了一个静态(static)策略,或这说这个问题可以在编译时刻(compile time)决定。
另一方面,一个只允许在运行程序的时刻做出决定的策略成为动态策略(dynamic policy),
或这被认为需要在运行时刻(run time)作出决定,(以上摘自《编译原理 2ed》)。一门语言
动态与否的重点是在编译和运行,这在应用场景方面所产生的不同与程序员的工作密切相
关:你能做什么,在何时做。
动态语言的历史
世界上第一门动态语言(也是世界上第二门编程语言)是Lisp,其后很多语言都从Lisp
身上继承了必要的优势基因(比如Smaltalk、Python、Ruby等),动态性就是其中之一。上
世纪七十年代,Smalltalk语言出现,集合了面向对象和动态性获得当时开发界的认可;1986
年Perl出现,高效的开发效率和极少的语法限制获得了大量程序员的欢迎,也使更多人领
教了动态语言的魅力。
目前,主要的动态编程语言有:PHP、Visual Basic、Ruby、Python、JavaScript、Groovy
和Perl等,从动态与静态语言趋势图可以看出,动态语言已经逐渐转变成主流的编程语言,
它们是Web应用开发的主力,并以一种比较轻松的姿态渐渐走进软件开发的其他角落。动
态语言近年的高速发展与其自身特点和IT界的高速发展有很大关系。
因何而动?
与静态语言不同,动态语言对类型的要求并不十分严格,代码简洁自由,一般的动态语
言多为动态类型和弱类型,自身即支持泛型编程(这里的类型归纳并不绝对,一般认为Python
属强类型语言,Groovy支持静态类型)。动态语言秉承的一个理念是:优化人的时间而不是
机器的时间。因此动态语言会为提高程序员的生产力方面不遗余力,但对程序性能方面的影
响也不可忽视。
51CTO一直提倡从应用场景和程序员生产力两个方面来评价一门语言或技术。站在程
序员的角度,使用动态语言进行程序开发要比静态编译型语言更加轻松自如,没有过多的语
法和编译限制。我们经常可以听到从其他语言转向Ruby或Python的人提到“编程的乐趣”,
这种乐趣是源自动态语言更接近人的思维(而不是机器思维),更符合项目需求流程而不是
项目实现流程;同样一个功能,动态语言可以用更小的代码量来实现。动态语言对程序员生
产力的提高,是其大行其道的主要原因。
在性能方面,动态语言没有太大的优势,但动态语言的理念是:优化人的时间而不是机
器的时间。提高开发者的生产力,宁肯牺牲部分的程序性能或者购买更高配置的硬件。随着
IT业的不断发展和摩尔定律的作用,硬件相对于人件一直在贬值,这个理念便有了合理的
现实基础。从动态与静态语言趋势图可以看出,动态语言的抬升自2002年开始,2004年达到
高潮,这一区间也正是计算机硬件价格大幅降低、互联网高速发展的时段。动态语言的流行,
事实上是动态语言的相关特性迎合了互联网和IT界的发展,提高了程序员的生产力;虽然
具有种种性能方面的不足,但很明显,动态语言的优点战胜了这些缺点。
版权声明:本文标题:何为动态语言 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713963074a659536.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论