作者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