半静态语言–原理和价值分析 - 编程入门网
译器会产生相应的编译错误。以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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |