C++背景,自學Python,需要多久時間


C++背景,自學Python,需要多久時間

相信很多程序猿朋友在日常開發項目的過程中,多多少少都會接觸到與自己擅長語言不同的其他編程語言。很多猿友可能第一反應是有些擔心自己不能勝任。這種心理可能與從事技術性質的工作有關。一般技術人員因為工作性質的原因,對待問題都會比較嚴謹,尤其是涉獵到自己不太熟悉的領域,態度會更加謹慎。而作為編程語言這個基礎工具,很多程序猿會更加謹慎,尤其是一些在自己擅長的語言有一定經驗的程序員,在接觸新語言時,擔心自己對新語言的特性瞭解的不夠深而犯下一些低級錯誤,所以很多時候都會顯得比較保守。這裡首先應該鼓勵的是,作為技術人員,要多接觸一些新的技術領域,新的編程語言,因為任何新興的技術一定是在已有技術基礎上發展起來的,不會脫節,所以一定會有繼承性,既然有繼承性,那麼已有的技術經驗就會你在學習新技術,新語言方面提供更大的幫助。

C++背景,自學Python,需要多久時間

作為一個近10年C++的開發者,我的經驗可能有一定的主觀性,因為熟悉C++的朋友可能會比較清楚,C++是在C語言基礎上發展起來的一門面向對象語言,雖然是一個面向對象的語言,但是因為這門語言歷史相對比較悠久,所以整個語言體系的複雜度比較高,學習曲線也比較陡,普遍認為3年C++工作經驗的才算是入門。很多人認為,學會了C++,再學習任何其他高級語言都是降維攻擊,會非常簡單。其實這種觀點有一定的誇張和偏頗,但是卻也有一定的客觀性。Java,Python等高級語言,本身都是面嚮對象語言,所以即使語言不同,但是他們的基本語法是非常相似的,主要的區別可能是一些數據結構的用法和新特性。理論上講,只要你精通一門面向對象語言,學習其他語言還是相對容易很多的。當然,編程語言的發展一定是朝著易用性的,所以原則上講,學習較新的語言相對來說會更容易一些。下面就以本人學習Python經驗,並完成一個簡單的項目為例,給大家介紹一下入門新語言的過程。

首先Python是一門動態語言,這點和C++是有本質的區別的。不過Python語法和C++也十分相似,除了用代碼對齊取代花括號來編排代碼塊以外,在初期學習上,基本沒有太多的不適應。這裡要強調的一點是,編程語言本身只是一門工具,既然是工具,要想達到熟練掌握的程度,就是要不斷的在實踐中去使用它,打磨它,只有這樣才能在最短的時間掌握一門語言的精髓。第一次因為工作需要,接觸Python時,我還是先找了一本電子書翻看了一下基本的語法,整個過程大概用了不到一上午的時間,因為很多語法和C++相同,所以只需一眼帶過即可。然後便直接用一個真實小項目上手開幹了。

項目簡介:

項目需求:獲取某個GCP(Google Cloud Platform)工程下所有的GCE instance 資源,並獲取每個 VM 的生命週期,以及每個VM對應鏡像的生命週期。對那些生命期即將超期的資源,向他們的創建者發送郵件警告。而對那些已經超期的 VM 將做強制關閉操作。

運行以及開發環境:Linux Redhat, Pycharm(社區版)

項目資源:Google Cloud Platform

設計方案:通過Jenkins 調用 Pyhon腳本獲取對應即將超期和已經超期的 VM 列表,然後由Jenkins 根據Python返回的列表,進行郵件通知以及關閉 VM 的操作。

完成周期:3天

可以看出來,整個項目還是非常簡單的,Python腳本部分負責主要的邏輯處理過程。整個開發流程大概用了不到3天的時間,第一天基本是用來學習基本語法,以及搭建開發環境。因為Python對應庫不同版本之間差異較大,所以一般不會在本機直接安裝依賴庫,而是通過創建虛擬環境(virtual environment)來隔離不同庫,從而保證開發環境和本級環境隔離。

環境搭建好後,就是直接安裝依賴庫進行開發了,該項目依賴Google client library, 直接Google對應的安裝教程,安裝最新版本的庫即可,然後就是根據Google Cloud API 官方文檔進行開發。Google在幫助文檔方面還是比較友好的,在API說明文檔中,提供了REST調用界面,只要auth Google account後,可以直接在web界面上輸入對應API的參數,並返回相應的結果。這點對於調試還是很有幫助的。可能是API 說明文檔沒有及時更新的緣故,有些真實接口的參數名字和返回結果和說明文檔上有些出入,導致代最終代碼結果和說明文檔預期的不符,這也是本人在真實開發過程中走過的彎路。所以對於一個新內容的學習過程,邊開發,邊調試,對於快速準確理解其特性是很有幫助的。在開發過程中,肯定會用到一些數據結構,例如這個小項目中用到了 List, Map, Dictionay等,這些數據結構對應在C++下都有,但是Python下可能使用的具體方式稍有區別,這時可能就要去Google一些Python下常用數據結構的具體用法。其實這個過程並不如想象的那麼耗時,因為數據結構的原理是相同的,只要你瞭解不同數據結構的特性和使用場景,知道當下需求需要使用List,還是Map,那麼去找對應Python是如何使用的,這個過程是非常簡單的,只要看一兩個例子就完全能夠明白用法。其他邏輯部分的開發過程就類似了。整個Python編碼過程加上Development Test, 大概只用了不到兩天的時間。因為當時手頭上還有其他的任務,所以理論上時間可以進一步壓縮的。

所以從本人真實的經歷出發,C++背景從零開始學Python,應該還是可以很快上手的,當然,你說對Python語言本身有多麼深入的理解,還談不上,但是作為一門工具語言,學會使用是第一步的,只有在真實工程項目中不斷使用,不斷打磨,才能對一門語言有更深入的理解。在這也鼓勵那些想學習Python的猿友們,儘量用真實的項目去帶動學習,這樣才更有針對性,天天翻語法書是很難進步的。碰到不熟悉的語法隨時去查閱,多練習,多設計,這樣才能更快更好的掌握一門語言。希望對各位小夥伴有所幫助。


分享到:


相關文章: