成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從C++轉Python:要改變你的思維方式

開發 開發工具 后端
有人說用 Python 編程很簡單,6 歲小孩都能學會。計算機視覺專家和編程語言愛好者 asya f 剛開始上手 Python 時也這么想。但門檻低就僅意味著使用簡單嗎?經常調用 API 的人是不是一定比可以從零寫出源碼的人菜?在本文中,asya f 告訴我們,從 C++轉向 Python,是一次「從個人到社區」的思維轉變。

從 C++ 轉 Python 的時候,我已經是一個有四年全職工作經驗的軟件開發者了。我的工作主要是用 C++在 Linux 上編程,是 QT 庫的重度用戶。但剛開始用 Python 的時候,我卻寫得很爛。

從 C++到 Python 的過渡已經有了大約三年時間,我覺得是時候總結一下這段時間的經歷了。回想起來,我改變的不只是自己所用的編程語言,還有工作方式和我對代碼的看法。

C++和 Python 的區別此處不做贅述,網上可以找到很多相關信息。此處只講述我的個人經歷。

[[255953]]

從 C++跳到 Python

C++是跳水,Python 是潛水

C++給人的感覺就像是一頭扎進奇幻神秘的大海里——它是如此美妙,但需要更多學習和訓練。總的來看,你游過的水面不會很大。而 Python 有點像潛水——把頭伸進水里就能看到它的美,但你不會太深入,而是在淺水里游啊游,可以輕易地游過很大一片地方。兩種語言如此不同,所以適用的場景也不同。

深入 C++并努力成為幸存者

C++更為嚴格,在你犯錯的時候會更加嚴厲地懲罰你。一次都沒有收到過 Segmentation fault 的編碼會話算不上有效的編碼會話。因此,你需要更加了解計算機、編譯器和語言。如果深入下去,你會被其中蘊含的美所打動,如編譯過程和內存管理。

作為一名 C++程序員,我更關心句法調整和奇怪的例子。我一直知道我是怎么分配、釋放內存的。我寫的程序更加獨立,因為我更想知道自己的代碼內部究竟發生了什么。我主要是覺得其他人編寫的代碼不太可靠,更容易出錯,并且可能會增加內存使用量。

Vim、GDB 和 Valgrind 是我用到的主要日常工具*。*Vim 有很多用于編寫代碼的插件,GDB 用于 debug,Valgrind 用于分析我的內存占用和錯誤。我用 g++編譯,自己寫 Makefiles。那時候,我覺得 IDE 沒什么用,還會拖慢速度,讓我失去接觸代碼的機會。回想起來,我非常依賴編譯器來查找類型錯誤。

[[255954]]

圖源:Unsplash;上傳者:Jakob Boman

淺嘗 Python

轉向 Python 時,你需要學習的***件事情就是如何放手:你不知道代碼的底層到底發生了什么,內存被分配到哪里、釋放到哪里,但沒關系。你也會被鼓勵使用其他人寫的封裝為庫的代碼,這能幫助你節省時間,提高編碼速度。這并不意味著你需要寫慢如蝸牛并依賴于無維護和無功能的庫的代碼,其中的關鍵是很不同的。

剛開始用 Python 寫代碼時,我用 Python 寫 C++。這也行得通,但我并沒有從這門語言中獲得任何收益。當我開始以更加 Python 式的風格來寫代碼并使用庫以及更多高級概念(如 generators、decorators 和 contexts)時,我的編程技巧才得到提升。

作為一個 Python 開發者,我傾向于首先尋找能解決眼前問題的庫。Python 擁有豐富的庫生態系統和社區的支持。有很多具有專門用途的庫。這些是我經常會用到的庫:NumPy(數值計算)、OpenCV(計算機視覺)、json(閱讀 json 文件)、SciPy(科學計算)、sqlite3(數據庫)。

我每天使用的工具是帶有 IdeaVim 插件的 PyCharm(這是一個 IDE)。我開始用這個工具是因為它是一個很強大的調試器,比默認的 Python 調試器 pdb 更加友好。我還使用了 pip 來安裝需要的庫。除非必要,我一般都不再監控內存使用了。

[[255955]]

圖源:Unsplash ;上傳者:Channey

一些實用技巧

如果你是一個 C++開發者,并且考慮開始寫 Python,以下是我的一些建議:

  • 改掉老習慣:別再使用 C++編譯器作為調試器。不用再過度優化內存使用。避免寫出 C++風格的代碼。并且無論如何,不要再依賴類型。
  • 養成新習慣:開始使用庫。寫 Python 式的代碼(但不要為了寫而寫),保證代碼的可讀性。嘗試使用一些更加復雜的概念,如 generators、decorators、contexts。嘗試 PyCharm。
  • 使用 C++和 Python 共用庫:一些 C++庫(如 OpenCV、QT)有 Python 接口。在 Python 中使用相同的庫會比從零開始學習一個新庫更加容易。
  • 勿忘初心:有時候 Python 實在是太慢或者不適合你的任務,C++經驗就派上用場了。有很多方式(SIP、ctypes 等)可以讓你在 Python 內使用 C++代碼。

結語

無論其他人說什么,切換到另一種編程語言都不容易,尤其是切換到一種與你用過的語言完全不同的語言。你要花時間去學習、挖掘、發現。但最重要的是,你要改變的不僅僅是語言,還有編碼風格和工作方法。

【本文是51CTO專欄機構“機器之心”的原創譯文,微信公眾號“機器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-03-26 10:35:49

C++Python編程語言

2017-11-07 12:43:13

PythonC++語言

2022-11-28 09:58:58

C++開發

2022-08-30 08:13:30

流程模板定期復盤數據

2010-02-03 15:27:26

C++ static

2021-07-23 16:30:36

PythonC++代碼

2018-05-15 11:14:07

面試官C++編程

2024-03-12 08:29:28

C++類型轉換方式

2009-09-04 17:34:11

C#CC++

2010-01-22 15:14:37

學習C++

2010-01-20 14:03:12

C++程序

2010-01-18 13:42:51

C++代碼

2010-02-06 17:39:52

C++ strtok

2010-02-05 16:46:58

C++ TinyXml

2010-01-25 14:56:08

C++程序

2010-01-21 11:23:58

C++函數調用

2015-06-25 11:21:33

C++Objective-C

2021-12-06 23:00:36

CC++編程語言

2022-12-30 10:37:39

QA測試

2021-05-06 10:33:30

C++Napiv8
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久婷婷国产综合精品电影 | 精品乱码一区二区三四区 | 欧美中文在线 | 亚洲欧美日韩网站 | 免费看淫片 | 亚洲成人免费在线 | 日本久久综合网 | 中文字幕精品一区二区三区精品 | 欧洲一级黄| 欧美成人自拍视频 | 日韩一区二区在线视频 | 91视频国产一区 | 91精品国产91久久久久久最新 | 日韩中文字幕 | 亚洲 中文 欧美 日韩 在线观看 | 粉色午夜视频 | 国产成人午夜精品影院游乐网 | 狠狠的操 | av在线一区二区三区 | 日日摸夜夜添夜夜添精品视频 | 99re在线视频 | 日本福利一区 | 激情久久av一区av二区av三区 | 伊人二区 | h视频免费在线观看 | 日韩国产免费观看 | 99国内精品久久久久久久 | 亚洲精品电影在线观看 | 草草精品 | 亚洲高清久久 | 一二三区av| 国产免费一区二区三区最新6 | 国产精品久久av | 91在线中文字幕 | 中国黄色在线视频 | 亚洲区一区二 | 日韩一区二区三区在线观看 | 国产高清一区二区三区 | 亚洲国产精品一区二区三区 | 国产免费一区二区 | 在线免费毛片 |