前言

藉由Internet的無遠弗屆,軟體這種產業的遊戲規則已經被改變了,尤其開放原 始碼的運動(open source)更是對整個軟體業及資訊服務的觀念徹底改變。 open source社群開發軟體的模式仰賴一些非常強大的工具,例如編輯器, 編譯器,版本控制等等。這些工具能夠非常有效的做分散式的開發與良好的 開發管理。例如像sourceforge.net這種開發模式已經變成很多大公司 新方法了,它允許整個開發流程在Web上的介面一氣呵成。

對我來說寫程式或完成一個project是一個藝術,尤其我本來是唸理學院的, 所以對於有結構的東西也比較喜歡,open source的整體開發架構對我來說, 非常的完美,有general的通用性,有結構的嚴謹性,很像以前念數學物理的 體系,對於追求完美的程式設計師,我覺得這真的是值得學習的思考模式與 工具使用。

很難想像這麼多強大的工具居然都是免費的,其實世界上很多重要部分大型商 用部分的軟體,都是靠這些免費的工具完成,例如Cisco router IOS, 學術單位的研究計劃等等。工欲善其事必先利其器,以一個開發者而言, 好的idea好的algorithm等等是很重要,但是實作(implementation)的能力 也很重要,實作的能力必須先將工具軟體用的出神入化,做起事情來 才有事半功倍的效果。沒有實做能力只有紙上談兵。

有些觀念我覺得沒有必要解釋了,因為是望文生義的文字就不多費唇舌了, 例如開檔案,這種東西,就不浪費各位的血汗生命來讀了。基本上看這本書 先要有一些開發程式的流程觀念,寫程式不是拿來寫完就了事的,其中包含 的文件,思考,寫作,除錯,版本的控制,回報,客戶服務,等等都應該有 一定的流程與工具來做管理的。如果有這些觀念了,才有辦法往下看 下去。其實這本書的內容非常偏應用層面了,盡量剔除一些深奧的觀念以 免學起來礙手礙腳的,有興趣的人可以自行鑽研下去。

基本上學習一件新事物,我覺得有兩個東西,一就是觀念,二就是參考手冊, 例如學c語言,不是學完了pointer,array,宣告等等就完了,還要熟悉一 堆函式才有所發揮。函式的用法就是參考手冊。所以在內容上盡量用最簡單 的話把觀念表達清楚,參考資料就放到書後面去了。

這本書會有點偏向C/C++的介紹,因為有些除錯或者編輯軟體都有針對C做特 別處理的工具。希望有興趣的朋友都能獲得很好的啟發與收穫。另外這些工 具在MS Windows的環境下也都可以用,不過我沒有試過,我的環境都在Unix 環境下完成。我盡量說明一下"為什麼",當然如果連環境變數都不知道是 什麼,那我想這本書也可能是天書了。

最後,由於敝人才疏學淺,加上公餘之時寫作此書,疏漏在所難免,歡迎各 位先進指教。