寫這篇文章之前,我已經做好了被罵的準備,但是有一些事情必須要提,儘管可能會觸碰到一些人的乳酪,不過道理確實擺在那裡,不偏不倚。
當前世界最火爆的語言非python莫屬。
做人工智慧?python
做網站?python
做app?python
做科學研究?python
似乎每一個領域都被它強勢的“插足”,並且給每一個領域注入了新鮮的血液。從這一點來說,python無可厚非,絕對是一款你值得深入了解的語言。
但是如果真的以python來入門,是明智之舉麼?我先不給答案,咱們慢慢看下去。
為什麼很多機構主推從0開始學python之類的課程
對於任何一個(或者說絕大多數)願意在網際網路上寫文章,拍視訊,討好使用者的人而言,他們都有著自己的目的。我也不例外,無非都是想獲取關注,拿到流量,再去做自己的一些其他事情。
很多機構也很討巧的去迎合時代,大力鼓吹python簡單易學,拿起來就能用,其實這個套路已經玩了很多年了,比如python還不火的時候,那時候各種機構都是吹爆“21天學會c++”,“21天學會c#”之類。
當越來越多的人發現21天能學會個錘子的時候,他們又換了個新的玩法。
如果我們將一套完整的系統比作是一場宴席。
那麼對於c語言來說,相當於自己鍛造了一把好刀,悉心養了一頭豬,田地裡種了莊家,對於所有的一切事物都在自己的掌握之中。做起菜來遊刃有餘,該放多少鹽,該加多少水都了然於胸。
而對於更高階(並不是說這些語言更好)一些的語言,比如c#,Java,則更像是從市場買了一把刀,買了一些食材。回家之後切切剁剁,如何煮米,如何炒菜還是在自己的掌握之中,可能有時候需要去查一下app看看具體的做法,但最終還是經過實踐,做出了一桌好菜。
而對於python而言,可能這個故事就更加現代一些了,如果今晚6點你約了一幫朋友來家裡吃飯,這時候已經5點半了而你還躺在沙發玩手機,看了一眼時間,還有半小時,差不多了。
這時候開啟外賣app,從附近的某家餐廳叫了一桌菜,小哥送來以後你把菜從外賣盒裡取出,放在了自己的盤子中。
水煮魚怎麼做的?不用在意。
鍋包肉炸的還是炒的?不用在意。
番茄炒蛋是先炒番茄還是先炒蛋?不用在意。
反正最後吃到嘴裡,覺得好吃就行了。
如果這一家外賣的味道不好,下次就換一家,總歸有符合自己胃口的,反正我們的目標就是,不做飯。如果這時候我問你,酸辣土豆絲該放多少鹽?你可能會說,“嗯。。我在留言裡寫了,別太鹹。。”
別覺得我是在譁眾取寵,事實基本就是如此,當然我並不抨擊叫外賣不對,只是對於一個行業的從業者而言,不要求你必須是“新東方”的大廚,最起碼也得自己知道每道菜的來龍去脈吧。
如果你只是玩票性質,隨便學學程式設計的,那你以一種快餐的形式去“填飽肚子”還是可以理解的。
注:我從來沒說過python不好,只是不建議以其入門。
曾經寫過一些技術類的文章,當聊到資料型別的時候,很多人會跳出來。
“我用python,沒有資料型別。”
首先來說,python中也是有資料型別的,只是不用顯性的體現出來,就像是javascript中的var一樣。反正不管什麼型別,最終都會動態的去進行操作。
我並不認為連資料型別是什麼都不知道就盲目的去編寫程式碼是一種時尚,skr!比如對於一些簡單的資料拼接,為什麼數字型不能直接和字串拼接?為什麼有的時候顯示是0有的時候是0.00。
再比如python中大量的使用lambda表示式,這對於新手來說會非常困惑。也許使用起來會信手拈來但是問到這裡面到底做了些什麼事情的時候,鮮有人知。
對於lambda表示式而言,也就是我們所說的匿名函式。以c#為例,想寫出一個漂亮的匿名函式絕對屬於高階技能。需要大量的了解委託,泛型,甚至LINQ,SQL的內容。
而說的簡單一些,對於一個lambda表示式而言,也是在做一次次的迴圈,去找出符合條件的資料(當然實際情況會酷炫一些)。
但是這一切在python中都太抽象了,抽象到你不用去理解。甚至當你習慣了python思維之後,你無法去理解別的語言為何如此麻煩。默默的在心中問一句,“何不食肉糜?”別覺得這是危言聳聽,某興為什麼被制裁後一蹶不起,還不就是習慣了這種模式麼。
再比如說一個簡單的for迴圈,需要有flag控制次數,需要有步長,對於其他語言來說,這是一種固定的模式(當然其他語言也大多支援了foreach的寫法),但是python就比較直接,扔過去一個可迴圈的object,其他就不用管了,直接去操作每一個內部元素就萬事大吉了,甚至可以每次在迴圈體內直接獲取到當前index,省心!
但是如果想在技術的路上走得遠,走得穩,那麼就更應該潛心去了解程式碼的世界到底在做些什麼。也可以很負責的說,以當前世界而言,少有以python入門而在行業內走上“巔峰”的人物。大多是在熟練的掌握了c/c++或者其他一些面嚮物件語言的基礎上,去轉型python的。
如果你聽說過膠水語言,那麼應該更了解,python中非常多的大型第三方庫,底層都是c編寫的。
至於為什麼,因為快啊!如果c語言的執行速度是汽車,那麼python的速度則大概相當於單車或者步行。比如yolov3(一套非常棒的圖片識別系統),當然首先是GPU的功勞,但是他的底層是純c語言編寫的。就一個字,“這是飛揚的感覺!!!!”
寫在末尾,我從不黑python,他很棒,很智慧,很容易上手,但是我並不推薦你以他入門。這樣你在未來的使用中,會產生各種疑問,為什麼可以這樣,為什麼不能這樣等等。(如果覺得c和c++讓你無法理解,比如被指標繞的頭疼,以c#或者java入門也是很好的。)
比如你我用了十多年的時間,學會了數學的一些原理,最終對於微積分的一些內容理解起來更為直接,比如你懂什麼是極限,什麼是斜率之類。
但是現在python中只用幾行程式碼,就可以告訴你某一個函式的微分是什麼,在具體某一點的偏導數是什麼。第一感覺會是爽,但是慢慢的會產生許多無奈,因為你根本不知道,他在幹什麼。
你眼中的幾行程式碼,背後也許有著數百行,甚至上萬行的程式碼支援著,如果並不了解其中的原理而直接使用,算不上是聰明的事。
最後,為了幫助大家更好的學習Python,小編給大家準備了Python400集學習資料和視訊教程。老規矩,轉發此文+關注 並 私信小編 “ 學習 ”即可領取。