精華區beta CSSE 關於我們 聯絡資訊
※ 引述《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