我是一個剛學C++的小白。我想請問下,C++即沒有python的numpy pandas,也沒有matlab直接處理數據的功能,連從excel裡面導入數據都超級麻煩,更別說實現遺傳演算法的框架什麼的了。我就想請問下,這個看上去啥都沒用的C++,真要用來開發演算法進行數據分析什麼的,咋做啊?我看招聘都有C++在數據挖掘演算法方面的崗位,用C++咋做啊?


1. 怕是你不知道這世界上還有庫這玩意。打個比方,跟沒庫的 C++ 一樣,沒有包的 Python 也屁都不是。

  • 譬如線性代數的庫 https://gitlab.com/libeigen/eigen
  • 譬如讀寫 Excel 的庫 https://github.com/tfussell/xlnt
  • 另外在這個列表裡也有一些機器學習相關的庫 https://zh.cppreference.com/w/cpp/links/libs
  • 除了上面以外,還有很多優秀的庫,在 github 上多逛逛都能發現

再不濟,C++ 作為和 C 兼容的語言,也能天然地和 Python 等一大波語言交互。


2. C++ 的標準庫只提供一些基本的需求,當然不可能包辦所有事項,就像 Python 的語核部分也沒什麼東西。要更多功能只能靠引入第三方的庫/包。題主作為初學者不知道這些也無可厚非。相比 Python 下包很多很方便,C++ 沒有一個通行的包管理系統是很大的硬傷。這樣相比 pip 下一鍵安裝,C++ 庫的安裝會比較麻煩。有的 C++ 庫不是下載一個壓縮包然後解壓縮那麼簡單,甚至有的庫是需要自己本地編譯的。這一點就限制了很多優秀的庫的傳播。


3. 你談到的這些東西本來就不是 C++ 適合的領域,所以用 C++ 做這些本來就很小眾。C++ 適合做大型的、複雜的、底層的、必須是高性能的項目,比如資料庫 (例:MySQL),比如編譯器 (gcc clang),比如遊戲引擎,比如其他腳本語言的虛擬機或者運行時 (比如給 Python 寫包)。


4. Python 寫幾個腳本看起來是很酷很拽,但那只是計算機領域的一隅。底層的東西還是 C/C++ 給你鋪的。不懂點底層的東西,一輩子也就是個調包的水平。


你猜你說的那些py,matlab的功能是哪裡來的?一樣用編程語言寫的。

編程就像搭積木,用最基礎的東西搭建略微複雜一些的組件,再以此為基礎搭建更複雜的,層層疊疊,最後構成像萬千世界一樣複雜的程序。

其他回答里告訴你所謂 庫 的存在,這所謂的庫就是別人編寫的這些或基礎或已經很複雜的組件,你可以自己組合他們加入自己的邏輯,完成任務。這就是所謂現代大多數軟體開發的工作。


你說的numpy pandas等都是Python的庫,在C++中同樣有類似的庫可以使用。

你可以在github上搜索 awesome-cpp來查看。


演算法與什麼編程語言無關,一個確定的演算法用什麼編程語言都能實現。


python得庫都是哪裡來的,你要知道如果不讓你用庫你自己寫演算法,只依靠基礎語言功能,你怎麼寫? 你現在做的演算法其實是基於別人的基礎演算法或者部分功能演算法做二次開發,而這些基礎或者功能演算法大多是由c,cpp編寫而成的庫,就像你買車,但是輪子 車的發動機也要有人造,不是發動機不需要製造的,像汽油一樣直接就有的。


  1. cpp也有庫,一樣的,那麼多好用的功能都是別人寫的
  2. cpp性能好一些,所以在對性能敏感的場所會用到


你明顯不適合這個崗位,放棄吧,換別的。


這些python包底層都是用C++實現的啊


你用的這些所謂的庫,都是站在巨人的肩膀上,要沒他們,你能用的這麼香? 然而底層就是用這些覺得很煩的c/c++ 寫的


推薦閱讀:
相关文章