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

看板Soft_Job (軟體人)作者 (Caesar)時間11年前 (2015/02/12 00:35), 11年前編輯推噓0(1137)
留言39則, 8人參與, 最新討論串9/18 (看更多)
我也來發個評論好了 首先,我接觸的語言是從 C -> C++ -> Java 而我本身偏愛 C++ > Java > C 就像是noonOut講的,C++的所有東西都很明確,你清清楚楚地知道他做的任何事情,但是他又不會像C那樣瑣碎 C 很多東西要用手刻(如:vector),又沒有template,lib也不夠多,這是我不喜歡C的地方 Java lib比C++還多,還提供Swing(我覺得這點就把C與C++打爆了) 但是我覺得Java不夠"明確" 像是memory的使用跟釋放不如C與C++明確 沒有const可以幫助我確保這個Object不會被變更(這點對我來說很重要) 沒有提供operator overloading ... 族繁不及備載 很多我想要的功能,Java都不提供,哀 C++ 因為什麼都提供,所以複雜,這也造成學習很困難,永遠學不完 你需要精通C,懂STL,會template,靈活運用OOP 這4個都是需要花上很長時間才能精通的技能 但是精通C++後,學習別的語言可以很快速,因為其他語言相對來說很簡單 (其實我很鄙視用Java的人,學Java不需要經過pointer的洗禮,我覺得debug能力會很弱) 至少以我的情況來說,在學Java、PHP、Javascript、Scheme上都沒有問題 (也可能是我太弱了,沒有遇到該領域極困難的部分) 我喜歡C++,就是因為他那強大的功能 (不過我很希望C++能脫胎換骨,放棄C的包袱,能在Class上面有更好的設計) 如果要我寫一般程式,我一定用C++寫 如果要我寫視窗程式,我一定用Java(當然,現在有在考慮QT) 如果要我學OOP,那我會用Java(這點我實在不推崇C++) 如果要我寫unix程式,如果有C++就用,不然我才去選C 很多人覺得C++一無是處,我覺得原因是他開發速度比Java慢很多 對於大部分的公司來說,你只要能把產品做出來就好,誰會管你用哪個程式語言? 那這樣首選就是Python或Java 但C++也不是沒有好處,效能至少可以比Java高 Java需要通過vm,效能頂多就是逼近C++ 不過我覺得這也是C++的一個問題,大概只有做遊戲才會需要這種效能 但我覺得大家的第一志願應該是Google或是MTK這種的,有人第一志願是去Blizzard、Riot、Valve嗎? 那這樣C++就沒有絕對的優勢,反而是把專精C++的時間放在Python、Java、C會比較好,最好在學一學Node.js 最後,我覺得還有一個問題,是程式語言的發展 Java有Oracle C#有Microsoft 這種有公司來撐腰,發展當然超快(拜託,不趕快發展,到時候沒人要用怎麼辦) Python有自己的Foundation,發展可能比不上前面兩個,但也是算快了 以上三個可以照自己想要的來決定語言的發展方向 但C++不同 C++不是任何一個公司或者組織的商標,不被任何個人擁有 他只有Committee,也就是說全世界人的都可以寄信給他們,要求增加自己的功能 那這樣問題就來了,才一個Ptt的板塊,就有超過10的人在討論C++跟Java的特性,然後還會意見有衝突 更何況還要面對全世界上千上萬的要求 要是雙方都很強硬(例如:Bjarne Stroustrup跟Herb Sutter意見不和) 那這功能是要過幾年才能加入? 這導致C++發展不是很容易,看看lambda,1958年的東西,2011才發布,等到真的能用都要到2013了 那要是現在又有新功能,我看我這生大概沒機會見到了 因為這原因,C++有沒有可能沒落? 我覺得有可能(當然我自己也不希望他沒落) 但我覺得學習C++絕對值得 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 142.162.226.68 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1423672558.A.BDE.html

02/12 02:48, , 1F
BZ沒強者?Valve沒強者?台灣看世界嗎?
02/12 02:48, 1F
每個公司都有強者,Java也有,我自己也知道這樣鄙視人不對 不過看看Ptt的文章,大家是搶著進Google、MTK多,還是搶著進BZ多?

02/12 03:30, , 2F
lambda? 電腦還沒發明前就有lambda了 怎麼早期語言都
02/12 03:30, 2F

02/12 03:31, , 3F
沒有? 要加東西是看適不適合 不是先搶先贏
02/12 03:31, 3F
lambda "適不適合" C++我是不清楚 但是寫lambda比寫function object方便許多 我覺得光是這點就值得lambda應該早點納入標準了 當然,Committee可能也有他們的考量吧 也許他們覺得lambda這東西不是必要性的(畢竟可以用function object替代) 所以才那麼晚加入標準也說不定

02/12 08:14, , 4F
Java不一定比較慢
02/12 08:14, 4F

02/12 08:14, , 5F
會pointer好棒棒
02/12 08:14, 5F
恩,你都這樣講了,我覺得我解釋我的觀點好像也沒用了

02/12 08:29, , 6F
我並不覺得 c++ 開發速度慢,前提是大家都要懂
02/12 08:29, 6F

02/12 08:31, , 7F
lambda 最近大家搶著加 java 也是
02/12 08:31, 7F

02/12 08:32, , 8F
執行速度上,C++比Java快.個人覺得沒什麼好爭論的
02/12 08:32, 8F

02/12 08:33, , 9F
其實可以用 function 裡的 class 代替
02/12 08:33, 9F

02/12 08:34, , 10F
我有點 java 思維,所以愛 virtual 多一點,比起 functor
02/12 08:34, 10F

02/12 08:36, , 11F
3jit 某些時候會比 c++ 快 應該是因為動態替管線和分支
02/12 08:36, 11F

02/12 08:36, , 12F
化 至於某些佔多少?
02/12 08:36, 12F

02/12 08:38, , 13F
然後在樓上 dri 大留言以前我真的不知道 java 可以不用會
02/12 08:38, 13F

02/12 08:38, , 14F
ptr,我以為 ptr 是常識
02/12 08:38, 14F

02/12 10:27, , 15F
desktop app用java會遇到deploy的問題...這是java的硬傷
02/12 10:27, 15F

02/12 10:30, , 16F
可以不用會ptr arithemtic沒錯,不過說可以不用會ptr指來
02/12 10:30, 16F

02/12 10:30, , 17F
指去的觀念,那就呵呵就好
02/12 10:30, 17F

02/12 10:32, , 18F
至於說java/c#效能很夠的,evernote 3->4才從c#+WPF轉成
02/12 10:32, 18F

02/12 10:33, , 19F
c++,有誰可以解釋一下嘛
02/12 10:33, 19F

02/12 10:45, , 20F
1.memory的釋放請相信GC (GC機制不好就修JVM或是改用JNI
02/12 10:45, 20F

02/12 10:45, , 21F
2.const只是個假象,取值之後還是可以改的
02/12 10:45, 21F

02/12 10:46, , 22F
3.阿彌陀佛還好JAVA沒有運算重載
02/12 10:46, 22F

02/12 10:47, , 23F
鄙視用Java的人>>>>我們全單位都讓你鄙視了 XD
02/12 10:47, 23F

02/12 10:47, , 24F
不過我們用JAVA打造出一套分散式的大型作業系統,
02/12 10:47, 24F

02/12 10:47, , 25F
不知道算不算有點實力? XD
02/12 10:47, 25F
這部分小弟甘拜下風,不過如果能用C++的話會更好 XD

02/12 11:00, , 26F
1. 這看use case,寫bullet stg用GC就會是慘劇
02/12 11:00, 26F

02/12 11:00, , 27F
2. const ref要怎麼改.....
02/12 11:00, 27F

02/12 11:01, , 28F
3. it depends. 有些c++ lib op overload讓人想殺人
02/12 11:01, 28F

02/12 11:01, , 29F
有些情況下java沒有op overload讓人覺得很莫名
02/12 11:01, 29F

02/12 11:03, , 30F
鄙視用Java的人這就...有時候用一個語言是有很多因素的。
02/12 11:03, 30F

02/12 11:04, , 31F
用m16的士兵會不會鄙視用AK47的?看這精美的M16
02/12 11:04, 31F

02/12 11:05, , 32F
用Ak47只是不想卡彈死在戰場上而已 XD
02/12 11:05, 32F

02/12 11:08, , 33F
鄙視一個語言的設計無所謂,但是人就呵呵了,選用語言因素
02/12 11:08, 33F

02/12 11:08, , 34F
千百種,語言設計通常是優先度很低的...
02/12 11:08, 34F
然後鄙視Java這部分,真的是我主觀上的問題 不過我自己也說了,我要是寫GUI就會選擇Java(或QT) 這樣就變成自己鄙視自己了,哀 其實這個"鄙視"的部份,我自己也不是很清楚 可能是覺得 "能用C++做出來的功能,不屑用Java寫吧?" 所以看到用C++就可以做出來,卻用Java寫,就會鄙視他這樣 但其實這有多原因需要去探討的

02/12 11:17, , 35F
一個語言好不好,不只是看個人完全掌握之後的威力,也要考慮
02/12 11:17, 35F

02/12 11:18, , 36F
組織的。有人開玩笑說二戰最好的戰車是豹式,但最好的軍團
02/12 11:18, 36F

02/12 11:18, , 37F
戰車是T-34...我很高興不用維護一堆前人的C++
02/12 11:18, 37F

02/12 11:19, , 38F
誰知道小英失戀了老王邊上班邊找新工作會寫出甚麼東西...
02/12 11:19, 38F
※ 編輯: Caesar08 (142.162.226.68), 02/12/2015 11:32:35

02/12 23:12, , 39F
原波 看起來對Java只是一知半解罷了 !!你真的懂Java ?
02/12 23:12, 39F
文章代碼(AID): #1KsuJklU (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1KsuJklU (Soft_Job)