※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言:
> 自認對 OO 精通的人應該要能回答 gsj 的質疑才是, 否則 OO 就如其音,
> 黑黑來, 黑黑去, 黑壓壓的一片.
那你何時看到gsj 回答大家的質疑了 ?
板上跟gsj 論戰十幾回合的人至少數十人有了 隨便用google查一下就可以查到
有多少人用了多少口舌來說服gsj OO的好處
結果呢? gsj 根本就沒看懂, 還是一樣用自己發明的一套理論與詞彙在自爽著
所以後來大家都學乖了. 對於gsj的post.. 看看就好 當笑話看 不用太當真..
而我勸你.. 別稱呼gsj為大大 ,之前有個網友稱呼gsj為大爺,結果被懷疑成是
gsj的分身而遭流彈波及, 前車之鑑啊,
> 物件導向 或 OOP 不知是否有特別強調 "非循序式" ? 印象中至少不是被
> 列為是 parallel programming 或 concurrent high level language .
> 學 OO 的要怎麼回答 ?
> > 寫了那麼久的程式你還是不懂什麼是Abstraction...
> > 以及OO跟event driven 是兩回事..
> > 我看你還是回去寫你的assembly language吧...
> 在 object 封裝的內部對 data , code 是可以雜亂交錯, 你中有我,
> 我中有你那樣的混在一起, 還是分堆但包在封袋裡 ? 顯然 gsj 指出
> 了 OO 讓人看不清楚無法理解的一面.
我想並非gsj 指出OO讓人不清楚的一面
正確的說是gsj的言論讓人發現 "他根本不了解OO".
由不了解的人去解釋 結果當然就是更讓人不了解
> 如果程式語言與電腦的實體是不對稱的, 那這個質疑是有道理的, 這
> 不能用 abstraction 一筆帶過, 否則會被懷疑 OOP 是有效率的嗎 ?
> 不然就是效率的稍微(這也得具體說明)犧牲, 可換來那些更值得的東
> 東 ? 譬如 Interactive 的 interpreter 相對於 compiler , 另外,
> 就是改善的趨勢會是甚麼 ? (譬如使用中間碼的 interpreter)
> 其次, 在那些地方或條件下, OOP 可以像一般的 C 使用 pointer
> 那樣方便的 reference structured data (如 array 或 record) ?
要寫有效率的oo 請用C++, 同時看點C++名著
"The C++ programming language"
"Efficient C++"
"More Efficient C++"
任何工程都有trade-off, 用一點效率去換得更容易懂/更好maintain的系統
是有其價值的, 否則不會有high level language, RAD的出現
程式是寫給人看的, compile出來的machine codes才是給機器看的
要給人看就要有適合人類思考的方式 . 要知道machine可以記住所有
記億裝置可以儲存的資料, 人類可不行, 所以你看到"人"寫程式
會給記藝體位置取名稱, 方便記億與理解, 也會用人類慣用的運算式
來表達數學運算過程.. 而不是用add, sub, mul, div..
還有, 人會歸納分類, 解決問題的時候會了解"適當程度的細節"
來思考 但過度的細節反而有礙思考, 因為專家說人的注意力平均
只能同時注意七項事物. 封裝跟抽像化幫我們解決了這項難題
人類也會類化, 你如果會用筆寫字, 請問用原子筆/或是鉛筆有何差別?
沒差吧 一樣是用手拿著寫字, 只是鉛筆沒鉛了要削, 原子筆沒水了要換筆心
所以你只要是拿筆寫字 不管什麼筆你都會寫
這些觀念類比到OO就是多型與介面的觀念
話就講到此了
如果你還是覺得程式非得要與硬體"對稱"的話
那你還是改行寫driver 吧
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: NK219-91-72-209.adsl.dynamic.apol.com.tw