Re: [請益] 如何學習C/C++並能使之成為應職技能?
我也來發個評論好了
首先,我接觸的語言是從 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
02/12 02:48, 1F
每個公司都有強者,Java也有,我自己也知道這樣鄙視人不對
不過看看Ptt的文章,大家是搶著進Google、MTK多,還是搶著進BZ多?
→
02/12 03:30, , 2F
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
02/12 08:14, 4F
→
02/12 08:14, , 5F
02/12 08:14, 5F
恩,你都這樣講了,我覺得我解釋我的觀點好像也沒用了
→
02/12 08:29, , 6F
02/12 08:29, 6F
→
02/12 08:31, , 7F
02/12 08:31, 7F
→
02/12 08:32, , 8F
02/12 08:32, 8F
→
02/12 08:33, , 9F
02/12 08:33, 9F
→
02/12 08:34, , 10F
02/12 08:34, 10F
推
02/12 08:36, , 11F
02/12 08:36, 11F
→
02/12 08:36, , 12F
02/12 08:36, 12F
→
02/12 08:38, , 13F
02/12 08:38, 13F
→
02/12 08:38, , 14F
02/12 08:38, 14F
→
02/12 10:27, , 15F
02/12 10:27, 15F
→
02/12 10:30, , 16F
02/12 10:30, 16F
→
02/12 10:30, , 17F
02/12 10:30, 17F
→
02/12 10:32, , 18F
02/12 10:32, 18F
→
02/12 10:33, , 19F
02/12 10:33, 19F
→
02/12 10:45, , 20F
02/12 10:45, 20F
→
02/12 10:45, , 21F
02/12 10:45, 21F
→
02/12 10:46, , 22F
02/12 10:46, 22F
→
02/12 10:47, , 23F
02/12 10:47, 23F
→
02/12 10:47, , 24F
02/12 10:47, 24F
→
02/12 10:47, , 25F
02/12 10:47, 25F
這部分小弟甘拜下風,不過如果能用C++的話會更好 XD
→
02/12 11:00, , 26F
02/12 11:00, 26F
→
02/12 11:00, , 27F
02/12 11:00, 27F
→
02/12 11:01, , 28F
02/12 11:01, 28F
→
02/12 11:01, , 29F
02/12 11:01, 29F
→
02/12 11:03, , 30F
02/12 11:03, 30F
→
02/12 11:04, , 31F
02/12 11:04, 31F
→
02/12 11:05, , 32F
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
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
02/12 23:12, 39F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 9 之 18 篇):
Soft_Job 近期熱門文章
PTT職涯區 即時熱門文章