精華區beta Programming 關於我們 聯絡資訊
※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言: : 自認對 OO 精通的人應該要能回答 gsj 的質疑才是, 否則 OO 就如其音, : 黑黑來, 黑黑去, 黑壓壓的一片. : 物件導向 或 OOP 不知是否有特別強調 "非循序式" ? 印象中至少不是被 : 列為是 parallel programming 或 concurrent high level language . : 學 OO 的要怎麼回答 ? 目前電腦架構就是建築在循序上面 這不論是OO非OO都是一樣沒辦法改變的 : > 寫了那麼久的程式你還是不懂什麼是Abstraction... : > 以及OO跟event driven 是兩回事.. : > 我看你還是回去寫你的assembly language吧... : 在 object 封裝的內部對 data , code 是可以雜亂交錯, 你中有我, : 我中有你那樣的混在一起, 還是分堆但包在封袋裡 ? 顯然 gsj 指出 : 了 OO 讓人看不清楚無法理解的一面. 將資料跟程式綁在一起 是OO的原則之一 以抽象概念來看 一個物體的性質(名詞, property) 動作(動詞, method) 將之綁自一起是符合抽象概念想法的 但這並不表示她們之間是雜亂無章的混在一起的 我舉個最簡單 目前很常被使用的例子 現今的商業網站架構 大部分都已經使用三層式架構 分成 表現層 邏輯層 資料庫存取層 而在資料庫存取層會實作與資料庫溝通的邏輯 並且將資料庫得出的資料物件 回傳給邏輯層 這樣的設計 會有每個物件代表資料物件 這些資料並不會雜亂無章的混在一起 只要設計得當 並且引入設計模式 以及軟體工程方法 例如重構等等 程式可以一直發展下去 並不會因未到最後變的太複雜 而無法維護 這就是OO想嘗試解決的一個問題 : 如果程式語言與電腦的實體是不對稱的, 那這個質疑是有道理的, 這 : 不能用 abstraction 一筆帶過, 否則會被懷疑 OOP 是有效率的嗎 ? : 不然就是效率的稍微(這也得具體說明)犧牲, 可換來那些更值得的東 : 東 ? 譬如 Interactive 的 interpreter 相對於 compiler , 另外, : 就是改善的趨勢會是甚麼 ? (譬如使用中間碼的 interpreter) : 其次, 在那些地方或條件下, OOP 可以像一般的 C 使用 pointer : 那樣方便的 reference structured data (如 array 或 record) ? OO換來的東西 就我而言 有如宗教信仰一樣 信者恆信 不信者恆不信 因為這些直接帶來的效益加上周邊效益 我並沒有辦法量化秀給任何人看 因此我只能採取比較消極的態度 慎選合作夥伴 只要我的夥伴是相信我的 那我相信使用OO, UML, 設計模式, 重構 等等軟體工程方法 對我門團隊而言就是能夠帶來最大效益的 OO以及非OO 我們可以從市場上另外一個現象 PHP(ASP) & JAVA(ASP.NET)看出端倪 我相信大部分使用PHP(ASP)的專家 絕大部分是用Procedure方式思考的 一般情況下 HTML跟程式邏輯是混在一起的 若是使用到了J2EE, Java Bean, 或是ASP.NET開發方式 我也相信絕大部分是用OO方式來開發的 這時候可以引入MVC patern, 還有很多零零總總的設計模式 來幫助架構更容易維護 更容易被理解 我希望從這個現象 來討論幾個問題 1. 就我在業界的了解 使用PHP的比例是很高的 我相信這能夠代表著非OO語言比較容易上手 甚至到現在還是很多人在使用ASP 台灣網頁翻一下就知道 使用到ASP.NET的網站非常少 因此我覺得在上手程度來講 若是沒有一點程度 貿然使用OO並不會節省多少時間 或是帶來多少維護上的好處 光是閱讀文件 理解架構就耗掉太多時間 2. 循序式的語言很有可能就如gsj講的 是不會被消滅的 反而現在最大宗的Script Language 是PHP也不一定 因為連高中生都可以拿來寫網站 但使用人數多寡 對我而言是沒意義的 我也不想討論這個問題 Fortran會消滅嗎?Lisp會消滅嗎?總是會有人 或是老學者 會一直用下去的 就算OO有著效率上的缺點 但是在設計上的優點 gsj你是不能夠絕口不提的 你的論點永遠只繞在 "電腦的設計本質是循序" "因此OO無用" 別的網友也講到了 你並沒有想要嘗試了解抽象化等等抽象概念 這樣子的討論永遠沒辦法有交集 你只特定攻擊某種類型的問題 但是另一部分的議題你是充耳不聞的 我的學位除了資訊科學之外 還有生物學位 我相信對人類而言 模仿 抽象的思考方式 是讓人類進步的主要動力之ㄧ 因此OO這種抽象化的萃取方式 是很符合人性的 就算在硬體本質上不對應 但對於人性對應 不是嗎? 其實還有很多議題可以討論 但我相信這是永遠都戰不完的 除非gsj你肯接受其他觀點 想要嘗試跳脫你的小圈圈 否則我覺得我寫再多都沒意義 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.155.71