1. 程式人生 > >程式碼生成器技術亂彈十三,郎騎竹馬來,高階語言和超級語言

程式碼生成器技術亂彈十三,郎騎竹馬來,高階語言和超級語言

        在自然界,類似於男生女生的概念是很多的。如雄與雌,程式碼與資料,演算法與資料結構。採用中國古代哲學裡的概念可以稱為陰陽或者兩儀。今天我們探討的問題是程式碼生成器中的這個問題。具體說來,我們分析的是程式碼生成器的效率與實用性問題。這就是程式碼生成器的操作和程式碼生成器裡包含的生成的程式碼之間的關係問題。我稱之為超級語言和高階語言問題。

        當然,有些人可能說,不是所有的程式碼生成器有生成器指令碼,或者說是超級語言的。的確,在現在的程式碼生成器界,有如下的常見做法,有些程式碼生成器是沒有生成器指令碼的,他們採用的是介面操作。有程式碼生成器指令碼的程式碼生成器也很不一致。我的動詞運算元式程式碼生成器陣列採用的是名為SGS的程式碼生成器指令碼,比較新的生成器成員支援和SGS語言有對映關係的Excel模板,最新的第三代動詞運算元式程式碼生成器光的版本甚至只支援Excel模板程式碼生成。關於SGS和Excel模板的優劣我會在亂彈十四中闡明。而其他人的程式碼生成器有其他做法,有的採用XML,採用JSON或者SQL或者其增強的也大有人在。

  為什麼說超級語言和高階語言的關係是程式碼生成器的根本問題。問題在於效率,在於勞動生產率,在於程式碼生成器存在和發展的客觀邏輯。對於介面派我們可以分析出他們的問題所在。我能想到的問題在於重複工作。如果介面操作不能指令碼或或可儲存可修改在如下的場景下,會顯得非常低效。比如說一位程式設計師使用介面操作的程式碼生成器生成了一套程式碼,他很有成就感,因為他用半天時間做完了兩週的工作。他把工作成果展示給他的老闆或者客戶。期望得到他們的認可。於是悲劇產生了,稽核者肯定了他的工作,但是希望部分改變資料庫設計。如果,單純使用介面,不借助檔案或者資料庫儲存功能的程式碼生成器使用者不得不重新使用介面操作一遍。這樣就大大降低了程式碼生成器的實用性。

  怎麼辦,我認為一共只有兩種解決辦法,使用資料庫或者使用某種儲存媒介。我是使用SGS檔案或者Excel模板來表徵一切的。對動詞運算元式程式碼生成器的使用者而言,以上場景不構成障礙,因為,系統在程式碼生成物中自動儲存了元檔案。您可以根據稽核者的意見,修改原始檔案(SGS 指令碼或Excel模板),輕鬆以迭代式的方式完成工作,不必從頭開始。

    所以,不能儲存的介面流有待完善。而使用某種媒介的程式碼生成器其實都有一共共通的問題,您要做的動作和程式碼生成物的比數。當然,最好的程式碼生成器是這樣的,您對他說:“我要一套物流管理系統!",他回答到:“好的,主人。已經為您生成好了。”比較不魔幻的程式碼生成器需要您比較詳細的規格描述。顯然,您的描述的越多,程式碼生成器的效率越低。那末,大家要問,程式碼生成器的描述到何種詳細程度是平衡的比較好的?我的分析如下,程式,無非是程式碼和資料結構。一部分程式碼生成器要描述資料結構和施加在這些資料結構上的操作。我已經做到只需要定義參與程式碼生成的資料物件,所有的泛型操作都預設提供了。這就是本程式碼生成器亂彈一直在推薦的動詞運算元式程式碼生成器。

        所以,我們得到了超級語言的概念,超級語言是編譯生成高階語言的程式碼生成物的一類效率特別高的語言。他的等效的程式碼生產物的碼量是超級語言的10倍乃至100倍。如此高效的程式碼生成器,是不是對應的高階語言