天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

為什么OO方法是有本質缺陷的?

  今天我在這里說OO表達能力不足, 估計沒人會信, 但是這真有可能是問題的核心所在, 如果是這樣, 那么用歪了也罷學習困難也罷, 錯不在使用者和學習者, 而在于OO自身(這種質疑也不是一天兩天了,不過大多數言論都是外延法,強調主觀因素, 所以不具說服力)。

  這篇文章中的思路首先要歸功于songcan兄弟刨根問底的精神和腦袋兄與我的討論和對我的幫助。

  廢話少說, 說個關鍵問題吧。 OO最常見的就是 Teacher.Students, Teacher.Speak(), 也就是說Students和動作Speak作為Teacher的組成部分, 是我們關注的切實存在的概念, 但傳統的OO居然沒有給出向*系統*描述這個概念的表達方式。 是的, 你我都理解字面意思Speak, 可問題是這個概念在系統內不能表達, 我們就無法用其它機構來處理這些概念。

  為什么C#加入delegate以后, 方便了許多? 因為Speak從某種意義上, 可以單獨提出來, 作為一個在系統中的實際存在, 并且開始可以對它進行有限的操作了。但這還遠遠不夠, 因為Speak是作為Action()存在, 它自身在業務中的獨特性沒有特別好的方式去表達。

  另外一點就是動靜間的鴻溝。 C#在Strustroup這些人的看法里, 并不屬于真正的靜態語言, 但是它給出了一個靜態的外表。當我們進行描述時使用的是靜態的方式, 我們就必須有靜態的方式處理它們, 否則這里面就存在裂縫。 如果大量的反射, 那么我們何必不直接使用動態語言呢?

  JS大家都接觸過, 比如

  obj["someAction"] = function() {}
  obj.someAction()

  那么C#拿著反射出來的MethodInfo搞來稿去,和JS的方式比丑陋的多, 這樣的方式有必要去學嗎? 如果一門靜態語言, 大家越來越多的是在使用這些, 或者通過那些框架、工具間接的使用這些, 這難道說明這門靜態語言, 或者基于這門語言的OO方法, 越來越強大不成? 只能說這種方法因為自身的問題, 無法繼續提供足夠的支撐了, 不得不求助于外部設施。

  說實話, 如果一個語言, 表達重要的概念用到的那種表達方式, 比如類型, 它本身不能被操作的話, 那么它存在問題是必然的。 C#可以操作, 但提供的主要操作方式, 都在運行時, 通過反射。 可我們表達概念時, 卻在編譯前, 也就是說我們的表達注定是不完整的(或不直接的)。 反觀動態語言, 為什么越搞越火, 還不是因為人家干脆都放在運行時了, 完整了; 而且在表達方式上優化過, 直接在語言層面支持, 這不是反射所能比的。

  如果我每句話缺幾個字, 大家感覺如何? 一個不完整的表達, 你覺得什么樣的工具或者方法論, 讓你能夠毫無障礙的完成模型的建立呢?

  P.S. 再次感謝以上二位和與我討論過的各位。

  另外, F#我也試過了, 這些問題全部存在(媽的,終于理解SICP某一頁的小注釋中質疑流行語言的類型系統的原因了), 根本是白搭: 實際上這本來與是否FP也沒啥聯系, 只是我希望作者按照腦袋兄跟我提出的那種意圖和方式, 在編譯器的層面做了一些改良。我的最后一線希望成了夢幻泡影。

  我現在的建議是,要么選擇一門動態語言, 要么選擇C++和D(其實C++是個很差的選擇); 如果暫時不能更換, 那就不要考慮太多了, 承認問題的存在, 并且盡量彌補就是(似乎.NET平臺上的語言目前就是這種狀況, 我自己也是在鑒于現實原因沒法換的境地)。

  Update:在這篇文章里似乎只針對了靜態OO不結合其它范式的情況下類型系統造成的麻煩,看起來統稱為OO的本質缺陷似乎不妥。但實際上,避免了類型一棍子打死式的約束的、可以修改對象的語言只是把問題換了一個地方。它們的麻煩不同,但我初步認為,在那個模模糊糊的深層次上,根源是相同的。

  我在上面推薦動態語言,只是在針對目標,問題僅僅存在在表達能力不足時的一個選擇。而且是不是動態了或者其它XX了,表達能力就完善無缺了,這也有待考證。這個問題容我思考一陣子再來掰吃。

  另外,不要把結合了其它范式的OO混到這個問題里來看,能力來自于哪里,如何得到的,這是一個需要分辨的事情。更加多余的我想說的就是,是否存在概念或任何其它東西聚合的實例,這樣的東西就可以叫做OO了?那確實,如果把什么東西都當成OO,OO這個詞也就利于不敗了。一個簡單的C Struct,你可以把它叫做對象嗎?如果可以,這就是OO了嗎?

  所以我想,什么是OO,至少什么是OO的當前環境下的解釋,還是要弄清楚的。之所以更新這段話,是因為參看了一些古老的爭論和某些高人高論的反復;覺得很多事情是在SB的基礎上,進行各種NB的推論。這樣確實,周游世界的結果最終就是回歸原點,“返璞歸真”。也許我們覺得自己的思想境界提高了,但其實仍舊是一種屁話。

  這樣的研討,除了應該得到的,比如了解過的各種東西使用的更加流暢,就再無其它建樹了。因為該噎住你的地方仍舊在那里,僅僅是我們覺得“自然”了或者認為這是“問題本質帶來的復雜”罷了。而多少“自然”的東西最終不自然了呢?


  最后重申一遍: 不要因為OO存在這樣那樣的問題, 就放棄OO的嘗試。 我的想法是, 作為一種當代最流行的方法, 沒有一定程度的了解是不行的, 就像牛頓定律一樣。 所以我倒是認為, 對OO的深入思考和練習, 雖然一時疑惑, 也絕非沒有好處的; 尤其是當我們知道它可能存在問題這一點, 就更可以放開心態了。

  過去一個高人對我說, 想學好數學先學好數學史; 我數學史不咋地。 今天我要說我們有一個大好機會, 因為我們就在歷史里(這個歷史看來還要持續幾年); 如果我們認為OO不過是個大忽悠,不屑于學習OO體現了自我相對于云云大眾的明智, 那么明天會如何, 就不好說了。

  剩下的, 就是等腦袋兄的編譯器小改款出爐了, 大家一起拿鞭子抽他干活...

