把代码当作一种文本,解析这个文本,生成数据结构,而后从新计算遍历,统计,生成新的代码,就是代码生成。程序员
随着业务的扩展,需求的增长,代码量的扩张是不可避免的。为了能不断知足新的需求,就要不断用新的抽象下降项目的复杂程度,以便能让普通程序员进行维护。算法
总的来讲,新的功能是旧的功能的叠加和演化:若是旧功能是函数,那么新的功能就是利用这些函数,生成新的函数。因此有人说:项目的扩展,就是在写一个 Lisp 语言的解释器。数据结构
只有将代码当成文本处理,才能让用代码描述的项目成为能够任意扩展的东西,不然,利用代码语言自己的各类模式,很难能大幅度下降项目的复杂程度。函数
因此,不断用新的语言,描述项目的需求,是保持项目扩展的最好途径。设计
那么,普通项目如何成为一个语言解释器呢?答案是不断设计代码生成器,用更抽象的描述,保持项目的可维护性。扩展
代码做为软件企业的资产,有特定的运行环境,特定的应用场景,当有新的需求,新的环境,代码的可用性会大打折扣,由于运行的环境可能不一样,版本可能会发生变化,这个问题怎么解决呢?软件
就是把代码标准化,让代码尽量和语言无关,尽量和环境无关,只是单纯的算法,这样在不一样的语言环境中就能够增长可重用性。遍历