可以简单的理解为直接被解释执行的语言称为动态语言。而需要编译环境将程序转换为其它的编码再执行的语言称为静态语言。
当前静态语言有:Java、C/C++、C#、Delphi、VB等。
动态语言有:ASP、PHP、CGI、lisp、Perl、python,Smalltalk、Ruby等。
对于动态语言,每个人心中都有自己的排序,各自喜好不同。但是对于动态语言越来越受重视是很多人的共识。众多的动态语言当中,谁将成为主流语言,众说纷芸,各持已见。而我最看好的动态语言将从下面三种语言中产生。为什么我会锁定在三种语言上呢?除了语言自身的优势外,另外一点最主要的原因就是其被后的力量。任何一种产品想成为主流都离不开强大的财团支持,开发语言也不例外。
1、php 动态语言之精典
对于php语言,笔者的个人感情较浓,从第一次接触它就被其简单、灵活、功能之强大所征服。更快的处理效率,迅速的部署及PHP的跨平台的特性让其应用更为广泛,相信俱有跨平台特性的动态语言中没有任何一个语言能及php语言的普及率高。很多大的网站使用着PHP,历史证明,它是一个经得起考验的动态语言。另外,php的开源环境也相当出色。世界各地数以万计的程序员,采用PHP编写程序。你可以从PHP相关的网站、社区等找到各类优秀的开源程序代码。
最近IBM、Oracle 正尝试把PHP 应用到SOA 之中,再一次证明了PHP的优秀。虽然PHP存在着维护困难,复用性低等问题,但这些并不能影响其最终成为主流的动态语言。前不久IBM还基于Apache Geronimo项目推出了为it WebSphere Application Server Community Edition开发的PHP集成工具集。该工具集能让开发人员在SOA中开发服务时使用PHP和Java。zend也推出了php的开发框架,这些技术将帮助软件公司创建企业级PHP应用。 PHP会变得更加广泛,从当前网站技术上的胜行,到企业级WEB应用,php必将成为最有竞争力的动态语言。
2、在java的基础上产生新的语言
java语言的发展是有目共睹的,早已成为时下最为主流的开发语言。在java环境下的应用层出不穷,特别是JDK1.5发布之后,java在性能上的提升已今非惜比。对于动态语言的支持早就在日程当中。
在Lang.net 2006 会议上, Sun公司宣布将积极参与让JVM支持动态语言的开发项目.将会增加一个新的JVM 指令——invokedynamic,用来设计对动态语言对象的支持。然而主仅仅是一个开始。我想java平台将会全面支持动态语言,俱备运行时更改类结构或相关配置。另外很类技术人员都知道Sun已经整体收购了JRuby项目,sun公司对于动态语言的发展是有备而战的。目前java平台下的动态语言有Groovy、nice、BeanShell、Jython、JRuby、Rhino(JavaScript)、Jacl(TCL)、Bistro(SmallTalk)、Kawa(Lisp/Schema),真是越来越多了。java下这么多的动态语言建议选择Groovy,感觉血统较为正宗,兼容Java的语法,java程序员学习起来较为容易,上手较快。
由于2EE太过于复杂,面对当前的行业需要,必将会在java语言的基础上发展出一种新的基于java的动态语言,使WEB开发过程变得更快,更简洁,但又不失java自身的特点。使Java在WEB开发能力上达到前所未有的提升。由于sun及IBM公司的推动,反微软企业的支持,还有企业的认可,基于java语言所产生的动态语言也必将会成为动态语言家族中有力的竞争对手。
3、.net的动态语言
微软的动态语言用的人最多的应该是asp,现在发展到ASP.NET。看微软在开发语言方面的发展,他们一定不会放弃这块肥肉,并会加大投入力度,与其它的动态语言提供商火拼到底。只要是有利可图的地方,没有微软不想伸脚的,更何况这是一块大肥肉呢。
前不久微软CLR开发组的负责人Jim Hugunin表示,微软将加强对CLR中的动态语言的支持。并将会发布成熟的软件模式,细化到代码中,放在库中供开发者调用,以帮助他们通过.Net Framework上的动态语言开发自己的应用程序。种种迹像表明微软在动态语言方面没闲着,正紧锣密鼓实施着一系例动作。
我把微软的动态语言列为最可能成为主流动态语言的原因是因为其Windows的平台无所不在。这是无法否认的。微软势比处投入重手,增强竞争能力。以微软的人力、财力,想不分给微软一块蛋糕是不可能的。有钱就是好,投入大笔的资金,什么都可以做。
有人一定会反问我,为什么把其它的动态语言抛开不谈。Perl语言过时了,虽然还有一些公司在使用,但早已不是主流。python、Ruby最近几年开始火起来的动态语言,我并不看好它们,虽然它们是很优秀的语言,但是优秀并不帶表会成为主流。正如操作系统一样,大家都有个共识就是,unix、Linux很优秀,但是并不是主流系统。当然会有人反驳说应用场景不同,不能一概而论。那么开发语言也一样,我说的是大众主流,大众主流就是指最广泛的被采用。
有人说,未来动态语言会取代静态语言,将一统天下,我并不这样认为,相信应该是动态语言与静态语言互相辅助,各在其擅长的方面发挥作用。比如多线程,目前的动态语言支持都不如静态语言的好,很多还不支持。
对于语言的选择,一般性的应用,完全可以采用动态语言完成,也可以采用静态语言,这要看撑握语言的人或是需求而决定。更为灵活,更容易扩展及复用的方式是采用动态语言+静态语言的方式。前台功能采用动态语言实现,后台服务采用静态语言实现,充分利用各自的优势。当前在java的WEB应用开发过程中,采用模板技术就是这类应用模式的一个雏型。java的模板技术很多都支持简单的编程,如逻辑控制等。当然现在还不能称其为一种语言,但是相信,这一切随着动态语言的发展并将成为一种新的语言。
动态语言必将大行其道,但是不是独行,而将与静态语言相辅相成。