it知識庫為什么OO方法是有本質缺陷的?,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品爽爽久久久久久蜜桃网站 | 99久久久国产精品免费蜜臀 | 中国国产不卡视频在线观看 | 亚洲国产夜色在线观看 | 久见久热 这里只有精品 | 无码AV动漫精品一区二区免费 | 天天爽夜夜爽夜夜爽 | 亚洲2017天堂色无码 | 中国老太婆xxxxx | 欧美精品高潮呻吟AV久久 | 本庄优花aⅴ全部在线影片 被滋润的艳妇疯狂呻吟白洁老七 | 亚洲青青草| brazzers巨臀系列 | 久久国产精品永久网站 | 久久综合久久鬼色 | av狼新人开放注册区 | 亚洲色综合中文字幕在线 | jlzz中国jizz日本老师水多 | 青青国产在线观看视频 | 99热国产这里只有精品6 | 99re6热这里在线精品视频 | 久久女婷五月综合色啪 | 看全色黄大色大片免费久黄久 | 麻豆成人啪啪色婷婷久久 | 亚洲精品无AMM毛片 亚洲精品网址 | 欧洲-级毛片内射八十老太婆 | 女人被躁到高潮嗷嗷叫免费 | 久久AV亚洲精品一区无码网 | 99久久爱re热6在线播放 | 亚洲中文 字幕 国产 综合 | 久久爽狠狠添AV激情五月 | 成人免费视频无遮挡在线看 | 美女拔萝卜 | 男生插曲女生身全过程 | 久久亚洲高清观看 | 国产成人啪精视频精东传媒网站 | 国产成人精品在视频 | caoporn 超碰在线视频 | 狠狠色狠狠色综合日日2019 | 久久婷婷五月免费综合色啪 | 乱亲女H秽乱长久久久 |