作者reader (讀者)
看板CSSE
標題Re: 關於這個板討論的問題
時間Thu Jan 6 05:39:57 2005
※ 引述《Eventis (何逸凡)》之銘言:
: 呃,我對這點有一些不同的看法,
: 如果說核心就指程設的第一步的話,
: 因為以前的老師在學OO的時候告誡我一點,
: 就是在設計一個物件導向的程式時,不應該把演算法放第一位
: 並不是演算法不重要
: 而是因為,先有了物件,才有功能
: 而不是先想有哪些功能,才拼湊一些物件
: 沒有功能,又要從哪裡生出演算法呢?
: 畢竟一個好的物件,
: 就應該是"很自然"(天知道這是什麼鬼0.0")的彷彿他就在那
: 只是寫程式的人發現它罷了=.="
: 雖然說引用老師的話是太過教條,她講得也很玄虛
: 不過實際上的經驗卻也顯示,太過以功能為分類基礎的模型,
: 雖然表面上有著OOP的樣子,但可再利用的程度卻不高..Orz...
: 但,如果是functional programming的話......XD
其實不管是 structure programming, functional programming 或是
object-oriented programming 都一樣。
因為從電腦科學到軟體工程的轉向,並不是在這個層次上的事情,而是
方法論的轉變。過往電腦科學的方法,都是問題求解的形式,然而軟體
工程方法卻是在建立問題域到解答域的對應,並且更進一步分別已知和
未知、已解和未解的問題,所以,就算你是用 LISP, ML 或 Haskell 等
函數語言來寫程式,仍然會使用程式庫,仍然會用各種方法抽絲剝繭,
分析軟體結構,規劃軟體設計。
也許我們關注的焦點會放在未知或未解的問題上,但它卻未必是軟體的
核心,甚至是可以評估割捨的成份,系統的整體作用,不會因為個別的
演算法優劣或特定功能而決定,也唯有這樣才是一個好的系統。
或者換一個比方來說,電腦科學是造槍鑄炮,而軟體工程是行軍打仗,
你要行軍打仗就得重視後勤補給、組織管理、戰略戰術,武器雖然相當
重要,但不是唯一重點,對外的戰略目標達成,對內的建軍思想實踐,
才是時時要關注的事情。
就這個意義上,許多人關心軟體工程,都把焦點放在物件導向或是開發
方法上,其實和只重視演算法和資料結構一樣,也是頗嚴重的偏差。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.222.173.26