半静态语言–原理和价值分析 - 编程入门网
半静态语言集合了静态语言和动态语言的优点,更适合企业级和大型互联网开发,例如:电子商务,ERP,金融,保险等。 4.2 技术原理 4.2.1 范例 为了实现目标,需要在动态类型语言基础上,引入变量声明技术。因此本质上,半静态语言也是一种声明式语言(Declarative Language), 这一点与静态类型语言一样。 以Velocity模板语言为例: 当前Velocity Template编程代码范例如下: [Code 1] showBuyProducts.vm
该模板执行后,HTML页面上将用 $customer.Name 显示“客户名称”,循环显示该客户购买的每个产品的名称和价格。在Velocity中,运行时通过Velocity Context传递变量$customer和 $buyingProducts,而开发时这两个变量是未定型的(Untyped,或者说都是Object类型)。 为了实现静态化开发,引入变量声明,在模板顶部对变量$customer,$buyingProducts进行显式类型声明。变量声明指令为“##contentrdquo;。 格式为:
带有变量声明的半静态模板代码为: [Code 2] showBuyProducts_static.vm
上述代码中,指定了变量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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |