昨天写 40 个存储过程,越发意识到这个问题的严重.
要写很多存储过程,结构类似,毫无疑问,先做存储过程产生器,一次生成四个.速度快,代码规范.
回忆以前玩 VB 的时候,做控件要写很多无聊的Public Property...实现骨骼特性,当时 VB 提供了一个代码生成工具,可以方便的生成这种无聊代码,甚至还能模拟继承,学名叫映射,当然,逆向特性并不好. 机器生成代码固然速度快,但比起 vb.net 在语言级别实现继承二者优劣判若云泥.
记得 MASM 里有个工具,用来实现 OO 的汇编,谁会用它呢,不如用 C++. 也有人说用 C 模拟 OO,虽然我也有过这个想法,但是很明显,即使用良好的实现也是很不适用的.
工具生成代码操作便捷,例如将文件拖曳到文件夹,比之 move b/ a
但工具的长处也只适合表达简单事物,对于复杂事物,需要使用语言.例如批处理和 shell 脚本.
语言把动作变成可以理解的一句话.亦因此可以代替如代码产生器,代码向导之类的工具.
在 ejb 中实现一个 bean 最好借助 jbuilder 的向导,而在 .net 里,把一个方法变成 Web 方法只是简单的一个修饰.
在 c++ 要生成 COM 组件,将面对无法逃避的 com 迷宫,而在 VB 里,这些特性在语言上已经包装.
VB 用窗体设计器生成窗体,.net 里生成的是可以理解的代码。在网页里可以通过标记来做到。标记是语言级别的,可以无限增多,而 vb 的控件虽然可以动态增加,但用起来远不如标记顺手。
作为取代代码生成器的语言,它的作用即以语言的形式封装低层次的代码,这一点和简单的做个函数完全不同。
prolog 封装了递归和数据库,虽然现在没有大用,但我依然看好。
把语言变成混杂的脚本,像 ASP 一样,一段代码,一段生成代码的代码。所有 oop,or-map 窃以为都会被这个方式统一。