《程式碼大全》程式碼生成

Koma_Wong發表於2018-06-17
  • 內容來自:<<Code Complete 程式碼大全>>計算機實用軟體技術系列叢書

程式碼生成

連結程式

一個標準的連結程式,能連結一個或幾個由原始碼檔案生成的目標檔案,以生成一個可執行程式,許多功能強大的連結程式能連結用幾種語言寫成的模組。允許你選擇最合適的語言而不管那些整合的細節問題。有些利用共用儲存區的連結程式,能幫助你節省記憶體空間。這種連結程式生成的執行程式碼檔案能一次只向記憶體裝載部程式碼,而把其餘部分保留在磁碟中。

程式碼庫

在短時間內寫成高質量程式碼的方法是,一次不全部都寫出來,其中部分可以借用已有程式。至少下面這些部分你是可買得到的高質量的程式碼庫:

  • 鍵盤和滑鼠輸入
  • 使用者介面視窗的生成
  • 螢幕和印表機輸出
  • 複雜的圖形函式
  • 多媒體應用生成
  • 資料檔案操作(包括常用資料庫操作)
  • 通訊
  • 網路
  • 文字編輯和字處理
  • 數學運算
  • 排序
  • 資料壓縮
  • 構造編譯程式
  • 依賴平臺的圖形工具集

只要在 Microsoft Windows.OS/2 Presentation Manager,Apple Macintosh 和 X Window System 中把你寫的程式碼重寫編譯一次就可執行。

程式碼生成程式

如果你買不到你所要的程式碼,讓別人去寫怎麼樣?你無需到處找人,你可買些工具回來,讓它幫你寫所需要的程式碼,程式碼生成工具著意於資料庫應用,它包含了許多用途。普通的程式碼生成程式寫些資料庫、使用者介面、編譯程式方面的程式碼。這些程式碼當然不如人寫的那樣好,但許多應用場合用不著人工來編碼。對許多使用者來說,能得 10 個應用程式碼總比只能得到一個好程式碼強.。 程式碼生成程式也能生成程式碼原型,利用程式碼生成程式你可在短時間內描繪出一個使用者介面的原型,你也可嘗試用幾種不同的設計方法。要做同樣的工作靠手工可能要花上幾個星期,你又為何不用最便宜的方法呢?

巨集預處理程式

如果你用 C 來程式設計而用到了巨集預處理程式,你可能覺得沒有預處理程式來程式設計是很困難的。 巨集允許你幾乎不花什麼時間就能產生一個簡單的有名字的常量,比如用 MAX_EMPS 替代 5000,那麼預處理程式就會在程式碼編譯時用 5000 來替代 MAX_EMPS。 巨集預處理程式也允許你生成一些複雜的函式,以便在程式中簡單使用,它僅在編譯時被替換回來而不花什麼時間。這種方法使你的程式可讀而易維護。因為你在巨集中給出了一個好名字,所以你的程式更好讀;又因為你把所有的名字放在一個地方,因而修改起來極其方便。 預處理程式功能對除錯也很有好處。因為它很容易在改程式序時進行移植。在改進一個程式時,如果你想在每個子程式開頭檢查一下各記憶體段,那麼你可以在每個子程式開頭用一個巨集。 在修改以後,你可能不想把這些檢查留在最後的程式碼中,這時你可重新定義這些巨集使它不產生任何程式碼。同樣的原因若你要面向不同的編譯環境。如 MS-DOS 和 UNIX,巨集預處理程式是很好的選擇。 如果所用語言控制結構不好,比如 Fortran 和彙編,你可以寫一個控制流預處理程式用來模仿 if-then-else 和 while 迴圈的結構化結構。 如果所用語言不支援預處理程式,你自已可寫一個。這可參考(《Software Tools 》(Kernighan 和 Plauger 1976)中的第八章或《softwareTools in Pascal》(Kernlghan 和Plauger 1981)《SoftwareTools》 中也有如何在 Fortran 中編寫控制流的方法,也可用到彙編中去。

除錯

這種工具在除錯中有如下作用:

  • 編譯程式警告資訊
  • 給出程式框架
  • 檔案比較程式(比較原始碼檔案的不同版本)
  • 執行顯示程式
  • 互動除錯程式,軟體和硬體的

下面討論的測試工具與除錯工具有關。

測試

用下面這些效能和工具能有效地幫助你測試:

  • 給出程式框架
  • 結果比較(比較資料檔案、監視輸出及螢幕影像)
  • 自動測試生成程式
  • 記錄測試條件及重複功能
  • 區域監視器(邏輯分析及執行顯示器)
  • 符號除錯程式
  • 系統擾亂程式(記憶體填充、儲存器擾亂、有選擇地讓儲存器出錯,儲存器存取性檢查)
  • 缺陷資料庫

程式碼調整

這種工具幫助調整程式碼。

執行顯示程式

執行顯示程式在程式執行時顯示程式碼執行情況,並且告訴你每條程式語句執行了多少次或花了多少時間。在程式執行時,顯示程式碼猶如一個醫生把聽筒放在你胸前而讓你咳嗽一樣。它讓你清楚地知道程式執行時的內部情況,告訴你哪是關鍵,哪個地方是你要重點調整的目標。

彙編列表和反彙編

有時你想看看由高階語言產生的組合語言。有些高階語言編譯程式能生成彙編列表;另一些則不能,所以你得用反彙編從機器碼生成組合語言。看著編譯程式生成的組合語言,它表明你的編譯程式把高階語言轉化成機器碼的效率。它也告訴你為何高階語言看起來應當很快而實際上卻執行很慢。在第二十九章的程式碼調整技巧中,幾個標準檢查程式的結果是不直觀的。當用標準檢查程式檢查程式碼時,用匯編列表能更好地理解結構而高階語言卻不能這樣。 如果你覺得組合語言很不舒服需要介紹,那最好的方法是把你用高階語言寫的語句與編譯程式產生的相應的彙編指令作個比較。可能你第一眼看到彙編時會感到不知所措,編譯程式生成的程式碼你可能再也不喜歡看這類東西了。

相關文章