在所有程式語言裡,Python並不算萌新,從1991年釋出第一個版本,至今已經快30年了。
最近幾年,隨著人工智慧概念的火爆,Python迅速升溫,成為眾多AI從業者的首選語言。
根據資料平臺 Kaggle釋出的2017年機器學習及資料科學調查報告,在工具語言使用方面,Python是資料科學家和人工智慧從業者使用最多的語言(見下圖)。
IEEE綜覽(IEEE Spectrum)釋出的2017最受歡迎程式語言列表中,Python同樣位列第一(見下圖)。
為什麼?
原因1:Python是一種說人話的語言
所謂「說人話」,是指這種語言:
-
開發者不需要關注底層
-
語法簡單直觀
-
表達形式一致
我們先來看幾個程式碼的例子:
C 語言Hello World 程式碼:
int main(){printf("Hello, World!"); return 0;}
Java 語言Hello World 程式碼:
public class HelloWorld { public static void main(String[] args){System.out.println("Hello World!");}}
Python 語言Hello World程式碼:
print("Hello World!")
僅僅是一個Hello World程式,就能看出區別了,是不是?
編譯 VS 解釋
當然,僅僅是一個Hello World的話,C和Java的程式碼也多不了幾行。
可是不要忘了,C和Java的程式碼要執行,都必須先經過編譯的環節。
對於C語言來說,在不同的作業系統上使用什麼樣的編譯器,也是一個需要斟酌的問題。一旦程式碼被copy到新的機器,執行環境和之前不同,還需要重新編譯,而那臺機器上有沒有編譯器還是一個問題,安裝上編譯器後,也許和之前最初的編譯器有所區別,還得修改原始碼來滿足編譯環境的需求……
我到底做錯了什麼?我只是想執行一個別人寫的程式而已[淚目]
而Python則不用編譯,直接執行。而且都可以不用寫檔案,一條條語句可以直接作為命令列執行。不要太方便咯。
語言語法
和Python比,Java的語法更「囉嗦」。
從上面的例子已經可以看出,建立一個連結串列,Java還需要宣告和逐個插入節點,而Python則可一行程式碼完成從連結串列建立到插入節點及賦值的全部操作。
這還只是一個例子。在真正的使用中就會發現,對於很多非常簡單基礎的操作,Java非讓你很彆扭地寫好幾行,Python直接一句搞定。
這樣的結果就是,Python寫起來省事,讀起來也方便。可讀性遠超Java。
表達風格
在10年或者更久遠之前,Python經常被用來和Perl相提並論。畢竟在那個時候,C是系統級語言,Java是面嚮對象語言,而Python & Perl則是指令碼語言的雙子星。
原因2:強大的AI支援庫
矩陣運算
NumPy由資料科學家Travis Oliphant創作,支援維度陣列與矩陣運算。結合Python內建的math和random庫,堪稱AI資料神器!有了它們,就可以放心大膽玩矩陣了!
大家知道,不管是Machine Learning,還是Deep Learning,模型、演算法、網路結構都可以用現成的,但資料是要自己負責I/O並傳遞給演算法的。
而各種演算法,實際上處理的都是矩陣和向量。
使用NumPy,矩陣的轉置、求逆、求和、叉乘、點乘……都可以輕鬆地用一行程式碼搞定,行、列可以輕易抽取,矩陣分解也不過是幾行程式碼的問題。
而且,NumPy在實現層對矩陣運算做了大量的並行化處理,通過數學運算的精巧,而不是讓使用者自己寫多執行緒程式,來提升程式效率。
有了Python這種:語法簡潔明瞭、風格統一;不需要關注底層實現;連矩陣元素都可以像在紙上寫公式一樣;寫完公式還能自動計算出結果的程式語言,開發者就可以把工作重心放在模型和演算法上了。
ML模型
用Python實現大多數經典模型,幾十上百行程式碼就夠了。
當然,對於普通使用者,也可以連演算法都不用管,只是呼叫Scikit-Learn的介面就可以了。
比如,訓練和使用一個logistic Regression模型,只需要下面幾行程式碼就可以了:
# import the LogisticRegression from sklearn.linear_model import LogisticRegression# Use default parametersclassifier = LogisticRegression()# train modelclassifier.fit(train_set, target)# do testy_hat = classifier.predict(test_set)# print out test resultsprint y_hat
原因3:規模效應
語言簡單易學,支援庫豐富強大,這兩大支柱從早期就奠定了Python的江湖地位。
根據以高收入國家Stack Overflow問題閱讀量為基礎的主要程式語言趨勢統計,可以看出,近年來,Python已然力壓Java和Javascript,成為目前發達國家增長最快的程式語言(見下圖)。
由圖可見,2012年之後,對於Python相關問題的瀏覽量迅速增長,從時間上看,這一趨勢正好和近幾年人工智慧的發展重合。
技術的普及推廣就像滾雪球,早期的積累相對緩慢,一旦過了臨界點,就是大爆發。
別的不說,就說現在tensorflow,caffe之類的深度學習框架,主體都是用Python來實現,提供的原生介面也是Python。
如今,Python在AI領域的老大地位已經奠定。
如何才能學習,緊跟科技潮流呢?往下看…………
看,在這呢☟☟☟☟☟☟☟☟☟☟☟☟☟
前幾天有小夥伴私信我,要Python的學習資料,我連夜整理了一些有深度的Python教程和參考資料,從入門到高階的都有,檔案已經打包好了,正在學習Python的同學可以免費下載學習,有興趣的可以下載來看一下。資料是我辛苦整理的可不能輕易得到喲,這樣做即可下載:點選我的頭像,關注後私信回覆「資料」即可下載。首先把程式碼擼起來!首先把程式碼擼起來!首先把程式碼擼起來!重要的事說三遍,哈哈。「程式設計是門手藝活」。什麼意思?得練啊。