人生苦短,我學Python。
很經典的一句話,不知道你們有沒有聽過,可能有的朋友剛來,連Python是什么都不清楚,至于為什么想要學它,理由無非是以下幾個,做爬蟲,建網站,自動化辦公,數據分析,從而解決某些效率上的具體問題。
它確實具備這樣的功能,也因為適用性廣,宜用宜學,成為了多數人入門編程的首要選擇,不少教育機構嗅到了這個商機,開始大力宣傳Python,營造了一股全民皆可學Python的熱潮,上到八十歲老人,下到三五歲的小孩都可以學,先不論這個做法對不對,但是。
你可能就是在這樣的機緣巧合下接觸到了Python,對它產生了好奇,不得不說,大范圍的宣傳讓Python走進了大眾的視野,讓更多的人知道,編程不止有C語言,還有Python。
市面上少有全面介紹Python的文章,大多是泛泛而談,點到為止,這種做法反而為它增添了幾分神秘色彩。今天,我們就來一步步揭開它的神秘面紗,從過去和現在兩個時間維度進行解讀,來幫助大家更好地理解Python,學習Python。
過去
你敢相信,Python竟然是為了打發時間而被設計出來的嗎?1989年,Python作者Guido von Rossum(龜叔)希望設計出一種介于C和shell之間,功能全面,易學易用,可拓展的語言。
是什么樣的理由,讓龜叔想要設計一款如此自然的語言呢?
要知道當時,蘋果和IBM已經掀起了個人電腦浪潮,但這些電腦配置低得可怕,早期的Macintosh(蘋果的Mac)只有8Mhz的CPU主頻和128KB的運行內存。
對比起今天動輒2Ghz的CPU主頻,16GB的運行內存,真的是小巫見大巫。
迫于無奈,當時的程序員都得像計算機一樣思考,以便寫出更符合計算機口味的程序。這種思考方式讓龜叔很是無奈,他知道如何用C語言寫出一個功能,但這個編寫過程太復雜,需要耗費大量的時間。
更多的時候,他選擇用Shell,C語言下上百行的程序,在Shell只用幾行就能解決,遺憾的是,Shell并不是真正的編程語言,它本質是調用命令,沒有數值型的數據類型,連加減乘除都很難實現。
龜叔希望有一種語言,能夠像C語言一樣,全面調用計算機的功能接口,又可以像Shell一般,幾行代碼就能輕松的實現編程。
當時的他有幸參與到ABC語言的開發,這讓他看到了希望,因為ABC語言的目標就是為了激發人們學習編程的興趣,讓編程語言變得容易閱讀,容易使用,容易記憶,容易學習。我們來看一段來自維基百科的ABC程序,這個程序用以統計文本中出現的詞(Word)的總數:
HOW TO RETURN words document:
?? ?PUT {} IN collection
?? ?FOR line IN document:
?? ??? ?FOR word IN split line:
?? ??? ??? ?IF word not.in collection:
?? ??? ??? ??? ?INSERT word IN collection
?? ?RETURN collection
可以清楚地看到,ABC語言已經非常接近自然文字了,就像我們平時說英語那般。
一個程序員是很容易理解這段程序的,小白也沒關系,我帶著你們捋一下。
HOW TO用于定義一個函數,這段函數中的冒號:和縮進來表示一個程序塊,也就是構成程序的其中一部分,for和if的結構中也沒有(),如果將HOW TO換成def,將PUT那一行改為collection=[],將INSERT那一行改為collection.append(word),這就幾乎是一個標準的Python函數了。
遺憾的是,這種接近自然文字的語言在當時還是沒能流行起來,因為它的要求太高了,需要配置較高的電腦才能運行,而這些電腦的使用者通常精通計算機,他們需要思考的點不在于語言的學習難度,而在于程序的使用效率。
除此之外,ABC語言還存在著一些致命問題,可拓展性差,傳播困難,不能直接操作文件系統,還有大多數程序員都不太能接受這種新的編寫方式,讓它在萌芽期就直接腰斬。
基于此前已經有設計ABC語言的經驗,雖然不是很成功,但龜叔還是進行了一次嘗試。這一次,也是再普通不過的hacking行為。
借著圣誕假期,他開始寫Python語言的編譯器/解釋器,之所以選中Python(大蟒蛇)作為該編程語言的名字,是取自于Guido最愛的電視喜劇《蒙提·派森的飛行馬戲團》(Monty Python's Flying Circus)。
功夫不負有心人,歷經兩年時間,于1991年,Python正式誕生,它是用C語言實現的,并能調用C語言的庫文件。
Python語言誕生后,處境還是比較尷尬的,一直處于不慍不火的狀態,前有C語言大哥,后有Java這個當紅達人。
1990年還是個人電腦的時代,盡管Internet為主體的信息革命還有十年才到來,但當時多數程序員與資深計算機用戶已經在頻繁使用Internet進行交流(包括email和newsgroup),一種新的軟件開發模式悄然流行起來:開源。程序員可以利用業余時間進行軟件開發,并開放源代碼。
只要硬件性能不受限制,Python就有了用武之地,隨后,龜叔維護了一個maillist,Python用戶就可以利用郵件進行交流,而Python的用戶背景各不相同,需求也不同,Python本身開放且容易拓展,這一下就把Python給帶火了起來。
現在
Python在編程界的熱度,再創歷史新高,它不僅贏得了年度TIOBE編程語言獎,還被授予這一年“最受歡迎的編程語言”。
我們再來看看TOP10編程語言在這十幾年的指數走勢(?2002-2020?)
如今,它已成為數據科學和機器學習等領域中最受歡迎的語言,但它也用于Web開發和后端編程,并逐漸發展到移動應用程序領域,甚至在更大的嵌入式系統中也是如此。
大量采用這種語言的主要原因是易于學習語言及其高生產率。在一個渴望在各個領域擁有更多開發人員的世界中,這兩種素質至關重要。
據統計,Python人才需求量每日高達5000+,但目前市場上會 Python的程序員少之又少,競爭小,很容易快速高薪就業。從Python開發者薪資的變化趨勢來看,目前Python正處于行業爆發初期的風口上。
從Python開發者薪資的變化趨勢來看,隨著工作年限的增長工資成直線增長。從事Python開發,所從事的工作機會和工作崗位及工作內容可選擇的余地很多,可從事大數據、數據分析師、人工智能工程師等方向,未來發展的空間大。
Python在數據分析、數據挖掘、人工智能、web開發等方面都大有發揮之處,再加上人工智能大量依賴數據,數據相關崗位人才的稀缺,Python現在的職位可謂是炙手可熱。
智聯招聘在2017年發布的《人工智能就業市場供需與發展報告》稱,人工智能人才需求量增長2倍,近七成AI人才的薪資水平在月薪1萬以上,約有1%的人才月薪在5萬元以上。
Python工程師的薪資高,并不僅僅因為他們會Python這么簡單,而是他們具備的工作能力,在互聯網人才流動中,自學能力強、技術敏銳度的程序員基本都會有好的發展,獲得豐厚的回報。
最后我還要說幾句,不管Python未來的命運如何,它的歷史本身就極其有趣,以現在的發展勢頭,它值得我們學習,值得我們去深入了解它的設計理念,以便更好地入門Python,走上Python的學習之路。
原文鏈接點這里~Python的過去和現在