我是如何放棄C ++走向Python的?


我是如何放棄C ++走向Python的?


人們說用Python編碼是如此簡單,即使是6歲的小孩兒也可以做到。 這是我在開始使用Python編寫代碼時想到的想法。 我當時已有4年程序開發經驗,主要在Linux上用C ++編寫,基於QT庫。 但是,我最初編寫了糟糕的Python代碼。

我從C++轉Python已經有3年了,我認為是時候總結一下我在這段時間取得的進展。 回顧過去,我不僅改變了我的主要編程語言,還改變了我的工作環境和我對代碼的思考方式。

我不會詳細介紹C ++和Python之間的細節和差異,因為網上有很多資源,而是描述我自己的經驗。 我希望這篇文章對於經歷與我有相同或者相似經歷的人們有所幫助,少走彎路。

C ++像潛水,Python像浮潛


C ++感覺就像潛水一樣,你可以潛入大海深處去探索海洋的神奇奧秘 ,它很美,但需要更多的學習和練習,總的來說,你可以潛入很深,但是潛水所覆蓋的面積並不是那麼大。 Python有點像浮潛 ,只要你把頭伸進水裡就能看到美麗,但是你不會走得更遠。你在淺水區游泳,可以很容易地遊得很遠。從這個描述可以清楚地看出,每種語言都應該在正確的地點和時間使用。

深入C ++倖存

C ++更嚴格,會對你的錯誤進行更嚴厲的懲罰。在你的編碼過程中,幾乎很難避免段錯誤。因此,使用 C++ 編程需要開發者深入瞭解計算機、編譯器和編程語言。隨著學習過程的深入,你可以看到很多美好的東西,比如編譯過程和內存管理。

作為一名C ++程序員,我更關心各種語法的運用。我總是知道我在哪裡分配內存以及我是如何釋放內存的。我寫的程序更獨立,因為我更喜歡知道我的代碼中發生了什麼。主要的想法是,其他人寫的代碼不太可靠,更容易出錯,並且可能會破壞你的內存使用量。

我的主要日常工具是Vim,有許多用於編寫代碼的插件,用於調試的GDB和用於分析我的內存使用和錯誤的Valgrind。我用g ++編譯並編寫了自己的Makefile。那時候,我並不認為IDE會讓我受益,但寧可放慢速度,也不會讓我失去對代碼的影響。回想起來,我非常依賴編譯器來查找我的類型錯誤。

在Python中淺泳


轉換到Python時需要學習的第一件事就是如何放手,你不知道底層發生了什麼,內存被分配和釋放,而且沒關係。我們還鼓勵您使用由其他人編寫的代碼,這些代碼將打包到庫中,因為它可以節省您的時間並幫助您更快地編寫代碼。這並不意味著您需要編寫狗慢的代碼並依賴於未維護和無功能的庫,但重點肯定是不同的。

當我開始用Python編寫代碼時,我首先用Python編寫C ++代碼。它奏效了,但我沒有從語言中獲益。當我開始以更“Pythonic”的方式編寫並開始使用庫以及更高級的概念(如生成器,裝飾器和上下文)時,我的編碼得到了改進。

作為一名Python開發人員,我傾向於首先考慮解決手頭問題的庫。 Python擁有豐富的圖書館生態系統和支持它的社區。有幾乎可以做任何事情的圖書館。以下是我每天使用的一些方便的:NumPy用於數值計算,OpenCV用於計算機視覺,json用於讀取json文件,SciPy用於科學計算,sqlite3用於數據庫。

我的日常工具是帶有IdeaVim插件的PyCharm(是的,一個IDE)。我開始使用它主要是因為它是一個功能強大的調試器,它比默認的Python調試器pdb更友好。我也使用pip來安裝我需要的庫。除非我真的需要,否則我不再監視我的內存使用情況。

一些實用技巧


如果您是C ++開發人員,並且考慮開始使用Python編寫代碼,以下是我的建議:

  • 改掉舊習慣 :停止使用C ++編譯器作為調試器。不要過度優化內存使用情況。避免編寫類似C ++的代碼。並且無論如何,儘量不要依賴類型。


  • 養成新習慣 : 開始寫Pythonic代碼(但不要過度)。保持可讀性。使用更復雜的概念,例如生成器/裝飾器/上下文。試試PyCharm。
  • 使用C ++和Python公共庫 :某些C ++庫(如OpenCV和QT)具有Python接口。很容易在Python中使用相同的庫,而不是從頭開始學習新的庫。


  • 不要忘記C++,根據應用場景選擇合適的編程語言 - 有時Python太慢或不適合任務。這就是你的C ++知識開始的時候。在Python中使用C ++代碼的方法很多(SIP,ctypes等)。


底線


無論其他人說什麼,切換到不同的編程語言,尤其是與您習慣的語言根本不同的語言,並不容易。花時間學習,挖掘,發現。但最重要的是,要明白不僅語言應該改變,而且你的編碼風格和工作方法也要改變。


分享到:


相關文章: