Re: [請益] 如何學習C/C++並能使之成為應職技能?
※ 引述《leolarrel (真.粽子無雙)》之銘言:
: 身為一個很多語言我都有在用的人,想反駁一下
這話很引戰。其實我剛好也是很多語言都在用的人耶
只是結果是我比較愛用 C++。我想表達的是我的想法,我完全尊重其他人的選擇
你看完我的文章覺得我有講錯了,那你可以指正。不過我看起來你不是在指正我的內容
而是在質疑我的選擇
: 想到精確的控制資源取得與釋放,C做得到,而且做的比C++更加的透明,不黑箱,如果使用
: C++依樣要"嚴格的紀律",那我為何不選擇黑箱作業比較小的C?
: 另外,如果在意gc,那麼c/c++ 直接被推到推薦名單的最後面去,因為他們還要掛lib才做
: 得到,應該首選現在較為先進的語言
C 的紀律是什麼?是 goto?是 macro?什麼樣的方法可以讓你再離開 scope
的時候記得釋放資源?複製貼上?
這只是增加錯誤率而已,讓編譯器幫你做吧
你可以獲得幾乎一樣的效能,同時降低錯誤率
: C/java一樣做得很好,C++在這部分不算特別突出,所以這理由很弱.
在我看來很突出啊,如果你是跟 c 比。c 很常把 ptr cast 成不同的東西
當然,你要是明白這個 ptr 的 layout 是不會有事,對吧?如果弄錯了怎麼辦呢?
compiler 會不讓你編?不會喔。會 crash?運氣好的話會。那不然呢?我不知道啊
要 match 型別呢?可以啊,就在函數後面加幾個字讓不同的型別有不同的叫法
增加 overhead?不會,因為 c++ 在編譯完後也是一樣
只是一句老話,讓編譯器幫你做的事情,你幹嘛自己做?
: : 用 template 基本上就是用空間換速度,當然空間大到一定的程度也會影響到速度,
: : 所以用的時候必須有點 sense 到底這樣下去會發生什麼事情。亂用 object code 就會
: : 變大。compile time 可以幫你做好 template 計算,你可以準備特化樣板讓 compiler
: : 去用,只要設定得當你可以透過一個很 general 的樣板生出針對不同型別具有特殊
: : 意義的 code。
: 用泛型跟樣版就像你說的,要"有點sense",不能亂用.現代的直譯式語言方便多了,沒必要
: 為了泛型跟樣版而選擇C++
Java 的 generic 我真的不懂,如果這篇文章能夠釣出高手來解釋也算是很好了
方便是什麼?方便是用效率換的嗎?如果要換的話你可以決定怎麼換嗎?
C++ 可以讓你做這個決定。
: 簡而言之,"某某功能很好懂,前提是你要qqqqqq然後注意ooooo,什麼時候可以aaaaaa,
: 讓pppp怎麼樣可以llllll",恩,真的很好理解 @@
: 那我用C的 function pointer 不就好了,更透明,更不黑箱,也不用管compiler為了搞
: 繼承跟虛擬會怎麼樣去"建構"vtable
我覺得 c++ 不黑箱啊。對呀,你用 c 的 func ptr 很好,只要你喜歡用一個放滿
func ptr 的 struct,你也可以有 vtable。如此一來,你不只要懂,還要自己寫
真的有比較好嗎?我是比較懶啦。compiler 幫你做的事情為什麼你要自己做?
: C做的更好,因為C compiler 根本不太會幫你做啥事,另說到compile time 做完很多
: 的事情,他的執行速度快的事情,現在直譯式語言都可以build成machine code,C++
: 在這個方面在現在動輒1.6G起跳的CPU 根本沒啥優勢,唯一能說嘴的只有編譯時期檢
: 查型別錯誤
Compiler 做的事情太少就是我對 c 最不習慣的地方。還有速度不是你說沒關就沒關的
很多時候速度是有差的。case-by-case,你的桌面系統要是用直譯器跑你會吐血。
我不只是說 wm,整個桌面系統喔!
即使 Java 可以 AOT,他依然沒有辦法像 C++ 的方式控制 compiler,他本來就是設計
給 vm 跑得。我不想對於 java 的速度做爭吵,hotspot 在某些狀況的確可以打敗
c++,這是動態編譯的好處,壞處是如何編譯你沒有辦法再寫程式當下就知道。如果你
喜歡,你可以用。
: : 所以我會說 c++ 是個很難的語言,因為你要很清楚你的每一步踩在什麼上面,但是他就
: : 像寶庫一樣你可以一直挖。而且我相信用到極端的狀況 py 和 java 不會簡單到哪去,
: : 只是學習曲線和信仰問題。
: 你要用C++繼續開發你的程式我是沒有什麼意見,不過你自己也說C++是一個這麼難的語言
: 那麼學習一個那麼難的工具,結果這個工具的效用跟其他工具比起來差不了多少....
: 那為何要去學習難的那一個??有被虐狂嗎??
我希望我講的東西貼近我認知的事實,天下沒有白吃的午餐。
在我看來 c++ 就是一個好寫的 c。儘管我覺得他對於編譯器的控制強過於 c。
只要你寫的好,你可以用類似更高階的語言的方式,寫出跟 c 有得拼的速度。
這整個的 tradeoff 在我看來很好。但我必須說,隱藏在 stl 或編譯器後面的
東西不是你沒看到就可以不管的。
但我也完全尊重你喜歡其他語言,或是你不管什麼原因就是不喜歡 C++
那是你的選擇,如果大家選擇都一樣那現在就沒有這麼多趣味了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.8.129.147
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1423636047.A.519.html
→
02/11 14:30, , 1F
02/11 14:30, 1F
→
02/11 14:31, , 2F
02/11 14:31, 2F
→
02/11 14:32, , 3F
02/11 14:32, 3F
→
02/11 14:32, , 4F
02/11 14:32, 4F
→
02/11 14:34, , 5F
02/11 14:34, 5F
→
02/11 14:36, , 6F
02/11 14:36, 6F
→
02/11 14:36, , 7F
02/11 14:36, 7F
→
02/11 14:39, , 8F
02/11 14:39, 8F
→
02/11 14:39, , 9F
02/11 14:39, 9F
→
02/11 14:39, , 10F
02/11 14:39, 10F
→
02/11 14:40, , 11F
02/11 14:40, 11F
→
02/11 14:42, , 12F
02/11 14:42, 12F
→
02/11 14:42, , 13F
02/11 14:42, 13F
→
02/11 14:43, , 14F
02/11 14:43, 14F
→
02/11 14:43, , 15F
02/11 14:43, 15F
→
02/11 14:44, , 16F
02/11 14:44, 16F
→
02/11 14:44, , 17F
02/11 14:44, 17F
→
02/11 14:44, , 18F
02/11 14:44, 18F
→
02/11 14:45, , 19F
02/11 14:45, 19F
→
02/11 14:46, , 20F
02/11 14:46, 20F
→
02/11 14:48, , 21F
02/11 14:48, 21F
→
02/11 14:52, , 22F
02/11 14:52, 22F
→
02/11 14:52, , 23F
02/11 14:52, 23F
→
02/11 14:55, , 24F
02/11 14:55, 24F
→
02/11 14:55, , 25F
02/11 14:55, 25F
→
02/11 14:59, , 26F
02/11 14:59, 26F
→
02/11 14:59, , 27F
02/11 14:59, 27F
→
02/11 15:00, , 28F
02/11 15:00, 28F
→
02/11 15:00, , 29F
02/11 15:00, 29F
→
02/11 15:10, , 30F
02/11 15:10, 30F
→
02/11 15:19, , 31F
02/11 15:19, 31F
→
02/11 15:19, , 32F
02/11 15:19, 32F
→
02/11 15:20, , 33F
02/11 15:20, 33F
→
02/11 15:52, , 34F
02/11 15:52, 34F
→
02/11 15:53, , 35F
02/11 15:53, 35F
→
02/11 15:54, , 36F
02/11 15:54, 36F
推
02/11 15:57, , 37F
02/11 15:57, 37F
→
02/11 15:57, , 38F
02/11 15:57, 38F
→
02/11 16:02, , 39F
02/11 16:02, 39F
→
02/11 16:02, , 40F
02/11 16:02, 40F
→
02/11 16:43, , 41F
02/11 16:43, 41F
→
02/11 16:43, , 42F
02/11 16:43, 42F
→
02/11 16:44, , 43F
02/11 16:44, 43F
→
02/11 16:44, , 44F
02/11 16:44, 44F
→
02/11 16:58, , 45F
02/11 16:58, 45F
→
02/11 17:05, , 46F
02/11 17:05, 46F
→
02/11 17:05, , 47F
02/11 17:05, 47F
→
02/11 17:07, , 48F
02/11 17:07, 48F
→
02/11 17:08, , 49F
02/11 17:08, 49F
→
02/11 17:08, , 50F
02/11 17:08, 50F
→
02/11 17:09, , 51F
02/11 17:09, 51F
→
02/11 17:10, , 52F
02/11 17:10, 52F
→
02/11 17:10, , 53F
02/11 17:10, 53F
→
02/11 17:12, , 54F
02/11 17:12, 54F
→
02/11 17:12, , 55F
02/11 17:12, 55F
→
02/11 17:12, , 56F
02/11 17:12, 56F
→
02/11 17:13, , 57F
02/11 17:13, 57F
→
02/11 17:47, , 58F
02/11 17:47, 58F
→
02/11 17:47, , 59F
02/11 17:47, 59F
→
02/11 17:48, , 60F
02/11 17:48, 60F
→
02/11 17:49, , 61F
02/11 17:49, 61F
→
02/11 17:50, , 62F
02/11 17:50, 62F
→
02/11 17:51, , 63F
02/11 17:51, 63F
→
02/11 17:52, , 64F
02/11 17:52, 64F
→
02/11 17:53, , 65F
02/11 17:53, 65F
→
02/11 17:55, , 66F
02/11 17:55, 66F
→
02/11 17:56, , 67F
02/11 17:56, 67F
→
02/11 17:59, , 68F
02/11 17:59, 68F
→
02/11 18:22, , 69F
02/11 18:22, 69F
→
02/11 18:22, , 70F
02/11 18:22, 70F
→
02/11 18:26, , 71F
02/11 18:26, 71F
→
02/11 18:26, , 72F
02/11 18:26, 72F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 18 篇):