> ==>發信人: renderer.bbs@ptt.cc (rendering), 信區: programming
> ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言:
> : 自認對 OO 精通的人應該要能回答 gsj 的質疑才是, 否則 OO 就如其音,
> : 黑黑來, 黑黑去, 黑壓壓的一片.
> OO 具有封裝性呀
封裝是強調不可分割, 有外防的包莢, 事實上她不像 Mornitor 有 kernel
mode 的保護, 因此她採的策略是 information hidden . 這是她不能隨意
使用 pointer 跨 class object 使用莢內資源的原因.
保護未必要黑漆漆的, 是因為根本沒有透明的防護罩, 事實上她跟普通程
式一樣也沒有特製的防護罩, 只是採用 "不必明說" , 直接指向切入的語
法就不支援, 或者很難用.
> : 物件導向 或 OOP 不知是否有特別強調 "非循序式" ? 印象中至少不是被
> : 列為是 parallel programming 或 concurrent high level language .
> : 學 OO 的要怎麼回答 ?
> OO 全然沒有推翻循序性
> OO 是「建立在循序性上」的「程式碼管理哲學」與「工程實務」
事實是 "毫不相關的片段 code thread" 本身就能平行, "你走你的陽關道, 我
過我的獨木橋", 誰先誰後互不影響, 這是實況. 加上作業系統 multi-process
支援或是分散不同地的電腦都能做這種 "無關的平行".
OOP 可以讓這類片段的 code 與用到的 data 成包莢式的各別獨立顯現,
傳統的命令式語言雖然也是可以這樣做, 只是不明顯, 必須刻意的處理.
目前 OOP 的語法並沒有相關式平行需要的同步機制, 所以她不是 CHHL ,
但她可以適應分散在不同電腦的處理, 在設計思考時, 是不必一定得按特定順
序想, 所以會被誤認為可能是任意的非循序式. 若把這種無關的非循序, 擴大
成可以在任意相關下也能平行, 那就會越界變成無序.
採用訊息傳遞, 把相關的 code , data 封裝在一起就是為了將來能直接用
在分散的電腦上執行.
> : > 寫了那麼久的程式你還是不懂什麼是Abstraction...
> : > 以及OO跟event driven 是兩回事..
> : > 我看你還是回去寫你的assembly language吧...
> : 在 object 封裝的內部對 data , code 是可以雜亂交錯, 你中有我,
> : 我中有你那樣的混在一起, 還是分堆但包在封袋裡 ? 顯然 gsj 指出
> : 了 OO 讓人看不清楚無法理解的一面.
> OO 的物件為雜亂交錯的 data 與 code 提供了單純而平面化的操作介面
Class Object 內部的 code , data 甚至 stack 還是分堆擺的, 用了高階語
言的 compiler 就會這麼做. Class object 間的界限也不必用到像 process
間隔離的 memory protection & separation , 也就不會增加多餘的工作,
她靠的是 information hidden .
> : 如果程式語言與電腦的實體是不對稱的, 那這個質疑是有道理的, 這
> : 不能用 abstraction 一筆帶過, 否則會被懷疑 OOP 是有效率的嗎 ?
> : 不然就是效率的稍微(這也得具體說明)犧牲, 可換來那些更值得的東
> : 東 ? 譬如 Interactive 的 interpreter 相對於 compiler , 另外,
> : 就是改善的趨勢會是甚麼 ? (譬如使用中間碼的 interpreter)
> OO 不是在討論程式執行的本質 循序化的執行早已是本然
> OO 討論的是 data 與 code 的封裝性 物件的責任 物件間的關聯 介面的抽象性 ...
> 這些東西並不違反任何實體特質
> 討論的層次有所差異
> 「程式語言與電腦的實體是不對稱的」? 我們得先思維這個命題是否正確
> OOP 沒有損害到程式的執行效率
> 相同的事 要用循序性語言來做 不見得會比較有效率
> 會慢是來自於 design
> 你不能說我要讓程式碼受良好管理而不付出任何成本
事實上, 好的 OOP implementation 不會讓程式語言與電腦實體呈現不對稱的現
像, OO 先天就是能把 相關的 code , data 擺在分開來的同一電腦上. 有從屬
關係的 object 會因繼承性而儘量放在可以快速拿得到的地方.
> : 其次, 在那些地方或條件下, OOP 可以像一般的 C 使用 pointer
> : 那樣方便的 reference structured data (如 array 或 record) ?
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234