> ==>發信人: Shun.bbs@bbs.iim.nctu.edu.tw (傳說中的不死鳥), 信區: programming
> > > 這裡是講OO還是講OOPL?
> > 感覺上OO對我而言 只是把實物化成虛擬的東西來表示而已
> > 在程式設計手法上,感覺上就是多了可以"簡易的"加入function的struct
> > (不用OO也可以)
> > 說真的這串討論到最後,我都不知道在講啥
> 正常的感覺....
> Object Orient Programming Language 僅止於 programming language 描述的一種方法
> 有人硬要跟 Operating System 涵蓋的主題牽扯上關係, 自然會霧煞煞
> 分散式物件的東西也硬要跟描述語言的方法扯上關係...自然也是霧煞煞
> 更扯的是連中央處理器以及硬體中斷的處理也可以跟軟體描述的方法硬扯在一起
> 這跟在 programming 版討論 Gundam 是差不多程度的
====
OOPL 離不開 Object 的概念, 而且更要命的就是完全強調與遵守(data +
function-code)的封裝理念, 這一點是非常的具體嚴謹, 她在語法上不會讓一個
object 內的 data 所在的 reference address/pointer 可以經由計算就隨意能
指到 其他 object 內的 data . 所以語法會圍繞著這個限制來提供各種合乎這
個理念的 name space 的關聯使用與處理.
這就是 OOPL 不太好學也與眾不同的根源. 封裝讓傳統慣用 C 可以用
pointer 自行隨意 access data 的人不容易接受, 所以就不往實體層的方向說明
會改用強調 OOD 這種更上層更抽象化的其他理念與優點來突顯, 很自然就會往只
講 OO 這種可以一筆帶過的更高階的抽象形式走.
但更高階就會更接近要解題對象的特質, 此時 "封裝" 的 object 間 可以不
必循序的特性就會被發現, 但這是伴隨 封裝 的低藕合度而來的. 這就是 "非循
序" 的爭議. 但 "無關不循序的事" 強迫使之按序先做或後做本來就是可以的.
只是本來是一定要循序的, 若被用非循序的平行去處理, 那可是會出錯的. 如果
分析是完整與正確的, 就不可能會忽略該循序的要求. Object 之間並不全然都是
循序也不全然都是非循序, 而是兩者在不同 object 間都存在.
在 object 間是否允許非循序的對策上, 像 C++ 這種 OOPL 採用的對策就是
強制使之循序的做法. 但 Java 就以 distributed object 與 Remote Method
Invoking 等企圖使原來具非循序特性的部份特質得以被利用發揮.
用分散在各機器上執行的 object 來對映執行實體, 對於 object 的封裝要求
就很容易直接了解. 但通常在單機上, 這會被誤會 OOPL 需依賴多工的 OS , 這就
會跟程式語言一向是獨立於 OS 的立場有所衝突. 所以併行與平行的特質在某些
OOPL 語言就寧願完全不提也不支援. 至於 Java , 因為自備的 Java Virtual
Machine 就能提供中斷與多工的功能, 也就能支援併行/平行.
--
◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234