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

        在天然界,相似於男生女生的概念是不少的。如雄與雌,代碼與數據,算法與數據結構。採用中國古代哲學裏的概念能夠稱爲陰陽或者兩儀。今天咱們探討的問題是代碼生成器中的這個問題。具體說來,咱們分析的是代碼生成器的效率與實用性問題。這就是代碼生成器的操做和代碼生成器裏包含的生成的代碼之間的關係問題。我稱之爲超級語言和高級語言問題。程序員

        固然,有些人可能說,不是全部的代碼生成器有生成器腳本,或者說是超級語言的。的確,在如今的代碼生成器界,有以下的常見作法,有些代碼生成器是沒有生成器腳本的,他們採用的是界面操做。有代碼生成器腳本的代碼生成器也很不一致。個人動詞算子式代碼生成器陣列採用的是名爲SGS的代碼生成器腳本,比較新的生成器成員支持和SGS語言有映射關係的Excel模板,最新的第三代動詞算子式代碼生成器光的版本甚至只支持Excel模板代碼生成。關於SGS和Excel模板的優劣我會在亂彈十四中闡明。而其餘人的代碼生成器有其餘作法,有的採用XML,採用JSON或者SQL或者其加強的也大有人在。算法

  爲何說超級語言和高級語言的關係是代碼生成器的根本問題。問題在於效率,在於勞動生產率,在於代碼生成器存在和發展的客觀邏輯。對於界面派咱們能夠分析出他們的問題所在。我能想到的問題在於重複工做。若是界面操做不能腳本或或可儲存可修改在以下的場景下,會顯得很是低效。好比說一位程序員使用界面操做的代碼生成器生成了一套代碼,他頗有成就感,由於他用半天時間作完了兩週的工做。他把工做成果展現給他的老闆或者客戶。指望獲得他們的承認。因而悲劇產生了,審覈者確定了他的工做,可是但願部分改變數據庫設計。若是,單純使用界面,不借助文件或者數據庫保存功能的代碼生成器用戶不得不從新使用界面操做一遍。這樣就大大下降了代碼生成器的實用性。數據庫

  怎麼辦,我認爲一共只有兩種解決辦法,使用數據庫或者使用某種儲存媒介。我是使用SGS文件或者Excel模板來表徵一切的。對動詞算子式代碼生成器的用戶而言,以上場景不構成障礙,由於,系統在代碼生成物中自動保存了元文件。您能夠根據審覈者的意見,修改原始文件(SGS 腳本或Excel模板),輕鬆以迭代式的方式完成工做,沒必要從頭開始。數據結構

    因此,不能保存的界面流有待完善。而使用某種媒介的代碼生成器其實都有一共共通的問題,您要作的動做和代碼生成物的比數。固然,最好的代碼生成器是這樣的,您對他說:「我要一套物流管理系統!",他回答到:「好的,主人。已經爲您生成好了。」比較不魔幻的代碼生成器須要您比較詳細的規格描述。顯然,您的描述的越多,代碼生成器的效率越低。那末,你們要問,代碼生成器的描述到何種詳細程度是平衡的比較好的?個人分析以下,程序,無非是代碼和數據結構。一部分代碼生成器要描述數據結構和施加在這些數據結構上的操做。我已經作到只須要定義參與代碼生成的數據對象,全部的泛型操做都默認提供了。這就是本代碼生成器亂彈一直在推薦的動詞算子式代碼生成器。數據庫設計

        因此,咱們獲得了超級語言的概念,超級語言是編譯生成高級語言的代碼生成物的一類效率特別高的語言。他的等效的代碼生產物的碼量是超級語言的10倍乃至100倍。如此高效的代碼生成器,是否是對應的高級語言的白馬王子哦。設計

相關文章
相關標籤/搜索