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++樹結構實現中,為什麼要單獨定義節點類?
※將並行計算納入演算法競賽,是否合適?