討論區快速選單
知識庫快速選單
討論區最近新進100則主題 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
不要從程式語言學習「物件導向」!
更改我的閱讀文章字型大小
作者 : kenming_wang(矇矇) 人氣指數超過30000點
[ 貼文 40 | 人氣 34501 | 評價 150 | 評價/貼文 3.75 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/3/4 下午 11:38:23
全文請參考:
http://www.hsdc.com.tw/modules/newbb/viewtopic.php?topic_id=39&forum=1&post_id=109#forumpost109

許多技術人員係從物件導向程式語言(OOP, Object-Oriented Programming Language)來學習物件導向,從 OOP 的角度來學習物件導向時,經常會把它當作是一種 "技術",當作 "技術" 時,你會想去 "用" 它,而若當你無法 "應用" 在現實面時,就會覺得 "不好用"、"難用" 、理論無法與現實結合" ...等。

把物件導向當作 "技術" 的最大的問題是:你永遠不知道為什麼你要使用物件導向!

幾年前,微軟的 COM 剛盛行時,有些是 "微軟技術代言人" 會在其技術文章裡提及:COM/3-tier/物件導向技術是增進系統效能(Performance)的最佳解決方案;採用上述提及的技術可以加速系統開發。甚至到現在,我仍常聽到:採用 EJB(Enterprise Java Bean) 是實現物件導向的最佳利器、可以讓開發者 "ReUse" 所設計的元件(Component)、節省開發者的開發時間。

嘿,這些 "似是而非" 的論調,幾年前從技術人員口中聽到是如此,現在聽到的還是如此,說真的,我是覺得,還真是一點自我的反思都沒有。我每次對這些技術人員的反駁就是:有什麼方式會比 Client/Server 直接連線至資料庫來處理還要快? 有什麼開發方式會比你使用 Client/Server 拉一拉表單,然後直接至資料庫 "撈" 資料還要便捷? 當然,技術人員的直覺反駁是,Client/Server 無法應付數百人以上同時間的交易處理,是啊,沒錯啊,Client/Server 有些假設點:同時上線使用者不超過 200 人、系統的需求不常變動。

但,重點是,系統效能與你採用 COM/EJB/物件導向有何關係? 那是屬於系統資源(Resource) 的控管處理,諸如 Resource Pooling 的機制、Transaction Management(還包括交易物件的設計)的處理,Database "Performance Tunging"、頻寬的資料傳輸量的處理... 等。

而採用物件導向/COM/EJB 可以節省系統開發? 那更是可笑! 採物件導向可更是耗費開發成本,開發人員每當一想到為什麼要在中間層對物件分門別類,然後實做一個功能要串上好幾個物件的傳遞才能完成工作,一直無法接受這種觀念,如同 Martin Fowler 所提:你永遠無法讓物件導向的新手們瞭解為什麼要採取這種分散式的設計,你只能要求他們如此做,幾年後,他們會突然頓悟,腦袋有如重生一般。所以,採取物件導向可是要花腦筋在軟體設計上,而且若是實做在所謂的實體元件的機制,如 COM+/EJB,那是為了系統分散與交易機制的處理的元件規格,所以,實做上可是更為麻煩,一點也不會減輕開發者的實做的負擔。

所以,為什麼要使用物件導向? 因為,物件導向是一種思維,是一種哲理,是一種典範,甚至是一種生活觀,你需要綜合相當多的知識,蘊化為 "智慧",來協助你如何應付與應對軟體的 "善變",並能提供具體的解決方案。

...
---------------------------------------------------------------------
課程資訊:
1. UML2.0 實務操作入門 (2006/03/11~12)
http://www.hsdc.com.tw/modules/eguide/event.php?eid=11
2. 使用案例寫作實務、應用與實現 (2006/03/25~26)
http://www.hsdc.com.tw/modules/eguide/event.php?eid=12


作者 : jonay(jonay) VC++優秀好手C++ Builder優秀好手C++優秀好手貼文超過500則
[ 貼文 887 | 人氣 8025 | 評價 5030 | 評價/貼文 5.67 | 送出評價 30 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/3/5 下午 09:43:02
看了真讓人生氣
打廣告就說打廣告
說一些似是而非的言論,騙騙外行人或是初學者
最後還被加入精華區(莫名其妙),而且還好幾篇

如果你真的覺得有理,請提出你的論點或經驗
一個理論或方法的成形,是經過全世界的程式師考驗的
不是一個人說說就算了

作者 : plutotw(pluto) 貼文超過200則
[ 貼文 444 | 人氣 7231 | 評價 220 | 評價/貼文 0.5 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/3/10 下午 08:28:53
>有什麼方式會比 Client/Server 直接連線至資料庫來處理還要快? 有什麼開發方式會比你使用 Client/Server 拉一拉表單,然後直接至資料庫 "撈" 資料還要便捷? 當然,技術人員的直覺反駁是,Client/Server 無法應付數百人以上同時間的交易處理,是啊,沒錯啊,

當 client 位於 internet 的另一端時,純 2 tier Client-Server 在中間必需加入 appilcation

> Client/Server 有些假設點:同時上線使用者不超過 200 人、系統的需求不常變動。

這樣的假設點不應該存在

 
>而採用物件導向/COM/EJB 可以節省系統開發? 那更是可笑!採物件導向可更是耗費開發成本,開發人員每當一想到為什麼要在中間層對物件分門別類,然後實做一個功能要串上好幾個物件的傳遞才能完成工作,一直無法接受這種觀念, 。

舉個例子,你是想對一間公司發出 指令/需求 ,還是要對這間公司的那一課,那一組,那一個承辦員發出 指令/需求
換句話說,你是要在 N 年後記得對該公司 提出 需求, 還是要對該公司的 那一課,那一組,那一個承辦員 提出 需求

> OOP,是讓軟體人員解決問題時,所需使用使用到的 "工具",它就是工具,就是一種手段而已!

整篇文章充滿著自己所知領域的怪異觀點,如果 將 inheritance 不是視為 OOP 的主要精神的話,一切都不必說了;
polymorphism 與 inheritance 是一體兩面的,可是純 OOA 或 OOD 如何看出這樣的關係甚或設計出這樣的架構,甚至抱著 OO 郤不用 inheritance ,或是限制 inheritance 的層數....

主要重點在於今天如果是商業交易應用,像是金錢,物流這種將資料由 table A ,搬至 table B 的簡易處理流程,說真的 OO 在這領域沒什麼特色,而且切學者就寫的出來,但是在其他領域呢 ?

OO 的強悍,在於用 inheritance 與 polymorphism 讓系統架構堅強,利用同一元件建立一套對等的系統(相似但功能可能是相反),維護郤很輕鬆,而且不只是 reuse ,甚至 新的系統功能可以回饋到舊系統,而且不管如何改 ,source 永遠都只有一份,不會互相干擾




作者 : jevoswang(jevos wang) 貼文超過200則
[ 貼文 379 | 人氣 3351 | 評價 880 | 評價/貼文 2.32 | 送出評價 4 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/8/21 下午 05:21:27
根本就是一個不會寫程式的人在說明物件導向的缺點

外行人發表的言論,雖然長篇大論,但是跟事實不符
作者 : member001(member one)
[ 貼文 178 | 人氣 0 | 評價 1150 | 評價/貼文 6.46 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/12/15 上午 09:30:26
>>不要從程式語言學習「物件導向」

學「物件導向」時要先弄清「物件導向」,未弄清楚前別編程。是這意思嗎?

>>如同 Martin Fowler 所提:你永遠無法讓物件導向的新手們瞭解為什麼要採取這種分散式的設計,你只能要求他們如此做,幾年後,他們會突然頓悟,腦袋有如重生一般。

所以Martin Fowler說錯了!新手不該動手啊!


但先有蛋還是先有雞?

OOP是概念,但也是技術。

書生呀書生!
作者 : propsychokiller(Ben) Java優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過1000則人氣指數超過10000點
[ 貼文 1380 | 人氣 20444 | 評價 6650 | 評價/貼文 4.82 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/12/29 上午 03:34:33

>>>不要從程式語言學習「物件導向」
>
>學「物件導向」時要先弄清「物件導向」,未弄清楚前別編程。是這意思嗎?
To learn recursion, you must know recursion first.
作者 : pchackerchris(ChocoboChris)
[ 貼文 16 | 人氣 2963 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/23 下午 11:06:04

我程式學的自認不怎麼樣,但是我要反駁這個看法,或許物件導向一開始只是觀念,但是當我們在程式語言中的應用則是技術,物件導向的撰寫方式,對於初學者來說可能很難,但是這並不是"耗費開發成本"的理由,當一個程式設計師將物件導向的撰寫方式應用在大型的程式上,其節省的成本,以及運用的效能都比非物件導向的方式好;並且在撰寫過程中,也方便思考,減少錯誤的產生。以上是我個人粗淺的看法,如有錯誤,請各位指正,謝謝!

只有理論不足以構成實際的物品,只有技術也難以創造需要,因此我認為,程式設計是理論和技術的融合與應用,這門學問,不是隨便看看書就會的。
作者 : propsychokiller(Ben) Java優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過1000則人氣指數超過10000點
[ 貼文 1380 | 人氣 20444 | 評價 6650 | 評價/貼文 4.82 | 送出評價 13 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/6/24 上午 02:04:05
.NET Framework 也是用OO 很多的layer 疊出來的
J2EE 也是阿
不知道開版大要想什麼?
作者 : azrael0079(az)
[ 貼文 5 | 人氣 1 | 評價 50 | 評價/貼文 10 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/7/5 下午 06:06:05
我怎麼看都覺得原文作者寫的不錯啊,但是負面評價似乎不少,好像是標題出了問題

作者只是想說「不要為了OO而OO」,個人覺得真的沒錯
OO的程式比較好懂、好維護、好擴充,對大型且長期使用的程式的好處是不像傳統程序式語言,
愈寫愈大、愈大愈複雜、愈複雜愈難維護及擴充
但是如果只是簡單的小程式小功能,本身就好懂也不需要維護,殺雞用不到牛刀。

但是標題跟內文好像沒什麼關係(聯結我是沒點進去看啦)
如果說學OO不要從程式語言來學,那要怎麼學咧,自已看OO專書就會懂嗎,看不懂的啦

學OO還是要從程式語言來學才有感覺啊

如果怕自已學會OO之後會亂用OO,我只能說:等你真的學會OO再來擔心吧
作者 : shing819(Clier) VC++曠世奇才貼文超過1000則人氣指數超過30000點
[ 貼文 1740 | 人氣 40353 | 評價 8630 | 評價/貼文 4.96 | 送出評價 84 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/7/5 下午 11:40:59

明顯打廣告,這行為很差勁,品德差不適合從事資訊業,
近幾年資訊業素質真差.
作者 : nietzsche(尼采) VC++優秀好手C++優秀好手貼文超過500則
[ 貼文 501 | 人氣 3089 | 評價 2900 | 評價/貼文 5.79 | 送出評價 5 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/13 下午 01:48:55

>而採用物件導向/COM/EJB 可以節省系統開發? 那更是可笑! 採物件導向可更是耗費開發成本,開發人員每當一想到為什麼要在中間層對物件分門別類,然後實做一個功能要串上好幾個物件的傳遞才能完成工作,一直無法接受這種觀念,如同 Martin Fowler 所提:你永遠無法讓物件導向的新手們瞭解為什麼要採取這種分散式的設計,你只能要求他們如此做,幾年後,他們會突然頓悟,腦袋有如重生一般。所以,採取物件導向可是要花腦筋在軟體設計上,而且若是實做在所謂的實體元件的機制,如 COM+/EJB,那是為了系統分散與交易機制的處理的元件規格,所以,實做上可是更為麻煩,一點也不會減輕開發者的實做的負擔。


其餘廢言不予引用.
文中,"採物件導向可更是耗費開發成本", 是以多少時間來看待耗費開發成本這件事情?
好像樓主的目標只以"開發單一 app 而在完成, 賣出之後即捨棄不再維謢"為前題, 那這
句話不假...以這樣的前題, 我不會把重心放在 OO 上面.
但樓主的目光如此短淺, 志在開發所有一次性, 用完即丟的 app, 然後此大談闊論要大家
去習你說的東西, 是不是所有上完課的人都會變成跟樓主一樣, 短視近利?
這算是"號呆課程"嗎? 上完即變"號呆" ?
作者 : okane(龍)
[ 貼文 154 | 人氣 3211 | 評價 410 | 評價/貼文 2.66 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/12/13 下午 03:29:54
打廣告就打廣告
大家別再回應了
讓此篇沉下去吧

此刻我的回應也成了幫凶
...... (我不是故意的 >_< )


 板主 : Clark
 > 物件導向程式設計 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 物件導向程式設計 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
物件導向程式設計
1 Arthur 180 
2 藍色LED 150 
3 長長 100 
4 Linkin 100 
5 love seeker 100 
6 Raymond 90 
7 Nets 80 
8 nop 70 
9 Huah 70 
10 矇矇 60 
物件導向程式設計
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.046875