中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

四年 C++ 老炮,轉(zhuǎn)攻 Python 實(shí)踐分享

2019-01-24    來源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

 

C++ 已經(jīng)學(xué)不動(dòng)了,現(xiàn)在換 Python 還來得及嗎?一位四年工作經(jīng)驗(yàn)的 C++ 程序員親述轉(zhuǎn)型歷程,這不僅僅是語言上的轉(zhuǎn)變,而是代碼思維甚至工作環(huán)境的轉(zhuǎn)變。

通常,程序員會(huì)認(rèn)為 Python 編碼比較簡(jiǎn)單,即便是在校學(xué)生也可輕松入門,這是大多數(shù)轉(zhuǎn)型 Python 程序員的最初想法。當(dāng)然,Python 程序員現(xiàn)在的社會(huì)需求更大,薪資也相對(duì)更高一些。隨著 C++ 的日益增負(fù),不少程序員都抱怨“希望 C++ 別再加了,實(shí)在是學(xué)不動(dòng)了”,本文講述了一名具備四年工作經(jīng)驗(yàn)的 C++ 程序員轉(zhuǎn)行學(xué)習(xí) Python 的心路歷程。

由深入淺

最近幾年,從 C++ 轉(zhuǎn)型 Python 的程序員不在少數(shù),畢竟由深入淺易,由淺入深難。學(xué)習(xí) C ++ 感覺就像在海里深潛,潛的越深,景色越美,但需要付出更多時(shí)間和精力?偟膩碚f,最終所覆蓋的距離并不會(huì)很大。Python 有點(diǎn)像浮潛,很容易觸碰,如果可以持續(xù)投入學(xué)習(xí),很快就可以有所領(lǐng)悟。從這兒可以清楚看出,每種語言都應(yīng)該在正確的地點(diǎn)和時(shí)間使用。

C ++ 語法更嚴(yán)格,Python 庫(kù)更豐富

C ++ 語法更加嚴(yán)格,一旦出現(xiàn)編碼錯(cuò)誤,基本會(huì)連帶發(fā)生很嚴(yán)重的后果。C++ 程序員通常需要深入了解計(jì)算機(jī)、編譯器和編程語言語法。當(dāng)深入了解時(shí),我們可以看到并被一些事物所吸引,比如編譯過程和內(nèi)存管理。

作為 C ++ 程序員,大部分人往往更關(guān)心語法調(diào)整和場(chǎng)景用例,注重內(nèi)存分配及釋放。程序更加獨(dú)立,編程人員往往清楚知道代碼會(huì)發(fā)生什么,同時(shí)認(rèn)為其他人寫的代碼不太可靠,更容易出錯(cuò),并且可能會(huì)破壞內(nèi)存用量。

C++ 程序員的主要日常工具是 Vim,有許多用于編寫代碼的插件,用于調(diào)試的 GDB 和用于分析內(nèi)存使用和錯(cuò)誤的 Valgrind,可能用 g++ 編譯并編寫 Makefile。此時(shí),作者并不認(rèn)為 IDE 會(huì)讓其受益,反而非常依賴編譯器來查找錯(cuò)誤類型。

轉(zhuǎn)型 Python,要學(xué)會(huì)放手

轉(zhuǎn)換 Python 需要學(xué)習(xí)的第一件事就是放手,程序員不必再了解底層發(fā)生了什么,內(nèi)存是否被分配或釋放,這些都沒有關(guān)系。因?yàn)?Python 可以使用其他人編寫的代碼,這些代碼被打包成庫(kù),程序員可直接在代碼中調(diào)用,可以節(jié)省時(shí)間并幫助更快地編寫代碼。這并不意味著編碼速度變慢,或者依賴未維護(hù)和無功能的庫(kù),但重點(diǎn)肯定是不同的。

當(dāng)作者開始用 Python 編寫代碼時(shí),首先用 Python 編寫了 C ++ 代碼,雖然這也可以生成最終運(yùn)行效果,但并沒有從 Python 語言中獲益。只有以更“Pythonic”的方式編寫并使用庫(kù)以及更高級(jí)的概念(如生成器,裝飾器和上下文)時(shí),Python 編碼才得到改進(jìn)。

作為一名 Python 開發(fā)人員,傾向于首先考慮能解決手頭問題的庫(kù)。Python 擁有豐富的庫(kù)生態(tài)系統(tǒng)和支持社區(qū),幾乎可以完成任何事情。目前比較常用的庫(kù)是,NumPy 用于數(shù)值計(jì)算,OpenCV 用于計(jì)算機(jī)視覺,json 用于讀取 json 文件,SciPy 用于科學(xué)計(jì)算,sqlite3 用于數(shù)據(jù)庫(kù)。

目前,作者使用的日常工具是帶有 IdeaVim 插件的 PyCharm(一個(gè) IDE),一個(gè)功能強(qiáng)大的調(diào)試器,比默認(rèn)的 Python 調(diào)試器 pdb 更友好,也會(huì)使用 pip 來安裝需要的庫(kù)。除非真的需要,否則不會(huì)再監(jiān)視內(nèi)存使用情況。

實(shí)用技巧

如果是 C ++ 開發(fā)人員,并且考慮開始使用 Python 編寫代碼,以下是作者的建議:

擺脫舊習(xí)慣。停止使用 C ++ 編譯器作為調(diào)試器,不過度優(yōu)化內(nèi)存使用情況。避免編寫類似 C ++ 的代碼,盡量不依賴類型。

培養(yǎng)新習(xí)慣。開始使用庫(kù)寫 Pythonic 代碼(但不要過度)。

保持可讀性。使用更復(fù)雜的概念,例如生成器、裝飾器、上下文等,可以試試 PyCharm。

使用 C ++ 和 Python 公共庫(kù)。某些 C ++ 庫(kù)(如 OpenCV 和 QT)具有 Python 接口,程序員很容易在 Python 中使用相同的庫(kù),而不是從頭開始學(xué)習(xí)新庫(kù)。

不要忘記二者的本質(zhì)區(qū)別。Python 有時(shí)太慢或不適合任務(wù),這就到了運(yùn)用 C ++ 知識(shí)的時(shí)候了。在 Python 中使用 C ++ 代碼的方法有很多,比如 SIP、ctypes 等。

結(jié)語

當(dāng)轉(zhuǎn)換到一種新的編程語言,尤其是與個(gè)人習(xí)慣完全不同的語言時(shí),需要花費(fèi)大量時(shí)間學(xué)習(xí)、挖掘、發(fā)現(xiàn),最重要的是要明白不僅語言應(yīng)該改變,編碼風(fēng)格和工作方法也要改變,因此需要提前做好大量準(zhǔn)備工作。

作者:趙鈺瑩

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

標(biāo)簽: 代碼 數(shù)據(jù)庫(kù) 轉(zhuǎn)型

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:多變量數(shù)據(jù)協(xié)同可視探索框架

下一篇:Kafka 背后公司獲 1.25 億融資,估值超 25 億美元