初衷:最初是寫c語言的,後來加入python大軍,python寫起來是真的快,而且很舒服,但是效率真的是不敢恭維,於是將自己的python**轉換為c++,在這個過程中,有過很多的坑,自己也在學習繼續前行,於是寫下來,給自己做個紀念,也替他人趟下坑.
部落格的流程:1 簡述python語言和c++語言的特點,作為後續工作的出發點
2 python程式和c++程式相互轉換的一些思路和注意點
3 swig作為介面的引入,python和c++粘合到一起,實現混合程式設計.
目的:
既要利用python簡單來實現迅速的開發,又要利用c++的高效,**執行速度快的優點,迭代優化開發出的**.
先說一下python吧,python 是一種物件導向的,解釋性的高階語言.python最大的優點就是簡單,簡單,簡單,重要的事情說三遍.
1python作為一種高階語言,所謂高階語言在我看來就是越來越符合人的思考方式.大家很清楚,程式肯定是要執行在計算機上,因此最終都會轉換為機器碼,機器能理解的語言.因此程式的一種發展之路就是從靠近機器的硬體結構,一步一步的走向靠近人的思維方式.因此越是高階語言,你用起來,思考起來就會感覺很流暢.python很明顯就是一種高階語言,當你明白程式的三大結構,順序,分支,迴圈之後,理解一下其中的list,dict之後,就可以很快上手了,順著你的應用,你更深入的學習,你會喜歡上這種感覺.簡單,方便,易於理解,是我接觸的語言裡最容易上手的.想起當年的彙編,那個暫存器讓我一言難盡.
2 python是一種解釋性的語言,所謂解釋性的語言,是相對於c/c++這種編譯型的語言來說的,你寫好python程式,原始碼就可以執行,在計算機的內部,python直譯器吧源**轉換成位元組碼的中間形式,然後再翻譯成機器碼執行.當你深入了解一下c++的編譯鏈結過程,以及其中的bug,你就知道,嘻嘻,python好簡單.
3python開源,有眾多的庫可以呼叫.當你使用python寫程式的時候,很多功能強大的庫供你使用,比如scikit-learn庫,裡面機器學習演算法,你可以迅速的開發出你要的演算法,來驗證你的思路.
4python是物件導向的語言.物件導向是和面向過程相比較的.這裡就簡單的說一下吧,面向過程是一種將整個做事的流程,分成乙個乙個模組,當所有的模組完成之後,整個事件就完成了,我們平時很多的做事方式都是這樣,比如說高考吧,首先你要報名,然後答題,接著閱卷,出成績.物件導向,其核心就是將事物封裝成乙個乙個物件,裡面包含資料和函式.這樣可以有效的實現物件的一種分離,對於構建大型程式有很大的幫助.當你完成物件的構建後,程式執行就是就是物件之間相互發訊息,依靠訊息來完成任務.
python缺點:python簡單易用,為了符合人的思維做了很多的封裝,因此整個的**執行速度慢,很慢.尤其和c++這種編譯型的語言相比.
c++本來是在c的基礎上擴充套件了物件導向功能而來的語言,能夠完全對c語言相容.
1語言簡潔,緊湊,**的執行效率高,速度快.
2c++既可以進行面向過程的程式設計,也可以進行物件導向的程式設計
3 c++也具備眾多的庫,很方便應用
4 c++中有著乙個功能強大的資料型別,指標,你用了指標會一直用一直爽的,哈哈.
c++在完成源**後,需要進行編譯和鏈結,在linux上進行開發的時候,常使cmake來完成這個功能,而且在鏈結編譯階段會有很多的bug,加上c++語言更偏向於機器多一點,因此思維上需要考慮記憶體相關的問題.你最直觀的感受c++和python的不同就是資料型別的問題了,python不是一種強資料型別的語言,型別隨時改變,如下圖所示,但是你在c++裡需要注意這個問題,直接這樣做會報錯.
C語言特點
1972年,美國貝爾實驗室的dm.ritchie在b語言的基礎上設計出了c語言。1 語言簡潔 緊湊,使用方便 靈活。c語言原有32個關鍵字 c99增加5個,c11增加7個 9種控制語言,程式書寫形式自由,主要用小寫字母表示。2 運算子豐富。豐富靈活的運算子可以實現其他高階語言難以實現的運算。3 資料...
C語言特點
c語言靈活性較高,裡面有很多陷阱,看c語言原始碼先看標頭檔案,裡面包含了大部分資料結構。c語言具有下面一些特點 由於c語言關鍵字少 只有32個,輸入輸出都是庫函式,而不是關鍵字 所以c語言程式便於移植 要加上相應的庫函式,然後再編譯。在高階語言當中c語言可移植性較好 很多運算子 34個運算子 使得c...
Python 語言特點
使用者可以自由地發布這個軟體的拷貝 閱讀它的源 對它做改動 把它的一部分用於新的自由軟體中 編譯 將源 一次性轉化為目標 的過程。源 採用某種程式語言編寫的電腦程式。目標 計算機可直接執行的 解釋 將源 逐條轉化為目標 同時逐條執行的過程。互動式 對每個輸入語句即時執行結果,適合語法練習。檔案式 批...