本帖最后由 jerry_shen 于 2018-06-08 11:26 編輯
代碼生成器技術(shù)亂彈九,代碼變變變,代碼生成器之度量
代碼生成器是一種具有強(qiáng)大變形能力的編程工具,現(xiàn)在國內(nèi)的代碼生成器已經(jīng)非常多了,如此形形色色的代碼生成器究竟有沒有一個(gè)客觀的標(biāo)準(zhǔn)來衡量不同的代碼生成器的代碼生成能力呢? 我認(rèn)為衡量代碼生成器變形能力的客觀標(biāo)準(zhǔn)是存在的,這就是一個(gè)代碼生成器所能夠生成的所有子系統(tǒng)的代碼空間之和,或稱為一個(gè)代碼生成器的笛卡爾空間或生成空間。考慮到一個(gè)待生成的系統(tǒng)的字段總數(shù)是N個(gè)字段,我們來算一下動(dòng)詞算子式代碼生成器的生成笛卡爾空間。 代碼生成器的生成空間就是代碼生成器能生成的所有子系統(tǒng)的空間之和。也就是代碼生成器的笛卡爾空間。根據(jù)上面的分析,無垠式代碼生成器JEEEU版Ada 1.5的生成空間為(N-3)×20×3,我們可以簡單記為60N,為字段,動(dòng)詞算子和關(guān)系三者的笛卡兒積。和平之翼代碼生成器SMEU版3.1 烏篷船的生成空間為(N-3)×20×3×2,我們可以簡記為120N,為字段,動(dòng)詞算子,關(guān)系和數(shù)據(jù)庫類型四者的笛卡爾積。很顯然,源代碼沒有變形能力,所以,源代碼的生成笛卡爾空間為 1N。當(dāng)然,如果某個(gè)源代碼同時(shí)支持Mysql和Oracle兩種數(shù)據(jù)庫,根據(jù)上面的分析,他的笛卡爾生成空間是2N。 讓我們?nèi)翰呷毫,開發(fā)1000N級(jí)別(或者可以稱之為1000倍率)的代碼生成器吧。所有SGS(標(biāo)準(zhǔn)生成器腳本)體系的笛卡爾空間考慮到動(dòng)詞算子式代碼生成器大概有十來種架構(gòu),如果每一種架構(gòu)的笛卡爾空間是60N,總空間大概是600N,就是有600倍率的變形能力。 |