代码生成器技术乱弹五十六,超级语言和高级语言的根本区别
代码生成器技术乱弹五十六,超级语言和高级语言的根本区别
超级语言如标准生成器脚本(SGS语言)或标准生成器脚本电子表格版本(SGS2语言),以下简称生成器脚本。大家有时会觉得,它们缺少其他编程语言不可或缺的条件,循环和赋值等等的语句,却多了一些其他语言看不到的功能,比如verbdenies等等。许多人感到奇怪,并质疑这是否是一种编程语言。其实,生成器脚本没有算术和逻辑运算,这是所有高级语言都不可缺少的,生成器脚本能够做到这一点本质是抽象级别提高后自然产生的特点。和一般高级编程语言不同的是,普通高级语言是使用语句和变量的抽象级别。所谓条件,循环,赋值等等的语句,本质上是在执行对变量的操作,比如条件语句是检测某一变量的值并进行跳转。而生成器脚本的抽象级别是动词算子和域对象。如果您仔细看代码生成器脚本的操作,绝大多数操作是在设置域对象和域对象的属性和关系。那个verbdenies功能是在定义某个域对象上不使用的动词算子。这些差别足以显示,生成器脚本是一种抽象级别不同于高级语言的计算机编程语言。
从根本上说,代码生成器脚本是题域空间的语言,而高级语言是解域空间的语言。生成器脚本是需求分解的工具。为什么这样说。看看这个数学式子,
1+1 = 2
可见,等号左边的 1 + 1 这一边是题域,是提出问题的区域。在生成器脚本上,题域往往是对一个域对象的规格描述。本质上,组如寄存器优化之类的问题不应该在这里提出,因为那是一个解域的问题。域对象的规格描述,其实不是一个编程实现问题,它更类似于设计和规格描述,它是说,我要一个解决如此数据格式的应用系统。实际上它是设计者对遇到的规格需求的细化和落实,本质上是一种规格描述。有计算机语言位于这一层次,比如UML。而SGS和SGS2
是这样的题域语言。和UML不同的是SGS和SGS2可以编译成为具体的应用程序。
等号右边的1,那是答案,或者是解。等号右边的区域是解域,比如动词算子式通用代码生成器的代码生成物就是位于解域。传统的编程语言,比如高级语言,汇编语言和机器语言,都是位于解域的语言。位于题域和解域的语言是完全不同的,要求一个题域语言大头还是小头,寄存器的物理地址,字符串的数据结构那是完全不对的,这些都是解域语言要处理的问题。
动词算子和域对象的笛卡尔积:
动词算子的内部结构: