關於程式設計

最早,對程式有興趣是因為它可以設計一個互動的界面(最直接的說法,就是遊戲),看著別人絞盡腦汁玩我設計的關卡,是很有成就感的一件事。為此,我對程式一直抱有高度的學習熱誠。

遊戲的設計非常複雜,甚至有人說遊戲是最困難的程式設計!除了基本的繪圖引擎,遊戲還必須包含物理引擎和遊戲邏輯(遊戲的規則)。上述的還只是程式設計的方面,其它像美工、音樂、企畫或關卡設計等等的工作,就更難全憑一己之力了。

還記得以前,最早用VB完成的一款飛機射擊遊戲,寫了很多"重複"的程式碼。那時候甚至沒有物件導向的概念,不論添加什麼新特色(功能),都要全部重寫一遍。雖然那是我唯一一次"殺青"的遊戲作品,但是之後我卻在不想再多看它的程式碼一眼,因為我已無法(不想)再增添任何特色。此後,我開始注意到程式架構的重要性,也認知自己的不足。

學習的路上似乎永無止境,學習程式語言也是如此。以往學會了一種語言,就樂不可支。後來野心漸大,學了好幾種程式語言(和一些API),更是自鳴得意、不可一世。後來,發現了"設計模式"這東西,卻又顛覆我所有的思維,開始致力於撰寫"優美"的程式碼。

學習程式語言至此,開始邁入藝術的殿堂。

關於設計模式的起源並,不是一群天才(也許真的是天才)苦心專研所創造出來的。他是觀察以往撰寫程式的經驗,和一些良好而經典的模式,加以命名,並給予定義,最後集大成於一身。與其說設計模式是被"發明"出來的,倒不如說這些模式是被"發現"出來的。所以看的時候往往搞了老半天,原來不過是以前常用的一些方法,還講的一副很專業的樣子。

話說回來,設計模式讓我如此流連忘返、樂不思蜀的主要原因,還是在於我總想完成一套遊戲的框架。不管在學習DirectX、openGL、MDX(都是一些繪圖用的API)或是最近的Silverlight,我都不忘要套上設計模式。

雖然,使用設計模式有時讓我更難下筆,再加上"優美"程式設計的總總守則,常讓我在彈性與簡易、速度和空間、抽象和直覺間作取捨(tradeoff)。搞到最後,胎死腹中或是藏諸名山的作品/半成品比比皆是。儘管如此,我還是投注了大量的時間在上面,縱使它和我目前的資工領域沒有很大的關係,但卻是維繫了我與程式設計的一條紅線,也讓我在本行中的表現(僅限於程式設計)維持在中人以上。

最後,補充一下最討人喜歡的程式設計師該具備哪些特質,原文請參見這裡

一、熱愛寫程式。
老闆當然是喜歡不會抱怨的員工。

二、能把事情做好。
不然規畫再多也沒用,能真正處理問題在是最終要的。

三、持續重構。
關於重構......其實你我都有在作,廣義的說就是改寫程式碼,但是裡面有一些能夠避免(重構時)產生臭蟲的技巧。

四、使用設計模式。
我就說要用吧(不和第二點衝突的前提下)!

五、撰寫測試。
避免錯誤。

六、使用現有程式碼。
別重複製作輪子永遠是程式最高領導原則。

七、重視可用性。
為了第六點。

八、撰寫可維護的程式。
利用三、四、五點。

九、會使用任何語言寫程式。
無劍勝有劍。

十、知道電腦基礎科學。
演算法和資料結構。

沒有留言:

張貼留言