论坛首页 Java企业应用论坛

动词算子式代码生成器简介【理论随笔】

浏览 10024 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2018-09-30   最后修改:2018-09-30
代码生成器技术乱弹十一,伽罗华理论与代码生成

    最近,看到了最悲剧的天才数学家伽罗华的际遇及其群论的思想。发现群论可以成为代码生成器理论的数学基础。

    以群论的语言,代码生成笛卡尔空间就是代码生成置换群,定义在此群上的算子不是四则混合运算,而是动词算子,是ListAll,ListAllByPage,ListActive,FindById,FindByName,SearchByName,SearchByFieldsByPage,Delete, DeleteAll,SoftDelete,SoftDeleteAll,Toggle,ToggleOne,Update。 只要Domain的有限集即代码生成伽罗华域上此置换群不会产生逻辑矛盾。对群论理解尚浅,故记下以备忘。

    可以认为,代码生成器置换群上定义的算子即运算越多,此置换群的空间越大,能力也越强。故引入群论或者说组合数学的理论基础,有助于使代码生成器的基础理论成为有数学基础的一门科学。

    伽罗华生于1811年,故以乱弹十一为纪念。

    代码生成器的基础理论需要解决的问题。

    为什么代码生成器能够工作?

    哪些动词在整个置换群上是正确的,那些在一定条件下是正确的?哪些会引入错误?

    在整个代码生成器空间都正确的动词算子的约束条件。

    哪些动词有内在矛盾,是包含错误的?

    代码生成空间的域对象的规则是什么?

    代码生成器的极限在哪里?

    存在多少个代码生成器空间?

    想到哪写到哪,备忘。
0 请登录后投票
   发表时间:2018-11-05  
代码生成器技术乱弹十,动词与多维空间,动词变格理论简述

    在动词算子式代码生成器中,有若干遵循的基本设计准则,简述如下:

  • 动词算子化
  • 动词变格理论
  • 面向棱柱
  • 超级语言驱动
  • 技术栈中立
  • 超泛型实现
  • 一次编程,两处调试
  • 内置代码模板,经过详细测试,代码模板不开放,通过版本更新和代码生成器分支来支持新功能。

    现在我们详细分析一下其中的第二项:动词变格理论。

    其理念如下,在代码生成的多维笛卡尔空间,存在着某个抽象的动词算子比如说是ListAll,它在多维空间的投影产生出比如DaoImpl,Dao,ServiceImpl,Service,Facade,JSAction和JSButton这7个动词算子的影子。在和某个域对象比如说是Student结合以后,会形成7个具体的ListAllStudents函数。

    这种现象非常类似于英语中的时态变化或者说是动词变格,所以这种代码生成器的设计被称为动词变格理论。就比如所对英语动词Have来说,Has, Had和Haven是动词have的变格,上述我们对动词算子ListAll的分析发现,在和平之翼代码生成器中,动词算子一共有7个格。动词中,拥有7个格的形态的动词算子是全栈动词,而部分动词格缺失的动词算子是非全栈动词。

    为什么这么设计,这是为了标准化和简化不同层级的函数的调用关系,并简化代码调用之网。从而降低开发时的测试工作量和代码生成器的品质。

    您有何种看法?欢迎跟帖。
0 请登录后投票
   发表时间:2018-11-06  
代码生成器技术乱弹十二,步枪,T型车到代码生成器,模板法的工业魔术

    在《产生式编程》一书中,作者带我们重述历史,去探寻自动化的缘起。人类历史上第一种工业化产品,没错,是一种武器。19世纪,美国生产出人类历史上第一种真正工业化的产品,一种可以互换零件使用的步枪。这是一次技术革命,从此,制品有了型号,标准,公差,互换零件等等一系列手工制作阶段没有的崭新概念。一种互换零件的步枪的强大之处之一是你可以从两把烂步枪凑出一把好步枪。这是从来没有过的事情。这其实就是模板法第一次展现它的工业魔术。

    而后,福特的T型车是模板法的第二次魔法,第一次人类历史上出现了生产流水线的概念。在互换零件的步枪的装配时还没有生产流水线,也许是因为步枪比较轻,不需要太多力气就可以搬动。而汽车的生产,流水线的使用可以大幅度提高效率。

    代码生成器时代,其实,形形色色的代码生成器都是模板法的杰作,他们带来了工业化编程方式。动词算子是代码生成器也是基于模板法的。但是,动词算子式代码生成器的模板是切成原子化的Verb的。只有一个域对象结合了恰当的动词算子,它才能生成具体的代码。动词算子其实是一组函数级代码生成器,只需结合恰当的域对象,就可以生成具体的函数。而且,域对象也被层层切开,分成了Type,Field ,Var,Signature等等。这些东西在动词算子式代码生成器中统一称为化身变量。动词算子式代码生成器就是靠彻底分解和重新组合拥有了代码生成的魔力的。

   根据动词算子式代码生成器的设计哲学。从系统层面,只存在着域对象,名词和各种动词算子,模板法是具体的实现机制,是被屏蔽的。所以动词算子式代码生成器的模板是藏起来的,实现新功能,您就等着新版本和新分支吧。没有合适的话,您不妨自己分支一个。

    欢迎大家的看法和意见。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics