Hello Velocity之后 :: 梦想风暴

来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=463423 存档链接: https://web.archive.org/web/20041204170110id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=463423


梦想风暴 一个小程序员的信口开河 <<<Hello Velocity | 主页 | 成为开发者>>> Hello Velocity之后 2004-10-27 模板技术的发明充分反映了程序员的懒惰,因为模板必然会产生大量类似的东西。模板技术就是将相同的东西一次完成,不同的东西每次写一下,然后二者合并产生了一个所谓的“新”东西。相同的,我们称之为“模板”(Template),不同的,称之为“数据模型”(Data Model),让二者合并的就是“模板引擎”(Template Engine),而“新”东西就是我们的“目标”(Target)。 Data Model ------| |------> Template Engine ------> Target Template ------| 说起模板,也许C++程序员会有特殊的感情,它是泛型编程的基础。正是见识到了泛型的强大,Java和C#等后来者也纷纷效仿。其实C++的模板和这里的模板并没有本质的区别。在C++的模板中,模板是我们编写的模板代码,而数据模型是我们在使用模板时传入的参数,担当模板引擎角色的是语言的编译器,由它负责产生实际的代码。也许到了一些后来者中,实现上会存在着一些差异,但本质上大体相似。 把模板的概念再扩大一些,实际上许多代码生成的技术也是一种模板技术。想想,源(数据模型)按照一定的规则(模板)产生目标(目标)。代码生成是编译器技术很重要的一环,顺着这个思路向上,我们会发现编译器也体现着模板的概念。也就是从理论上说,以Velocity实现一个编译器也并非不可能。 如果将模板技术用于实战,我们必须面对一些问题。首先便是学习全新模板语法,虽然可能没什么难的,但毕竟是新的。前面的例子中,为了简化我直接在代码中,写入变量的值,从实际应用的角度来说,我们可能从文件中读出这些变量的值,从而分离数据模型与引擎。这就涉及另一个问题,输入的格式――又一种语言。不过,最关键的问题在于开发方式的转变。让习惯了编写代码的程序员写这些看上去有些不务正业的东西,他们的感受如何呢?因为拒绝变化,有人会告诉你“风险”的存在。东西好不好,关键在于它能带给你多大的好处。 dreamhead 发表于 2004-10-27 20:22 引用Trackback(0) | 编辑 Comments 开始Google 的Ad了,:) dreamhead回复founder_chen说: Just For Fun! (2004-10-28 11:09) founder_chen ( osthoughts.blogbus.com ) 发表于 2004-10-28 10:40 如果追根溯源,几乎总能找到相同的起点。这是种哲学?---程序员的惯性之一就是拒绝变化,于是错过了许多乐趣。 dreamhead回复tonyad说: 将新东西和旧东西联系起来,可以更好的理解新东西。 (2004-11-04 13:18) tonyad ( ) 发表于 2004-11-04 12:06 发表评论 最近更新 单枪匹马 技术的文字 鱼与熊掌 成为开发者 当Java遭遇OUT参数 新的开始 身体最重要 Hello Velocity之后 Hello Velocity 对象的生命