符式思索
解決問題的一種語言和哲學
Leo Brodie 原著
奉 駿 泉 譯
序
程式設計的工作足以令人瘋狂。從事其它的行業,多少能欣賞到個人的工作成果,譬如鐘錶業者可以欣賞自製的齒輪發條,裁縫師可以欣賞他一針一線的傑作,只有程式
設計師卻一直在製造或修理一些摸不到、只能憑想像才存在的鬼魅機件。我們的工作不是從記憶體下手,也不是從編輯程式上著力,而是從我們的心靈上下功夫。
在心靈中構建一些模型的企圖既是程式設計中的一項挑戰,也是其中的一種享受。我們該作何種準備?用更好的除錯程式、反編譯程式以及反組譯程式來武裝我們?那些東西或有助益,但我們最切身的工具及技術卻是來自於心智。我們所需要的是一致而又切合實際的一套方法,以便用來思索那些軟體問題,這也是本書所要設法掌握的。〈符式思索〉一書對有志於撰寫軟體以解決問題的人深具意義。它的重點既在設計也在實現:先決定你要完成的是什麼,再設計出系統中的所有元件,進而構建出程式。
本書強調,電腦程式的寫作不僅是在完成一件正確的作品,它也必須是一件可讀性高、合乎邏輯的作品,更是藉著最簡要的語句來呈現出最好的解決方案。
雖然書中描述的大部份原理均適用於其它程式語言,我卻是以符式來加以介紹。符式是一種語言,一種作業系統,一套工具,也是一種哲理。它是近乎理想的思索途徑,因為它能契合我們心靈的工作方式。符式思索,
就是要簡單地想,雅緻地想,圓潤地想。它既非自我設限,亦非繁複,更非籠統。想從本書獲益,你不必需要先去了解符式,逕可向前讀去。〈符式思索〉這本書綜合了符式方法及現代電腦科學所教授的許多原理。有了符式的簡單明瞭,再結合傳統的分析規則及文體,你就能獲取一條更新更好的途徑去看待軟體上的問題。同時,你在電腦的應用領域中也必大獲助益。
讀者若欲對符式多些了解,不妨參考本人〈Starting
FORTH〉一書,其中涵蓋符式語言的各個層面。若時間不容許,也可以參考本書後之附錄A,其中對符式的基礎知識有所介紹。
以下稍事交代本書內容的安排:在第一章中將基本概念交代完畢後,我將本書按程式發展週期的順序加以安排:從最初的規格,直到最後的製作。書後的附錄中包括:對初學者的符式語言介紹、書中提到的一些應用程式的程式碼、問題解答以及有關符式文體的一般性規則之總結。
書中很多的概念並不是科學的,它們是根據主觀經驗以及對人類的觀察而得。有鑑於此,我曾就教於各個符式語言的行家,大家相互之間的看法並非完全一致,包括我在內。這些看法也許會改變。本書也提供一些建議,或稱「提示」。雖是提示,也得看你所面對的境遇是否符合而定。符式思想並無鐵定不變的規則。為儘可能與現行的符式系統一致,本書所舉的例證都已儘量符合1983年的符式標準。
對本書影響最大的人,當屬符式的發明人Charles
Moore先生。我在本書付梓前曾向他討教數日,最榮幸的是讓我旁觀他工作時的景象。Moore不愧為行家,動作之敏捷與靈巧,就如同他已投身到機器之中,親手去修改那些概念性的模型。你說他在那兒構建、修補也好,你說他在遊戲又何嘗不可。他之所以能完成這種工作,憑藉的只是最少量的工具(它們是為了對抗那個名為「複雜」的敵人,而且仍在持續進行的戰爭中,所獲得的結果),以及幾近於零的限制
--除去他本身的技術所不得不加諸的一些限制外。
盼望這本書已經掌握到他的一些智慧。願你愉快地享用它們!
|