為什麼說沒有程式設計基礎的小白學Python最合適?

愛程式設計的程式猿發表於2019-06-03

作為現在最熱的語言,Python自有其強大之處。 Python的哪些特性更容易讓小白快速如門、讓有經驗者提升演算法能力?今天我們就來分享一位大神的回答。

既然Python那麼簡單易如門,學Python會降低程式設計能力嗎?


作為一個做科學計算的碼農,這裡必須答! 不會!


首先我們來定義一下什麼叫 程式設計能力 。私以為應該同時包含兩個部分: 寫程式碼的能力 ,以及 演算法、資料結構設計能力

如果你想要學好Python可以加入一個組織,這樣大家學習的話就比較方便,還能夠共同交流和分享資料,給你推薦一個學習的組織學習有可學習有困難或者想獲取Python資料請加Python學習Q群629440234,互相學習,互相分享學習資料


從小學四年級開始學QBasic,到中學學Pascal和C,本科時一發不可收拾,幹挺C++、Java的同時搞定Obj-C,讀研前又很快的掌握了Python,最近又學了Swift,用過這麼多語言的唯一感想只不過是一個高階語言除了區分是物件化的還是過程化,其餘什麼的區別不大,它就是個語言而已。用QB同樣可以寫個平衡樹,C沒有STL的話要用到的功能自己寫一遍就好,也不會太複雜。


Python是個解釋語言, 同時還是個語法自由度相當大的語言,這就意味著寫程式時絕大多數錯誤是隻有當你的程式跑到出錯語句的時候才會提示出來的,這一點與其他編譯語言差別非常大,以至於當你用Python寫個不太小的玩意時,必須有非常 清晰的概念 、對語言和對 程式流程的掌握


Python裡 任意變數都是物件指標的設計 ,使得程式設計的人必須瞭解直譯器執行機制。從這一點看, Python對於建立程式設計概念,瞭解程式執行機制是有很大幫助的。 比起無腦Debug-Watch,縝密的思維以及看著程式碼就能準確分析執行情況的能力,更有助於寫出優秀的程式碼,也是對程式碼能力的鍛鍊。


至於 演算法能力的鍛鍊,與語言本身毫無關聯 ,Python相比C++一輩最大的好處就是在程式設計之時不需要為諸如變數申請之類的問題操心,可以更加流暢地實現心中所想。我喜歡用Python做演算法和思想的驗證,就是因為省事,學習、理解演算法,甚至設計新的演算法,重要的還是個量的問題。思考夠了,就要迅速實現,然後嘗試更多方案。因此, Python這樣一個程式設計省時的語言是提高演算法能力的好工具。


總體來說,無論寫程式碼能力還是演算法設計能力,都是靠 多寫 多想 來鍛鍊的。Python會不會降低程式設計能力,也就看會不會減少你寫和想的機會。


老一派的程式設計師可能會覺得Python這種玩意有大量模組,很多程式碼不用自己寫,減少了寫複雜內容的機會。事實上是一個程式好不好並不是由手寫快排或者捏個平衡樹之類的玩意確定的。面對有STL的C++,你還會蛋疼到為了排個陣列而寫快排麼?中學時我能把Splay tree背得滾瓜爛熟,10分鐘能用Pascal敲400來行寫一個Splay tree,但是那又如何? 單調重複的程式碼背下來寫一萬遍並不會提高程式設計能力 ,甚至算不上多寫。


相反,現在別人都造好了輪子等你來用,一方面能更快實現目的,同樣的時間裡你能寫更多的不同的程式,另一方面能針對自己的需求對輪子進行改造,有信心的話把個輪子改造成直升機螺旋槳都不成問題。 Python給予了更大的創造的空間 ,與多寫多想並不矛盾。


非要說Python的問題,那就是執行效率了。不過好歹效率還沒差出兩三個數量級,做做原型啊思想驗證啊什麼的,效率也不是最重要的問題。原型驗證了,有繼續開發的價值,影響效率的部分用別的語言寫一遍編譯一下就好了嘛! Python就像畫速寫和素描 ,或許比不上油畫,後續最終不能掛上畫框開展覽,但一定是鍛鍊基礎的有力工具。


要明白一點,程式設計並不是搬磚的活計,不把自己當藝術家,好歹也要當自己是個工匠,而不是個苦力小工。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69904667/viewspace-2646549/,如需轉載,請註明出處,否則將追究法律責任。

相關文章