看板 Soft_Job 關於我們 聯絡資訊
我也來發個評論好了 首先,我接觸的語言是從 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
ACEgolden: BZ沒強者?Valve沒強者?台灣看世界嗎? 02/12 02:48
每個公司都有強者,Java也有,我自己也知道這樣鄙視人不對 不過看看Ptt的文章,大家是搶著進Google、MTK多,還是搶著進BZ多?
recorriendo: lambda? 電腦還沒發明前就有lambda了 怎麼早期語言都 02/12 03:30
recorriendo: 沒有? 要加東西是看適不適合 不是先搶先贏 02/12 03:31
lambda "適不適合" C++我是不清楚 但是寫lambda比寫function object方便許多 我覺得光是這點就值得lambda應該早點納入標準了 當然,Committee可能也有他們的考量吧 也許他們覺得lambda這東西不是必要性的(畢竟可以用function object替代) 所以才那麼晚加入標準也說不定
dritchie: Java不一定比較慢 02/12 08:14
dritchie: 會pointer好棒棒 02/12 08:14
恩,你都這樣講了,我覺得我解釋我的觀點好像也沒用了
noonOut: 我並不覺得 c++ 開發速度慢,前提是大家都要懂 02/12 08:29
noonOut: lambda 最近大家搶著加 java 也是 02/12 08:31
shvanta: 執行速度上,C++比Java快.個人覺得沒什麼好爭論的 02/12 08:32
noonOut: 其實可以用 function 裡的 class 代替 02/12 08:33
noonOut: 我有點 java 思維,所以愛 virtual 多一點,比起 functor 02/12 08:34
noonOut: 3jit 某些時候會比 c++ 快 應該是因為動態替管線和分支 02/12 08:36
noonOut: 化 至於某些佔多少? 02/12 08:36
noonOut: 然後在樓上 dri 大留言以前我真的不知道 java 可以不用會 02/12 08:38
noonOut: ptr,我以為 ptr 是常識 02/12 08:38
Chikei: desktop app用java會遇到deploy的問題...這是java的硬傷 02/12 10:27
Chikei: 可以不用會ptr arithemtic沒錯,不過說可以不用會ptr指來 02/12 10:30
Chikei: 指去的觀念,那就呵呵就好 02/12 10:30
Chikei: 至於說java/c#效能很夠的,evernote 3->4才從c#+WPF轉成 02/12 10:32
Chikei: c++,有誰可以解釋一下嘛 02/12 10:33
zb26: 1.memory的釋放請相信GC (GC機制不好就修JVM或是改用JNI 02/12 10:45
zb26: 2.const只是個假象,取值之後還是可以改的 02/12 10:45
zb26: 3.阿彌陀佛還好JAVA沒有運算重載 02/12 10:46
zb26: 鄙視用Java的人>>>>我們全單位都讓你鄙視了 XD 02/12 10:47
zb26: 不過我們用JAVA打造出一套分散式的大型作業系統, 02/12 10:47
zb26: 不知道算不算有點實力? XD 02/12 10:47
這部分小弟甘拜下風,不過如果能用C++的話會更好 XD
Chikei: 1. 這看use case,寫bullet stg用GC就會是慘劇 02/12 11:00
Chikei: 2. const ref要怎麼改..... 02/12 11:00
Chikei: 3. it depends. 有些c++ lib op overload讓人想殺人 02/12 11:01
Chikei: 有些情況下java沒有op overload讓人覺得很莫名 02/12 11:01
Chikei: 鄙視用Java的人這就...有時候用一個語言是有很多因素的。 02/12 11:03
zb26: 用m16的士兵會不會鄙視用AK47的?看這精美的M16 02/12 11:04
zb26: 用Ak47只是不想卡彈死在戰場上而已 XD 02/12 11:05
Chikei: 鄙視一個語言的設計無所謂,但是人就呵呵了,選用語言因素 02/12 11:08
Chikei: 千百種,語言設計通常是優先度很低的... 02/12 11:08
然後鄙視Java這部分,真的是我主觀上的問題 不過我自己也說了,我要是寫GUI就會選擇Java(或QT) 這樣就變成自己鄙視自己了,哀 其實這個"鄙視"的部份,我自己也不是很清楚 可能是覺得 "能用C++做出來的功能,不屑用Java寫吧?" 所以看到用C++就可以做出來,卻用Java寫,就會鄙視他這樣 但其實這有多原因需要去探討的
zb26: 一個語言好不好,不只是看個人完全掌握之後的威力,也要考慮 02/12 11:17
zb26: 組織的。有人開玩笑說二戰最好的戰車是豹式,但最好的軍團 02/12 11:18
zb26: 戰車是T-34...我很高興不用維護一堆前人的C++ 02/12 11:18
zb26: 誰知道小英失戀了老王邊上班邊找新工作會寫出甚麼東西... 02/12 11:19
※ 編輯: Caesar08 (142.162.226.68), 02/12/2015 11:32:35
lachtchlee: 原波 看起來對Java只是一知半解罷了 !!你真的懂Java ? 02/12 23:12