快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

半静态语言集合了静态语言和动态语言的优点,更适合企业级和大型互联网开发,例如:电子商务,ERP,金融,保险等。

4.2 技术原理

4.2.1 范例

为了实现目标,需要在动态类型语言基础上,引入变量声明技术。因此本质上,半静态语言也是一种声明式语言(Declarative Language), 这一点与静态类型语言一样。

以Velocity模板语言为例:

当前Velocity Template编程代码范例如下:

[Code 1] showBuyProducts.vm

<HTML>> Hello $customer.Name <table>> #foreach( $product in $buyingProducts)    Buy: $product.Name, Price: $product.Price, #end </table>>

该模板执行后,HTML页面上将用 $customer.Name 显示“客户名称”,循环显示该客户购买的每个产品的名称和价格。在Velocity中,运行时通过Velocity Context传递变量$customer和 $buyingProducts,而开发时这两个变量是未定型的(Untyped,或者说都是Object类型)。

为了实现静态化开发,引入变量声明,在模板顶部对变量$customer,$buyingProducts进行显式类型声明。变量声明指令为“##contentrdquo;。

格式为:

##$ <Type> <var1[,var2[,[…]]]>

带有变量声明的半静态模板代码为:

[Code 2] showBuyProducts_static.vm

##$ com.abc.crm.Customer customer ##$ com.abc.saling.Product product ##$ List<Product> buyingProducts <HTML> Hello $customer.Name <table> #foreach( $product in $buyingProducts )    Buy: $product.Name, Price: $product.Price, #end </table>

上述代码中,指定了变量customer的类型为 com.abc.crm.Customer,变量buyingProducts 的类型为Product泛型集合。由于 "##"是Velocity的注释指令,因此 "##contentquot; 在Velocity Engine解析(Parse)和渲染(Render)时不会与现有语法冲突,Velocity引擎能正常执行,从而保证了兼容性。

半静态语言–原理和价值分析(3)

时间:2010-12-30 infoq 何坤

4.2.2 动态语言一阶段模型

在动态类型语言中,只有一个运行时(Run Time)阶段,运行阶段由解释器(Intepreter)来对源代码进行解析(Parsing)、执行(Evaluation)产生执行结果。过程如下:

由于动态语言无类型的特点,在解析步骤中产生的抽象语法树(Abstract Syntax Tree,AST)所有变量被存储为统一的类型,例如JavaScript,Velocity中变量都作为 Object 类型。在执行步骤,一般由类型推断系统(Type Inference System)负责根据变量的实际值动态判断变量的类型,并判断函数、方法或属性调用是否正确,由解释器进行执行或计算,从而产生结果。

4.2.3 半静态语言两阶段模型

而半静态语言,分开发时(Develop Time)和运行时(Run Time)两个阶段,两个阶段互不干扰。

开发时阶段。

开发时进行类型检查。一个“编译器”,更严格说是类型化解析器(Typing Parser)负责对源代码进行解析和类型检查,然后输出检查结果。“变量声明”是类型检查的必要条件。检查结果包含类型检查失败的错误信息和警告信息,类似于 Java编译时的错误信息。

与静态类型语言不同,此编译器不输出机器代码或字节码,只输出类型检查错误信息。

运行时阶段。

此阶段中,源代码仍由解释器以解释方式执行,同动态语言的解释执行过程。

半静态语言的两阶段模型如下图所示:

需要指出的是,运行时阶段仍采用无类型解析器(Untyping Parser), 是一个类型推断系统。而开发时采用的是一个新的类型化解析器(Typing Parser), 是一个类型检查系统(Type Checking System)。

半静态语言–原理和价值分析(4)

时间:2

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