天天酷跑小蜜桃|天天酷跑女角色被日
論壇首頁 Java企業應用論壇

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

瀏覽 73 次
精華帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隱藏帖 (0)
作者 正文
   發表時間:前天  
        在自然界,類似于男生女生的概念是很多的。如雄與雌,代碼與數據,算法與數據結構。采用中國古代哲學里的概念可以稱為陰陽或者兩儀。今天我們探討的問題是代碼生成器中的這個問題。具體說來,我們分析的是代碼生成器的效率與實用性問題。這就是代碼生成器的操作和代碼生成器里包含的生成的代碼之間的關系問題。我稱之為超級語言和高級語言問題。

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

  為什么說超級語言和高級語言的關系是代碼生成器的根本問題。問題在于效率,在于勞動生產率,在于代碼生成器存在和發展的客觀邏輯。對于界面派我們可以分析出他們的問題所在。我能想到的問題在于重復工作。如果界面操作不能腳本或或可儲存可修改在如下的場景下,會顯得非常低效。比如說一位程序員使用界面操作的代碼生成器生成了一套代碼,他很有成就感,因為他用半天時間做完了兩周的工作。他把工作成果展示給他的老板或者客戶。期望得到他們的認可。于是悲劇產生了,審核者肯定了他的工作,但是希望部分改變數據庫設計。如果,單純使用界面,不借助文件或者數據庫保存功能的代碼生成器用戶不得不重新使用界面操作一遍。這樣就大大降低了代碼生成器的實用性。

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

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

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

論壇首頁 Java企業應用版

跳轉論壇:
Global site tag (gtag.js) - Google Analytics 天天酷跑小蜜桃