當前位置:
首頁 > 科技 > 學了4年C+後,我轉向了Python

學了4年C+後,我轉向了Python

作者 | asya f

編譯 | Lisa

C 已經學不動了,現在換 Python 還來得及嗎?一位四年工作經驗的 C 程序員親述轉型歷程,這不僅僅是語言上的轉變,而是代碼思維甚至工作環境的轉變。

通常,程序員會認為 Python 編碼比較簡單,即便是在校學生也可輕鬆入門,這是大多數轉型 Python 程序員的最初想法。當然,Python 程序員現在的社會需求更大,薪資也相對更高一些。隨著 C 的日益增負,不少程序員都抱怨「希望 C 別再加了,實在是學不動了」,本文講述了一名具備四年工作經驗的 C 程序員轉行學習 Python 的心路歷程。

1

由深入淺

最近幾年,從 C 轉型 Python 的程序員不在少數,畢竟由深入淺易,由淺入深難。學習 C 感覺就像在海里深潛,潛的越深,景色越美,但需要付出更多時間和精力。總的來說,最終所覆蓋的距離並不會很大。Python 有點像浮潛,很容易觸碰,如果可以持續投入學習,很快就可以有所領悟。從這兒可以清楚看出,每種語言都應該在正確的地點和時間使用。

2

C 語法更嚴格,Python 庫更豐富

C 語法更加嚴格,一旦出現編碼錯誤,基本會連帶發生很嚴重的後果。C 程序員通常需要深入了解計算機、編譯器和編程語言語法。當深入了解時,我們可以看到並被一些事物所吸引,比如編譯過程和內存管理。

作為 C 程序員,大部分人往往更關心語法調整和場景用例,注重內存分配及釋放。程序更加獨立,編程人員往往清楚知道代碼會發生什麼,同時認為其他人寫的代碼不太可靠,更容易出錯,並且可能會破壞內存用量。

C 程序員的主要日常工具是 Vim,有許多用於編寫代碼的插件,用於調試的 GDB 和用於分析內存使用和錯誤的 Valgrind,可能用 g 編譯並編寫 Makefile。此時,作者並不認為 IDE 會讓其受益,反而非常依賴編譯器來查找錯誤類型。

3

轉型 Python,要學會放手

轉換 Python 需要學習的第一件事就是放手,程序員不必再了解底層發生了什麼,內存是否被分配或釋放,這些都沒有關係。因為 Python 可以使用其他人編寫的代碼,這些代碼被打包成庫,程序員可直接在代碼中調用,可以節省時間並幫助更快地編寫代碼。這並不意味著編碼速度變慢,或者依賴未維護和無功能的庫,但重點肯定是不同的。

當作者開始用 Python 編寫代碼時,首先用 Python 編寫了 C 代碼,雖然這也可以生成最終運行效果,但並沒有從 Python 語言中獲益。只有以更「Pythonic」的方式編寫並使用庫以及更高級的概念(如生成器,裝飾器和上下文)時,Python 編碼才得到改進。

作為一名 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 中使用相同的庫,而不是從頭開始學習新庫。

不要忘記二者的本質區別。Python 有時太慢或不適合任務,這就到了運用 C 知識的時候了。在 Python 中使用 C 代碼的方法有很多,比如 SIP、ctypes 等。

4

寫在最後

當轉換到一種新的編程語言,尤其是與個人習慣完全不同的語言時,需要花費大量時間學習、挖掘、發現,最重要的是要明白不僅語言應該改變,編碼風格和工作方法也要改變,因此需要提前做好大量準備工作。

英文原文

https://medium.freecodecamp.org/how-i-went-from-c-to-python-a-conceptual-change-8bf29d059428

點個好看少個 bug


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

GitHub 9K Star!Apollo作者手把手教你微服務配置中心之道
AICon開幕倒計時2周,Google、微軟、BAT、華為等人工智慧黑科技搶先看!

TAG:InfoQ |