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