Re: [請益] 比物件導向更先進的程式設計思想?
※ 引述《dharma (達)》之銘言:
: 現在很多新出來的程式語言,(如Swift),從本質上說,都是物件導向語法,這是因為近: 幾十年來,從來沒有比物件導向實現更先進的程式設計實現在新程式語言中全面取代物件: 導向思想。
: 上面是某程式語言教學書看到的
: 他說的符合實情現況嗎?
這當然是唬爛,聽過愚民教育嗎? 聽過蓄奴嗎?
物件導向就是大公司的陰謀
方便它們做一些黑箱框架,以及騙一些人進來,當它們框架的依賴者
物件導向的語法設計,會讓你很難去挖掘框架後面的東西
用的人只會越來越沒有思想,越來越依賴框架
最後變成離不開框架,任大公司宰割的韭菜
: 一直沒有更先進的東西嶄露頭角
: 可能取而代之
: thanks
就看 A公司跟 G公司彼此要殺到什麼時候了
G 公司的保護費最近也漲成跟A公司一樣了,都是 30% 的抽成
--
所以更先進的設計是什麼
不在語法的層次,在架構觀念的層次 等你有了架構觀念,看OO就是一坨屎
怎麼OOP講著講著遷怒到框架去了@@
不用框架,那用OO就沒意義了
要這樣講的話 依賴高階語言但不懂組語和編譯器不也算嗎
高階語言本來是沒有OO的,高階語言與OO是兩回事 你一定沒有分清楚那些功能性語法,那些是編輯性語法
不會用0跟1寫程式的都自殺好惹 嗚嗚
好久沒看到 此id必推 推爆
我知道版上 有些教JAVA的補教業者很討厭我
所以你寫扣都不用物件導向?
我寫過MCU的FW,Linux 跟 Windows Device driver,EC, Bios, Web 前端跟後端 從來不用OO。除非接別人的BSP,那還是會看一下
Linux 的 VFS 不是很 OO 嗎
Linux 的 VFS 是各式檔案系統的對上層的統一介面,干OO什麼事?
所以更先進的架構觀念是什麼
改用 oh oh p啦
linux沒很oo吧
看起來,你覺得oop不好的原因是隱藏實作,只依賴抽象
介面,這樣很糟糕,我有理解的樓主的意思嗎?
所有的 Api 都是隱藏實作,讓使用者以一種比較抽象簡化的概念來調用它 OO的問題不在這裡,Class將資料與函式綁在一起,基本上是違反人的思維模式的 由於違反人的思維模式,所以人就無法賦予它一個清楚的抽象簡化概念 調用的時候,就會感到不知道在做什麼,說穿了,Class語法就是個黑箱妖怪製造機 那些基於OO的框架,就是會讓調用者搞不清楚在調用什麼,只能用使用經驗來熟悉它 無法推理及創新,這就是那些大公司要的結果,你只能依賴它,卻難以解析、評論它 當有人說它好棒棒,你也無法判斷是真是假
class我覺得分成純資料跟物件,物件的method強調抽象
行為,這點跟api介面有不同嗎?還是說你指的是,有人
把class弄成,半資料半物件的形式?這樣的話當然很糟糕
如果是基於fp的框架,使用者難道就可以知道他們在調用
什麼嗎?跟oo或fp有關係嗎?
有點微妙,api就是高階抽象隱藏實作,oo變成黑箱妖怪,
這兩者的差異是?
差異在於人腦對抽象這件事運作方式 人腦可以對動作認知(吃飯、睡覺)的作抽象, 人腦可以對資料包裹(表單、身分證)的認知作抽象 但是人腦無法對「動作+表單」這個不知所云的東西作抽象 抽象這個動作,能將一堆東西,簡化成一個很小的點, 所以抽象這件事,對於人腦在分析一個大系統的時候,非常重要,也是唯一的手段 當人腦無法作抽象的時候,麻煩就大了,萬事都要從細節裡去找答案,那就完蛋了
同樓上 我上面推文意思就是高階語言隱藏了實作
像是registor隱藏了電路實作 driver隱藏了registor實作
電腦的周邊裝置就是機器設備的概念,它就是一個對於人腦來說, 一個很好處理的抽象概念 Register 就是周邊裝置的控制鈕,也是一個很好處理的抽象概念 這邊沒有OO的Class,抽象概念很好處理
為什麼我有一種感覺叫做 我認定可以抽象的才是抽象
如果覺得表格+動作 對你來說不好抽象 可以換一種表達
表格+動作 有種資料庫驅動設計的感覺 試試 DDD ?
領域驅動設計
抽象本來就是人腦的主觀,人腦的運作模式 人腦好處理的東西,就是好東西;人腦不好處理的東西,就是爛東西 你們不是愛講什麼「內聚性」、「耦合性」嗎? 那是來自人腦的感覺,還是電腦的感覺 「內聚性」、「耦合性」不好的程式也是會動呀! 問題是看程式的人,腦子會燒壞呀! 好笑的是Class本身就是一個在破壞體系「內聚性」、「耦合性」的妖怪 除非你的腦袋真的異於常人,那我也只能認了 DDD 是通例,還是特例?如果是 Corner scenario 那或許有可能 如果一體適用,那就是災難的開始
看不懂在講認真的還是在反串.....
東西好不好不是就看用的人怎樣用,過分使用或者斥之
以鼻不是都是最糟糕的行為嗎。
今天我只是要輸出一個a+b=c
拿OOP的東西來用,那就叫神經病。
今天有繼承封裝的需求,訂定規範框架或者是特殊的需
求,那他就是很好的工具,不就是這樣而已嗎?
你說的很對,這就是我最上面說的「大公司的陰謀」呀! 如果你是Code Owner,Code 的領主,你希望有一堆農奴來使用你的code 但又不希望這些碼農奴來了解你的Code,批評你的Code,改你的code,最後取而代之 OO不就是個最完美的解決方案嗎? 我最初的發言是以碼農奴的立場來看的,我只是在說明這個產業的生態 你也可以說它就是個工具啦!只是不要忘了它後面還是有商業目的存在的 它需要農奴,它需要有人為它抬轎 看看對面的華為,不就是這樣進了圈套,那一天領主翻臉,就被搞死的嗎?
好久不見的ID耶 哈哈
出桶了?
看起來像陰謀而已吧 我覺得比較像工程圈追求傳統工廠般的
生產模式 用oop的觀念比較可以接近多請一個人生產效率就會
增加 在沒有軟體設計方法的上古時代 常常有技術上數學上
可行的產品 但請再多人加再多硬體都完成不了的狀況
現代不只oop還有各類開發方法被提出 一般應用型產品從無到
有常常就只是工作人數和開機器的問題
高階到一定程度的人一定知到oop並不萬用啦 只是在老闆和
金主的壓力下大多會選擇商業界慣用的方法來處理
商業利益與邏輯理想的衝突,知道這個情況就好,不用全押下去
商業考量啦 沒你講的那麼黑暗
把一塊memory space當成object,到處都見山
聽起來問題不是OOP,而是你用OOP的方法跟目的?
複製貼上大師又出現啦
明白樓主的想法 就是在說明不直觀又注重細節 框架中
耦合又非常嚴重
個人也不愛 只是某勢力實在太龐大
不過還是算了吧 如此free style的東西還是用在自己的
產品上最好 給人打工free time有就好
完全沒用到一丁點OO概念的web前後端喔....呵 這邊也流行
幻想文是ㄇ
不管甚麼領域都有這種抱持陰謀論的人出現
陰謀論其實是帶有一種臆測的意味存在 曾經待過某大IT外商,以技術部門的角色與 Marketing 部門的人開會 聽過很多次它們這樣說 它們需要的是可以讓客戶產生依賴性,並且無法轉台離開他們的產品 這樣夠明顯了吧! 以商業的法則來說這樣沒錯,或許我應該改口說,這根本就是一種陽謀 要不然為什麼A公司跟G公司要各搞各的App框架呢?(就是不想讓你轉台呀!) 為什麼兩家不統一一下,這樣大家都省事,不是很好嗎? 大陸那邊都開始搞自己的App Store了,為的是什麼?打破控制及壟斷呀!
基本上樓主講的開發方式本來就存在 自私且壯大到一定
程度確實可以稱作是陰謀沒錯
今天簡單的架構不能快速解決,框架複雜化是必然結果
原po可以給不用oo然後很好看懂的github repo嗎?想瞭解
老實說,我不太相信 你不知道那邊有,但還是隨便貼兩個給你
https://github.com/torvalds/linuxhttps://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/master
產生依賴性就表示簡易操作解決了複雜問題,這是oo的概念
不懂這句話的意思
※ 編輯: csfgsj (36.229.5.174 臺灣), 10/10/2020 22:34:16其實 Linux kernel 也是會用 OO
Linus Torvalds 聽你這樣說,一定會吐血 這是一種概念的曲解,你說它是OO,我說不是呀! VFS 是針對不同的檔案系統,賦予一個統一的操作介面 上層的調用者,可以用同一套操作的概念method,來操作不同的檔案系統(Volume) 不要忘了,在操作這些概念method時,FS type 也是要事先指定清楚的 實際指到的實作Function,也是FS type specific的 這種函式指標包裹的struct,就像是棒球隊的守備名單一樣 雖然守備位置(捕手、投手、一壘手、外野手等)是固定的(function pointer name) 但是每一個棒球隊都守備人員是不同的(function) 在棒球開賽前,每一隊教練就要上繳隊員守備名單給裁判(register struct) 這樣的作法在Device Driver 裡到處可見 開賽前,上繳隊員守備名單給裁判,就是所謂的初始化過程(init) 你可以去挖Linux kernel的main() 的來看,一堆這樣的東西 如果你有這樣的抽象概念,就不會想去用OO這種不淪不類的東西來去套它了 你的這種說法,其實也是很多OO宣傳者常用的詭辯技巧之一 因為它們從來沒解釋清楚OO是什麼(事實上是他們自己也不知道) 所以當它們說OO是什麼,別人也沒有什麼依據說它不是什麼
原PO你說的應該是封裝的部分吧… 有些機器也不會讓你知道
裡面長怎樣 這很正常
這邊我們習慣用「包裹」「包裝」,而不用「封裝」 「封裝」的「封」有阻絕、封閉,不給人觸及,不給人看的意思 「包裹」「包裝」是有需要時,還可以打開來看的意思 有些機器也不會讓你知道 => 更多的機器是要讓人知道構造原理,讓人可以打開維修的 OO用的詞彙,總是偏向隱晦、黑箱 對於「認知」這件事,OO總是要刻意的不友善 正常、不正常 就看你怎麼看 以我工程師的立場,我是不喜歡隱晦、黑箱啦!
※ 編輯: csfgsj (36.229.5.174 臺灣), 10/11/2020 23:13:25黑箱有時候是必要的...
爛文一篇
2
我個人主觀且偏見的覺得 OOP 不是聖杯,它只能管理一些些的複雜度,它雖好用但又沒那麼好用,它可以很容易跟其他技術結合在一起,所以起手式走oop 不見得不好,但也不用太過度期待用了能上天堂之類的 oop 就只是個工具,就像 solid 是個 guide(我也喜歡 solid,但現實世界總是不那麼美好),更別說是板上常見的 design pattern,我相信我們能從這些東西上面是可以學到一些東西,但也不用過度美化 如果真的要把程式寫好,我覺得練習寫能大量組合,無狀態,可驗證,又可高度抽象化的producedure,stateless,pipeline,wishful thinking programming 的方式會比較好,我反倒覺得這個聖杯存在很久了,只是很少人注意到 ----- Sent from JPTT on my Asus ASUS_I01WD.3
喜歡換一個思考模式嗎?歡迎進入 FP 1. compose 是 FP 語言中的基石 (O) 2. stateless FP 語言原則上沒變數概念,等號兩邊是等價的 (O) 3. 可驗證/高度抽象化,FP 的 type system 往往比 oo 系列的表達力更強 (O) ---6
OOP沒什麼不好啊 沒有OOP我們廣大的碼農們怎麼活下去 沒有OOP現在的軟體能發展成這樣嗎 每樣工具在其時代背景都有它的貢獻 沒有工具是完美的啊5
JavaScript 是一個基於原型(Prototype-based)的程式語言 在本質上很難將它歸類為程序導向語言,或是物件導向語言 類別: JavaScript 中沒有類別(Class)的概念,但是有物件(object)的概念 而這個物件概念的物件,則是以GUI的 Widget為主5
在討論oop fp 或任何概念之前 需要討論的是你的使用情境(context) 沒有context就只是在討論信仰 一開始沒有討論context,所以後面討論一定是到處互打,大家都覺得自己對 所以回這篇文的時候麻煩先描述想討論的contextX
國外反OOP的人不在少數 OOP 是萬惡之源 OOP is the Root of All Evil - Jeff Ward OOP 是爛東西8
物件導向其實是很偉大的發明 不知道酸民有沒有注意到--- 建築的預鑄工法, 其實也是物件導向 先把牆, 梁柱預鑄好, 搬到工地組合起來就好 所以現在蓋房子都超快的8
阿 是不是什麼王X歸來、邁向X手之路、拉近和X神之路、最強入門邁向X手之路之類的書?還是有附插畫的那種? 或者某些業者或教學單位新花樣, 賦予新名詞之類的,例如: 後X情時代、XG製造、智X製造、X捷開發、X石開發、X布開發、X端工程師、X個月轉職、X經驗工程師。 我覺得我地圖砲開太大XD,「完全取代」根本比不上「相容舊版」來的有用,薪水也不會比較多。9
依照目前看CodeReview 大部分人寫程式的方式 其實都披著OOP的皮 寫不是OOP的程式 甚至還看過很愛嘴別人的主管3
幾個迷思 很多人會講C沒有OOP 實際上C有 OOP是一種paradigm 本質上還是工程師的抽象化能力 有OOP思想的人去寫C 就會有OOP的味道 腦袋裝義大利麵的寫C++還是Java C# Swift 出來都是義大利麵
35
[心得] C#基礎名詞解釋會發這篇文主要是面試被洗臉 我都會做啊 但我就不會解釋啊 雖然是寫給自己看的 但就分享出來吧27
[請益] 如何快速用java寫出卡牌對戰遊戲對java的物件導向概念始終感到很迷茫,有點難想像class之間怎麼傳那麼多層,要怎麼傳過去,更遑論設計遊戲流程,看別人的code能看懂,但自己寫不太出來。 然而期末小組專題期限將近,要設計web畫面的卡牌遊戲,玩家與電腦對戰。 前端老師已經寫好,遊戲初始畫面我已經做好,但覺得寫得有點亂。玩家點擊卡片到移動攻擊、進階攻擊方法則還沒有,如果用js我有信心能做出來。 同學聽到我們組的情況有好心借我看她寫的部分的code。其實越看越emo,她的code寫的好乾淨。 其實具體也不知道要問什麼問題,目前想法是先把架構想明白再來開發,但是問題是想不太清楚需要再加哪些class,又需要給哪些功能,最難的還是知道資料怎麼流的,語法也不熟,感覺這兩天開發是學到了很多,已經不求寫完整,只求弄明白,我想只是需要有人能指引方向,感謝。22
Re: [討論] 刷題 Python or C++不懂為什麼你要用C++刷題 請問你之後工作用的框架會是C++的框架嗎? 不會吧 現在很少人在用 不管你是開發web還是app,不要捨近求遠 選一個會常用到的20
Re: [問卦] C語言根本可以淘汰了吧?阿肥外商碼農阿肥啦, 會問這種問題的,麻煩去把恐龍本重讀或是去重修OS,現在一堆半路出家搞不清楚system library跟user application。 現代各種語言好用是建立在底層已經有人幫你鋪好路了,才會讓你們這些文組覺得好像寫 程式很簡單,結果遇到系統級的問題還是要理組來善後。當GC的實作不須要有人先實作好16
[請益] 比物件導向更先進的程式設計思想?現在很多新出來的程式語言,(如Swift),從本質上說,都是物件導向語法,這是因為近 幾十年來,從來沒有比物件導向實現更先進的程式設計實現在新程式語言中全面取代物件 導向思想。 上面是某程式語言教學書看到的 他說的符合實情現況嗎?14
[討論] (object oriented design with C) vs (C++) ?因為工作跟embedded system相關, 我自工作後都使用C, 偶而因為debug的需要才會看到上層的C++應用程式 最近有空把基礎的C++看了一遍... 個人的心得: 若以C在設計時就能使用物件導向概念的話, 好像沒有需要用C++來設計程式 ? Linux kernel的設計就是一個例子, 它大量地用到許多物件導向的概念.11
Re: [討論] 請大家聊聊 JavaScript的缺陷推 laputaflutin: 同意樓上,不過看到這次美國大選很多新聞網都拿 11/04 21:02 → laputaflutin: svelte來寫,感覺蠻有趣的,應該會拿來試試看 11/04 21:03 禁不住好奇心的我終究還是去看一下 Svelte, 原來它是個反 React、反 Vue、反前端在瀏覽器動態解析樣板的框架兼開發工具。 它讓你在開發時期能夠先以 js 程式碼定義資料,6
Re: [問卦] C++到底難學在哪裡: c++難就難在包山包海 既要 1. 兼容c的底層控制 2. 又有"modern c++"想要把時下其他語言流行的特性包進去