`
jerry_shen
  • 浏览: 98655 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

代码生成器技术乱弹十三,郎骑竹马来,高级语言和超级语言

阅读更多
        在自然界,类似于男生女生的概念是很多的。如雄与雌,代码与数据,算法与数据结构。采用中国古代哲学里的概念可以称为阴阳或者两仪。今天我们探讨的问题是代码生成器中的这个问题。具体说来,我们分析的是代码生成器的效率与实用性问题。这就是代码生成器的操作和代码生成器里包含的生成的代码之间的关系问题。我称之为超级语言和高级语言问题。

        当然,有些人可能说,不是所有的代码生成器有生成器脚本,或者说是超级语言的。的确,在现在的代码生成器界,有如下的常见做法,有些代码生成器是没有生成器脚本的,他们采用的是界面操作。有代码生成器脚本的代码生成器也很不一致。我的动词算子式代码生成器阵列采用的是名为SGS的代码生成器脚本,比较新的生成器成员支持和SGS语言有映射关系的Excel模板,最新的第三代动词算子式代码生成器光的版本甚至只支持Excel模板代码生成。关于SGS和Excel模板的优劣我会在乱弹十四中阐明。而其他人的代码生成器有其他做法,有的采用XML,采用JSON或者SQL或者其增强的也大有人在。

  为什么说超级语言和高级语言的关系是代码生成器的根本问题。问题在于效率,在于劳动生产率,在于代码生成器存在和发展的客观逻辑。对于界面派我们可以分析出他们的问题所在。我能想到的问题在于重复工作。如果界面操作不能脚本或或可储存可修改在如下的场景下,会显得非常低效。比如说一位程序员使用界面操作的代码生成器生成了一套代码,他很有成就感,因为他用半天时间做完了两周的工作。他把工作成果展示给他的老板或者客户。期望得到他们的认可。于是悲剧产生了,审核者肯定了他的工作,但是希望部分改变数据库设计。如果,单纯使用界面,不借助文件或者数据库保存功能的代码生成器用户不得不重新使用界面操作一遍。这样就大大降低了代码生成器的实用性。

  怎么办,我认为一共只有两种解决办法,使用数据库或者使用某种储存媒介。我是使用SGS文件或者Excel模板来表征一切的。对动词算子式代码生成器的用户而言,以上场景不构成障碍,因为,系统在代码生成物中自动保存了元文件。您可以根据审核者的意见,修改原始文件(SGS 脚本或Excel模板),轻松以迭代式的方式完成工作,不必从头开始。

    所以,不能保存的界面流有待完善。而使用某种媒介的代码生成器其实都有一共共通的问题,您要做的动作和代码生成物的比数。当然,最好的代码生成器是这样的,您对他说:“我要一套物流管理系统!",他回答到:“好的,主人。已经为您生成好了。”比较不魔幻的代码生成器需要您比较详细的规格描述。显然,您的描述的越多,代码生成器的效率越低。那末,大家要问,代码生成器的描述到何种详细程度是平衡的比较好的?我的分析如下,程序,无非是代码和数据结构。一部分代码生成器要描述数据结构和施加在这些数据结构上的操作。我已经做到只需要定义参与代码生成的数据对象,所有的泛型操作都默认提供了。这就是本代码生成器乱弹一直在推荐的动词算子式代码生成器。

        所以,我们得到了超级语言的概念,超级语言是编译生成高级语言的代码生成物的一类效率特别高的语言。他的等效的代码生产物的码量是超级语言的10倍乃至100倍。如此高效的代码生成器,是不是对应的高级语言的白马王子哦。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics