快速业务通道

半静态语言–原理和价值分析 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
译器会产生相应的编译错误。以ducking type 为例(Ruby支持,而Velocity等Java系列脚本不支持), 如果尝试访问一个不存在的方法,则会产生下面的错误。

Error: line:12, column:5, method ''quack'' not found for $dog.

而在Ruby中,只要 dog 存在 quack 方法,代码运行是正确的。

4.5 半静态语言组成模型和实现方式

半静态语言本质上是动态语言思想和静态语言思想的结合的产物。一种基本的半静态语言实现,核心功能是在运行前进行类型检查和语义检查。其组件集合 SS包括:

一种静态类型语言S,S以编译方式运行;

一种以S语言为基础的动态类型语言 D。D以解释方式由P执行,解释器 P 由S 编写;

在语言D的语法集合上扩展变量声明语法,新语法集合名为 SD ;

用语言S对解释器P进行扩展,实现 SD 的类型编译器C;

开发时,遵循SD语法集合的代码由 C 进行类型检查;

运行时,遵循SD语法集合的代码由 P 进行解释执行。

因此,新的半静态语言SS是基本组成是:新语法集合SD和类型编译器C.

SS = SD + C

举例:

Java 是一种静态类型语言,运行前进行编译和类型检查;

Velocity是一种基于Java的动态模板语言,通过 Velocity Engine以解释方式运行;

基于Velocity实现半静态语言的方式为:为Velocity基本语法增加变量声明指令(语句),基于Velocity 解释器 实现类型编译器 ,负责在开发时对模板进行类型检查。

实践中,Java体系的动态类型语言一般与Java语言天生的结合使用,应用广泛。以它们为基础,很容易通过扩展方式实现类型编译器,进而实现半静态语言。例如Freemarker,Groovy,JRuby,Bean Shell等。其他动态类型语言也可以基于此原理设计半静态语言,如:Python,Ruby。

IDE敏捷开发(Agile Development in IDE)

对于Velocity,Freemarker这类动态类型语言,它们基于Java等强类型语言,在模板内能直接操作传入的Java对象。由于 Java等语言有反射(Reflection)机制。因而,除了静态类型检查的基本功能,可以在类型检查和反射技术基础上,实现一系列IDE敏捷开发功能。包括:

代码提示:编辑器内的Java对象的属性,方法代码提示;

参数提示:编辑器内的Java对象的方法参数提示;

全量构建和增量构建:Java类修改对相关Velocity模板的增量检查;

代码重构:修改Java属性或方法名称,自动批量修改相关模板中所有对应类型的JavaBean属性或方法名称。

其中3),4) 功能对于大型系统的维护和重构价值尤为明显。以上这些敏捷开发功能可独立实现或结合集成开发环境(IDE)如Eclipse插件来实现。

结论

通过以上分析可见,半静态化语言结合了静态语言和动态语言的优点,能很好的解决动态语言编程的开发质量和开发效率问题。半静态化语言保留了动态语言的灵活性优点,同时达到了静态语言在开发时强类型检查优势,能有效提升程序健壮性,减低测试复杂性和测试成本。通过与IDE结合,实现代码提示,代码重构等敏捷开发功能,有效提升动态语言的开发效率。在企业级应用和互联网应用开发中有着良好的应用价值。

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