Monday, January 28, 2002

Literate Programmin

  Literate Programming 之所以被提出來,其出發點是基於,程式被人們閱讀的次數遠遠超過它被執行的次數,且程式員花在看懂程式的時間也往往比耗在撰寫程式碼的時間多得多,所以想辦法讓程式容易讓人看懂就成為一個重要的議題。

  最早的作法是為程式加上註解,以幫助人們閱讀,但是註解很容易就和程式碼漸行漸遠,產生不一致的情形,演變成有註解比沒註解還慘。況且程式和註解交雜在一起,欠缺層次感,就算註解和程式碼形影相隨,也不容易讓程式員很快就掌握整個程式的梗要。

  一些軟體工程的過程雖也為程式碼產生了一些說明文件,以資人們參考之用。但這些說明文件常常跟最後的程式碼南袁北徹。就算程式員很盡心地維持了這些文件和程式碼的一致性,說明文件也往往只提供很高階的描述,再詳細一些的描述還是繳了白卷。

  有一種作法,是在註解內添加規定的標記符號,然後用了如 javadoc 或 DOC++ 等工具,將這些特定的註解說明抽取出來,當成程式的說明文件。這種作法雖然帶來很大的方便性,但其背後的基本精神還是以告訴電腦如何作的程式碼為主,給人們看的註解說明為輔。

  高德納先生認為,既然這些程式讓人看懂比讓電腦執行重要,何不乾脆以撰寫說明文件的方式,來撰寫程式,這就是 Literate Programming 的由來。它是以撰寫說明文件為主,編程為輔的方式來完成程式設計。

  我們可以對 Literate Programming 的 source code 抽取出格式化的說明文件,如 (La)Tex 或 PDF 等格式;也可以從中抽取出可供編譯器編譯的程式碼...

0 comments: