Re: [請益] 如何學習C/C++並能使之成為應職技能?

看板Soft_Job作者 (Lazy bone)時間11年前 (2015/02/12 12:41), 編輯推噓-2(5784)
留言96則, 18人參與, 最新討論串11/18 (看更多)
※ 引述《ticks (ticks)》之銘言: : C++的問題之一在於它是個違建,還是二樓頂加到十樓的那種 : 為了相容舊的程式碼和標準,勢必要做很多非技術性的妥協, : 又叫做suboptimal design choices C++的繼承本來就是專門蓋違建的語法 繼承的次數越多,違建就蓋的越亂 這對Trace code的人來說是個大麻煩 假設一個類別被繼承了10次 Trace code 要把東西都抓清楚,就要看完10+1個類別定義 不像C一次呵成簡潔 更別提什麼多重繼承、動態靜態成員、Final不Final、複寫不複寫 Public、Private、回呼父類別成員的問題了 光搞這個就頭昏了,別人程式都寫完下班了,你還搞不清楚程式的開頭在那裡 但這還不是真正的災難開始 當你開始Debug的時候,才能體會何謂焦頭爛額 一堆寫C++人搞不清楚父類別就開始繼承的 也就是說,繼承之後所作的操作都是高風險的 什麼亂七八糟不可捉摸的Bug自然就層出不窮 所以那些人最喜歡講紀律啦,就像亂世的時候說法律很重要一樣的情況 類別繼承又不是Call API,Compile的時候 編譯器也是先將它們合併在一起再轉碼 其實這個事情就是Word的Copy, paste 在作的事 沒有那麼偉大啦 再回來講違建的事,違建越蓋越多,下場會是什麼? 不是倒塌,就是難以維護,最後拆掉重蓋 所以C++ Code 就是要不斷的重構(重構這個詞也是C++之後才有的) 這個場景的設計出發點本來就是錯的 後面發展的東西其實不用看太多,就能預期到悲慘的結果 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.71.206.217 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1423716105.A.FC6.html

02/12 12:47, , 1F
閣下之言乃是瞧不起我OOP教與重構劍法了?
02/12 12:47, 1F

02/12 12:50, , 2F
捅到馬蜂窩?這下麻煩大了
02/12 12:50, 2F

02/12 13:20, , 3F
原來寫c不用重構啊…
02/12 13:20, 3F

02/12 13:32, , 4F
。。一一
02/12 13:32, 4F

02/12 13:42, , 5F
摩斯密碼??
02/12 13:42, 5F

02/12 13:42, , 6F
我回憶了一下,寫C真的很少再重購
02/12 13:42, 6F

02/12 13:43, , 7F
倒是蠻常在調整演算法的
02/12 13:43, 7F

02/12 13:48, , 8F
老樣子噓,這言論依舊一看就知道是OO適應不良
02/12 13:48, 8F

02/12 13:49, , 9F
Public、Private、動/靜態成員,連這都可以讓你搞昏頭
02/12 13:49, 9F

02/12 13:49, , 10F
你離可以批判C++的等級還遠得很
02/12 13:49, 10F

02/12 13:53, , 11F
其實我想知道原PO 作過什麼大專案 聽起來比googler還強
02/12 13:53, 11F

02/12 13:54, , 12F
得了吧 c 寫大也很可怕 一堆 struct * 傳來傳去
02/12 13:54, 12F

02/12 13:54, , 13F
這個 call 來自這麼 func ptr,這個 fun ptr 又從哪裡來
02/12 13:54, 13F

02/12 13:55, , 14F
你光搞懂語意就昏了 沒有 type 的輔助去追 code
02/12 13:55, 14F

02/12 13:56, , 15F
軟體工程不知有無體會 尤其大專案
02/12 13:56, 15F

02/12 13:56, , 16F
典型自找麻煩 編譯器那麼強幹嘛不用
02/12 13:56, 16F

02/12 13:57, , 17F
自己不會用怪OOP
02/12 13:57, 17F

02/12 13:57, , 18F
c++ 不是搞 oo,c 也可以搞 oo,gtk 自己看,那才是恐怖
02/12 13:57, 18F

02/12 13:57, , 19F
如果你要討論 oop,那是另一個維度的問題
02/12 13:57, 19F

02/12 13:58, , 20F
用不著讓大家都以為你不懂
02/12 13:58, 20F

02/12 14:01, , 21F
你在罵的東西不是C++吧
02/12 14:01, 21F

02/12 14:03, , 22F
OOPS
02/12 14:03, 22F

02/12 14:03, , 23F
C可怕的應該是macro hell XD
02/12 14:03, 23F

02/12 14:05, , 24F
要當C++ hater 先看完yosefk.com吧
02/12 14:05, 24F

02/12 14:05, , 25F

02/12 14:37, , 26F
翻譯:我很弱
02/12 14:37, 26F

02/12 14:53, , 27F
C寫的大型專案...就linux kernel啊,確實複雜。但來自於
02/12 14:53, 27F

02/12 14:53, , 28F
現代核心的複雜本質。用C++恐怕專案已崩潰
02/12 14:53, 28F

02/12 15:00, , 29F
C++的曾經的最大專案應該是MFC? 主推者微軟已經轉向C#
02/12 15:00, 29F

02/12 15:18, , 30F
批評C++就算了 連OO都一起罵...一一"
02/12 15:18, 30F

02/12 15:31, , 31F
c include 順序不對可能都會哀嚎 lol
02/12 15:31, 31F

02/12 15:32, , 32F
我一直認為 c 很考驗程式設計師對程式的掌控能力
02/12 15:32, 32F

02/12 15:33, , 33F
所胃:大型專案是指? 專案金額? 專案人數? 專案程式行
02/12 15:33, 33F

02/12 15:33, , 34F
數?
02/12 15:33, 34F

02/12 15:56, , 35F
參予者規模+行數+影響力
02/12 15:56, 35F

02/12 15:57, , 36F
元PO沒罵OO,他應該是在指責C++很具爭議的OO實作
02/12 15:57, 36F

02/12 15:58, , 37F
linux kernel 裡面一堆OO,繼承,多型,都是純C寫的
02/12 15:58, 37F

02/12 15:59, , 38F
c++大型專案:三大瀏覽器,jvm…我應該要加一句「要是用c
02/12 15:59, 38F

02/12 15:59, , 39F
寫恐怕已經崩潰」嗎?你也知道這無法驗證。
02/12 15:59, 39F

02/12 16:01, , 40F
nokia的symbian有人說是c++不良專案之一
02/12 16:01, 40F

02/12 16:02, , 41F
以前公司買過一套obigo 是C++寫的,本身品質好,後來RD主管
02/12 16:02, 41F

02/12 16:02, , 42F
告訴我一個寫不出不良專案的語言
02/12 16:02, 42F

02/12 16:02, , 43F
要求嚴格也發展得還可以,正反利都有.
02/12 16:02, 43F

02/12 16:03, , 44F
linux kernel那段不是我的意見,那是linus老大的堅持
02/12 16:03, 44F

02/12 16:04, , 45F
noon我又不是要說服你不用C++. C++自然而然的已經不再是非用
02/12 16:04, 45F

02/12 16:05, , 46F
不可。以前MFC當紅,非MFC不可,現在早已不是那種局面
02/12 16:05, 46F

02/12 16:07, , 47F
實務上如果工作需要,或是有很好的非用不可LIB(這比較少見),
02/12 16:07, 47F

02/12 16:07, , 48F
C++我也能用能寫,盡量避開不良部分就是了.
02/12 16:07, 48F

02/12 16:10, , 49F
是的。我在意的是存在某個選擇,這個選擇有某些特性,所
02/12 16:10, 49F

02/12 16:10, , 50F
以我不喜歡舉反例或攻擊這個不行那個不行。但既然對話變
02/12 16:10, 50F

02/12 16:10, , 51F
成這樣我就只好這樣講。你罵c我一樣會出來講。
02/12 16:10, 51F

02/12 16:16, , 52F
可能你很喜歡這個語言跟他伴隨的能力吧,元PO寫的這些缺點
02/12 16:16, 52F

02/12 16:16, , 53F
正式JAVA後來進免避免,然後看起來也挺成功的部分
02/12 16:16, 53F

02/12 16:17, , 54F
正是Java後來盡量避免
02/12 16:17, 54F

02/12 16:21, , 55F
這是我一直在講的,你可以用 c++ 寫出好東西,省時,方便
02/12 16:21, 55F

02/12 16:21, , 56F
,快,但你要很清楚你在幹嘛。
02/12 16:21, 56F

02/12 16:24, , 57F
java 我從不諱言他「某些情況」比c++快,但當c++寫的好
02/12 16:24, 57F

02/12 16:24, , 58F
時候這些情況我相信不是普遍,你可以拿數據來推翻我
02/12 16:24, 58F

02/12 16:25, , 59F
java後來居上的原因並不是他比C++更適合開發桌機應用,或是
02/12 16:25, 59F

02/12 16:25, , 60F
有更多gui framwork.反而是大環境變了
02/12 16:25, 60F

02/12 16:26, , 61F
運算能力儲存能力等比增加,JVM效能改進,分散式應用興起
02/12 16:26, 61F

02/12 16:26, , 62F
等等等等這些
02/12 16:26, 62F

02/12 16:26, , 63F
我不想顯得一副我很 "c++教" 但我看不下去一些簡單的反
02/12 16:26, 63F

02/12 16:27, , 64F
去扼殺一種選擇
02/12 16:27, 64F

02/12 16:27, , 65F
去扼殺一種選擇
02/12 16:27, 65F

02/12 16:28, , 66F
是 你說的對 我不想戰 java,因為我也覺得他是好東西
02/12 16:28, 66F

02/12 17:23, , 67F
哪幾少行+多少人數+多有影響力, 才叫"大專案"?
02/12 17:23, 67F

02/12 17:36, , 68F
都是你問我答,我怎麼覺得你有點在找麻煩???
02/12 17:36, 68F

02/12 17:37, , 69F
哪些是有影響力的專案,這麼大年紀了分不清楚嗎?
02/12 17:37, 69F

02/12 17:53, , 70F
咦,分不清楚呢,什麼叫影響力,如何量度?
02/12 17:53, 70F

02/12 18:02, , 71F
再說,你問的JAVA CPU, ARM JAVA CPU我全都給你了呢.
02/12 18:02, 71F

02/12 18:02, , 72F
怎麼沒逆天了!!
02/12 18:02, 72F

02/12 18:19, , 73F
嗯嗯嗯嗯
02/12 18:19, 73F

02/12 18:19, , 74F
長大吧!
02/12 18:19, 74F

02/12 18:21, , 75F
java cpu, Jazelle會是另外的有趣的題目.不過你也沒真心
02/12 18:21, 75F

02/12 18:21, , 76F
要討論,找麻煩我就不奉陪了,你自己玩
02/12 18:21, 76F

02/12 18:24, , 77F
noon有些想法讓我不禁想,究竟C++強大的部分在於它特有的
02/12 18:24, 77F

02/12 18:25, , 78F
部分,譬如多重繼承,還是他兼容C又可以OO的部分
02/12 18:25, 78F

02/12 18:40, , 79F
02/12 18:40, 79F

02/12 18:41, , 80F
可以參考一下裡頭提到的東西
02/12 18:41, 80F

02/12 19:15, , 81F
我的思考邏輯跟 c 差不了太多,就像上面說的,c 也可以寫
02/12 19:15, 81F

02/12 19:15, , 82F
oo,我的思考差不多,但用 c++ 的語言特性來管理 scope
02/12 19:15, 82F

02/12 19:15, , 83F
e 和產生 code 或傳遞型態,stl 是順道用,反正我隨時可
02/12 19:15, 83F

02/12 19:15, , 84F
以選擇改用其他的
02/12 19:15, 84F

02/12 19:52, , 85F
c 要模擬繼承就要搞一堆padding,更加麻煩
02/12 19:52, 85F

02/12 20:03, , 86F
有沒有哪個知名project從c++改用c之後變得更好的啊?
02/12 20:03, 86F

02/13 09:55, , 87F
沒聽說中途改的...那樣不如重寫...
02/13 09:55, 87F

02/13 09:56, , 88F
一開始就要選定了,如果是嵌入式平台+有效能需求,直接選C了
02/13 09:56, 88F

02/13 10:01, , 89F
這時候有OO需求就要用C裡面寫OO的技巧
02/13 10:01, 89F

02/13 10:15, , 90F
呼應noon的,可以把C++當JAVA寫,但無法阻止豬一般的隊友
02/13 10:15, 90F

02/13 10:15, , 91F
亂寫 XD
02/13 10:15, 91F

02/13 10:16, , 92F
這問題無解,尤其嵌入式平台,如果踩記憶體了,把機器碼
02/13 10:16, 92F

02/13 10:17, , 93F
展開來看,C很好DEBUG,如果是C++就要開始找父親大作戰XD
02/13 10:17, 93F

02/13 10:18, , 94F
我們在爭語言特性是純學術討論,實務上常是平台先決
02/13 10:18, 94F

02/13 10:48, , 95F
現在C擅長的領域 C++無能為力 C++擅長的地方 卻有其他替代方
02/13 10:48, 95F

02/13 10:48, , 96F
案可以選擇
02/13 10:48, 96F
文章代碼(AID): #1Kt2y9_6 (Soft_Job)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 11 之 18 篇):
文章代碼(AID): #1Kt2y9_6 (Soft_Job)