科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件动态语言面面观

动态语言面面观

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

对于动态语言,每个人心中都有自己的排序,各自喜好不同。但是对于动态语言越来越受重视是很多人的共识。众多的动态语言当中,谁将成为主流语言,众说纷芸,各持已见。那么,您同意作者的观点吗?

作者:刘睿 来源:软件世界 2007年9月13日

关键字: 动态 语言

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共19页)

可以简单地理解为直接被解释执行的语言称为动态语言。而需要编译环境将程序转换为其它的编码再执行的语言称为静态语言。

当前静态语言有:Java、C/C++、C#、DELPHI、VB等。

动态语言有:ASP、PHP、Perl、Python,Smalltalk、Ruby等。

对于动态语言,每个人心中都有自己的排序,各自喜好不同。但是对于动态语言越来越受重视是很多人的共识。众多的动态语言当中,谁将成为主流语言,众说纷芸,各持已见。而我最看好的动态语言将从下面三种语言中产生。为什么我会锁定在三种语言上呢?除了语言自身的优势外,另外一点最主要的原因就是其被后的力量。任何一种产品想成为主流都离不开强大的财团支持,开发语言也不例外。

PHP动态语言之精典

对于PHP语言,笔者的个人感情较浓,从第一次接触它就被其简单、灵活、功能之强大所征服。更快的处理效率,迅速的部署及PHP的跨平台的特性让其应用更为广泛,相信具有跨平台特性的动态语言中没有任何一个语言能及PHP语言的普及率高。很多大的网站使用着PHP,历史证明,它是一个经得起考验的动态语言。

另外,PHP的开源环境也相当出色。世界各地数以万计的程序员,采用PHP编写程序。你可以从PHP相关的网站、社区等找到各类优秀的开源程序代码。

最近IBM、Oracle正尝试把PHP应用到SOA之中,再一次证明了PHP的优秀。虽然PHP存在着维护困难,复用性低等问题,但这些并不能影响其最终成为主流的动态语言。前不久IBM还基于Apache Geronimo项目推出了为WebSphere Application Server Community Edition开发的PHP集成工具集。

该工具集能让开发人员在SOA中开发服务时使用PHP和Java。zend也推出了PHP的开发框架,这些技术将帮助软件公司创建企业级PHP应用。PHP会变得更加广泛,从当前网站技术上的胜行,到企业级Web应用,PHP必将成为最有竞争力的动态语言。 

在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程序员学习起来较为容易,上手较快。

由于J2EE太过于复杂,面对当前的行业需要,必将会在Java语言的基础上发展出一种新的基于Java的动态语言,使Web开发过程变得更快,更简洁,但又不失Java自身的特点。使Java在Web开发能力上达到前所未有的提升。由于Sun及IBM公司的推动,反微软企业的支持,还有企业的认可,基于Java语言所产生的动态语言也必将会成为动态语言家族中有力的竞争对手。

.Net的动态语言

微软的动态语言中用的人最多的应该是Asp,现在发展到Asp.Net。看微软在开发语言方面的发展,他们一定不会放弃这块肥肉,并会加大投入力度,与其它的动态语言提供商火拼到底。

前不久微软CLR开发组的负责人Jim Hugunin表示,微软将加强对CLR中的动态语言的支持。并将会发布成熟的软件模式,细化到代码中,放在库中供开发者调用,以帮助他们通过.Net Framework上的动态语言开发自己的应用程序。种种迹像表明微软在动态语言方面没闲着,正紧锣密鼓实施着一系列动作。

我把微软的动态语言列为最可能成为主流动态语言的原因是因为其Windows的平台无所不在。这是无法否认的。微软势必投入重手,增强竞争能力。以微软的人力、财力,想不分给微软一块蛋糕是不可能的。有钱就是好,投入大笔的资金,什么都可以做。

有人一定会反问我,为什么把其它的动态语言抛开不谈。Perl语言过时了,虽然还有一些公司在使用,但早已不是主流。Python、Ruby最近几年开始火起来的动态语言,我并不看好它们,虽然它们是很优秀的语言,但是优秀并不带表会成为主流。

正如操作系统一样,大家都有个共识就是,Unix、Linux很优秀,但是并不是主流系统。当然会有人反驳说应用场景不同,不能一概而论。那么开发语言也一样,我说的是大众主流,大众主流就是指最广泛被采用的。

有人说,未来动态语言会取代静态语言,将一统天下,我并不这样认为,相信应该是动态语言与静态语言互相辅助,各在其擅长的方面发挥作用。比如多线程,目前的动态语言支持都不如静态语言的好,很多还不支持。

对于语言的选择,一般性的应用,完全可以采用动态语言完成,也可以采用静态语言,这要看撑握语言的人或是需求而决定。更为灵活,更容易扩展及复用的方式是采用“动态语言+静态语言”的方式。

前台功能采用动态语言实现,后台服务采用静态语言实现,充分利用各自的优势。当前,在Java的Web应用开发过程中,采用模板技术就是这类应用模式的一个雏型。Java的模板技术很多都支持简单的编程,如逻辑控制等。当然现在还不能称其为一种语言,但是相信,这一切随着动态语言的发展必将成为一种新的语言。

从程序员的角度来说,使用动态语言编程要比使用传统的编译语言,尤其是编译型面向对象语言轻松自如得多,从而也有趣得多。没有那么多条条框框,没有那么多城府沟壑。

比如C++/Java/C#都极力反对用异常作为正常情况下程序跳转的工具,所谓“只在异常情况下使用异常”,说来容易,做起来常大费周折。而Python/Ruby都纵容甚至鼓励你使用异常作为正常程序流控制手段。比如Python中for循环的终止,在内部就是通过引发STopIteration异常实现的。

能随意用异常作为流程控制手段,真是能省下不少脑细胞。比如我们平常津津乐道的不少设计模式,在动态语言里根本就是多此一举,一切来得直截了当,根本不用如此拐弯抹角。

再比如Ruby可以在一个Class被定义并且在系统中已经被应用的情况下,在系统运行时随意修改这个类的定义,Python中只要略施小计也可以做到,这在传统OOP语言中根本不可能。

而Ruby在其招牌项目Rails中表现出来的dEClarative language的能力,也是令人惊羡的。使用这些动态语言,要先解放思想,之后就会有挣脱束缚,放开手脚的感觉。对于程序员来说,这当然是很惬意的。

动态语言必将大行其道,但是不是独行,而将与静态语言相辅相成。

备注:什么是脚本语言?

脚本(从编程的角度)就是为了简便、直观、清楚和准确地去完成某件事情。脚本是如此的神奇以至于任何熟悉编程知识的人都可以在见到这样一大段代码的同时,不用丝毫犹豫和思考就可以理解程序代码的意义。

脚本支持意味着极高抽象级别的语言结构或者说是特定领域的语言。

脚本语言通常是通用编程语言,具有对一个或多个脚本支持的能力。他们通常是可以编辑和运行,并且,作为可选项,它们提供编译工具,目的在于提高性能、安全性等。这些都是典型的应用,以便将应用程序和组件连接起来从而达到更加简便、快速和高效地完成任务的目的。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章