C 和 C++ 值得深入學習嗎?

很長時間沒用過c/c++了。

現在經常用python,但python慢而不能並行。可能不久就要進行大規模的計算或數據處理,看來光指望一門語言確實不行

於是想把c/c++撿起來。基本確定主要深入c/c++,並漸漸用來進行複雜計算和數據處理,小東西用python,別的語言盡量不管了,因為我別的事也有好多

不過到現在我也沒多大把握,c/c++多麼值得深入?下面幾條我覺得基本都符合,但還是想來問問確認下。

性能,運行不能很慢,效率高

生命力,佔比例下降不要緊,但可預見的將來不會死

配合別的東西可並行且合適,包括cpu和gpu

如果學其他課程,適合或有幫助(編譯原理,操作系統,計算機圖形學,數據結構演算法)

跨平台,如果以後用linux,甚至在大型機等上面編程


C 跟 C++ 都值得學習,尤其是 C。但 C/C++ 不值得學習。

C++ 之父曾經親口說過,這個世界上並沒有一種叫做 C/C++ 的語言。

我認為,把他們混淆在一起的結果是你兩者都學不好。

所以,選一樣好好學,別混淆了兩者學出個四不像。


樓主你需要考察一下我VC++2012新出的C++AMP技術,開開眼界


短答案:

不建議,性價比低。

長答案:

是否深入學習取決於你的職業道路,有些職業由於各種原因適合C++或只能用C++:

× 遊戲公司的客戶端開發

× 硬體公司的驅動開發

× 操作系統內核開發

× 對性能要求極其高的應用

雖然我是個 C++ 程序員,但是如果再讓我選一次,我會選 Python 或 JavaScript 作為求生的主飯碗。為什麼?

× C++ 的學習成本太高,本身知識點太多,對智商的要求高,同時需要大量的練習。

× C++ 的編譯速度還慢,非常慢,你看,乘著編譯的時候我來回答問題了。

至於題主,如果你想搞 GPU 計算,那麼無論是 OpenGL 還是 OpenCL,都可以找到相應的 Python 庫。只要你儘可能多的讓 GPU 成為運算的瓶頸,那麼 CPU 端運行的是 Python 還是 C++ 已經不那麼重要了。類似的情況,即便 JavsScript 效率低,在使用 WebGL 將大量運算量放在顯卡後,也會出現非常華麗的實時三維遊戲,如 Artillery - The Browser is the Console。這在以前是完全無法想像的。


為什麼我覺得你這幾條對於C/C++來說完全無壓力啊...


值不值得學習,要看每個人的需求了.

對於嵌入式開發,高性能的伺服器/客戶端,驅動程序等等,當然是值得或者必須學習的(但C++的部分"高級"的,邊緣化的,未被廣泛使用的特性個人認為不值得深入學習)。從題主的情況看應該還是比較值得深入了解C/C++的。

-----------------------------關於C/C++的一些胡言亂語--------------------------------

如同某個回答里指出的,世界上的確沒有C/C++這種語言。但工業界都知道,C/C++所指的是什麼. 例如這本著名雜誌的名字就是:

C/C++ Users Journal

實際我們工程中使用的多數還是混雜了C的習慣用法的C++,而不是那種教科書式的C++。

我不覺得混在一起學會學出個四不像來,我們不是學究,非得追求"正統"的C++。是不是用steam輸入輸出就是正統,混合了printf風格就是四不像? 這些想法害死人。

之前曾經爆發過一場論戰,起因是linux Torvalds痛批C++. 但作為一個內核專家,他的視角是相當特殊的。實際在很多領域C++當然有其優勢。但C++這個龐大的語言里,一方面既缺乏某些有用的特性,而另一方面,某些高級特性很容易被誤用或者帶來很高的培訓/使用成本,具體怎樣拿捏這個尺度需要一定的工程經驗。花過多時間深入了解這些往往收益不大。這就是為什麼開頭我建議避開它們。因為付出同樣的學習成本你可以在其他方面有更多收穫。


我同時使用C++和Perl。日常任務用Perl,Perl的效率搞不定的,或者重要、可能經常復用的程序用C++。一些庫通過PerlXS構建的介面,可以在Perl里調用別的庫。

Python也是一樣的。


值得深入學習,其實也沒傳說那麼恐怖,關鍵是找對書


C 必須精通。

然後,當你覺得 Python 性能不夠的時候,去看 Cython 加速。

另外數值計算有 Numpy 之類。Numpy 甚至是有 GPGPU 加速的方法的 [1][2]

你如果不是像樓上某些靠 C++ 吃飯的人一樣依賴 C++ 這個語言的話……別指望能快速靠它做事。

[1] Using the GPU

[2] http://users.tricity.wsu.edu/~bobl/personal/mypubs/2006_gpupy_scipy.pdf


當然值得學,目前C++程序員比JAVA更稀缺


沒有值不值得,喜歡就好。


C++真不值得深入學習。C++所謂的「深入」,可以「深入」到什麼程度?像boost中的大部分代碼,我是兩眼一抹黑,完全看不懂那種。

同理還有Python,可以複雜到另外一個維度,對我而言要精通也是極難的事。

我覺得阻礙我「深入」的一個重要原因是各種編程語言的文檔都是英文的,要不然我肯定可以把C++標準輕輕鬆鬆地就給啃完了,說不定還可以過目不忘。


推薦閱讀:

C++ 自己寫一個更好的 string 需要什麼步驟?
C++樹結構實現中,為什麼要單獨定義節點類?
將並行計算納入演算法競賽,是否合適?

TAG:計算機 | 信息技術IT | C編程語言 | C | 數據結構 |