人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

在人類發展史上,從來沒有任何一項技術及其應用能像計算機網絡一樣發展如此迅速。對人們的工作、生活、消費和交往方式影響如此巨大,並且隨著信息化的網絡社會的到來,人類傳統的生產方式、生活方式和生存狀態都發生著翻天覆地的變化。

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

而計算機的運行離不開程序,編寫程序就要需要用到計算機語言。我們今天說說常用的計算機語言中的Python。

網上說Python是一個不務正業的人發明的:"是"也"不是"。

" 是 "是因為:Python是Guido van Rossum創立的, 1989年聖誕節,他在阿姆斯特丹很無聊,決定開發一種新的腳本解釋語言,之所以選擇Python(大蟒蛇)作為程序的名字,是因為他是一個大蟒蛇飛行馬戲團的愛好者。他的愛好很廣泛,看起來像無所事事的。

" 不是 "是因為:在Python開發之前,他也是ABC語言的設計者,最終ABC沒有獲得成功,Guido認為是因為ABC沒有開源, 所以在Python上就特別重視開源和與其它語言的結合。

Python 是一種解釋性腳本語言,不是像c++/java那樣的高級語言,需要編譯成字節碼之後才能運行,它可以邊運行邊解釋。而它的設計也堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言。

而且隨著人工智能的興起,近幾年Python的熱度更是逐漸上漲,眾多AI從業者都會首選Python,下面我們看兩組數據:

根據數據平臺 Kaggle發佈的2017年機器學習及數據科學調查報告,在工具語言使用方面,Python是數據科學家和人工智能從業者使用最多的語言(見下圖)。

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

IEEE綜覽(IEEE Spectrum)發佈的2017最受歡迎編程語言列表中,Python同樣位列第一(見下圖)。

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

為什麼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則是腳本語言的雙子星。

Python和Perl在設計層面有一個非常大的區別:

Python力求讓不同的人在撰寫同樣功能實現的代碼時,所用的表達形式儘量一致;

而Perl則是故意追求表達的千姿百態,讓同一個人在不同地方寫同樣功能時所用具體形式都不同。

從哲學層面講,Perl的追求更加自由主義,更利於釋放人類的多樣化天性。然而,Perl寫的程序——那叫一個亂七八糟!

如果不是想成為代碼詩人,或者語言大師,只是想用盡量簡單直接的方法,把事情做了,首選語言確實是Python。

原因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

支持圖表

Python還有許多圖標方面的支持庫。用來生成dashboard上的各種圖形表格,是非常簡單的事情。

比如使用Plotly圖形庫,下面這些炫彩的圖形,就隨便用啦:

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

原因3:規模效應

語言簡單易學,支持庫豐富強大,這兩大支柱從早期就奠定了Python的江湖地位。

根據以高收入國家Stack Overflow問題閱讀量為基礎的主要編程語言趨勢統計,可以看出,近年來,Python已然力壓Java和Javascript,成為目前發達國家增長最快的編程語言(見下圖)。

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?

由圖可見,2012年之後,對於Python相關問題的瀏覽量迅速增長,從時間上看,這一趨勢正好和近幾年人工智能的發展重合。

總結:

技術的普及推廣就像滾雪球,早期的積累相對緩慢,一旦過了臨界點,就是大爆發。中國已進入人工智能迅速發展的時代,而當下熱門的Python被認為是現階段人工智能技術的首選編程語言。

如今,Python在AI領域的老大地位已經奠定。

若要學AI,舍Python其誰?

請關注+私信回覆:“測試”就可以免費拿到軟件測試學習資料。

人工智能最火編程語言:Python大戰Java,Python為何能穩坐頭牌?


分享到:


相關文章: