2007年2月13日 星期二

沒有銀彈,沒有萬靈丹

在某種程度上,我們都希望能夠擁有各方面考量都最佳解的一個選擇,但是事實上,這樣的選擇並不存在,當你選擇了A,A有可以帶來某方面的好處,但再另一些方面來講,可能就是它的缺點,而當你選擇了B,他可能可以補足A的缺點,但是卻不善長A所善長的,這時候我們就必須做出選擇,例如將兩者結合補足各方面的不足,但是這樣會帶來新的問題,例如程式的複雜度增加,體積變龐大等等,而成功的決策,就是能夠找到最適合的選擇,而不是去要求一個萬靈丹,能夠解決每樣問題的選擇。

選擇的過程往往是困難的,取捨之間,理性、非理性的因素都會影響到決策,程式設計師的壞毛病之一,就是會對於某些選擇有特別的喜好,對於某些選擇有些排斥,例如我們常常對於使用別人寫好的程式碼抱持著一種懷疑的態度,因為那程式碼並不是自己寫出來的,只知道要如何去使用,而不知道其背後的細節,一種"不知道"的不安便由此而生,此時就會產生各種疑文來質疑這些黑盒子,它效率夠好嗎? 它夠穩定嗎? 等等問題,就如我一開始遇到STL,我認為STL速度可能很慢,寧可自己寫資料結構來使用,可是到後來我發現STL效能好得很,就用STL替代掉土法鍊鋼的方式,所以,我們必須盡量以理性的方式去對待選擇。

沒有留言: