03.02 Python相比Java,C++這些語言有什麼優勢,人工智能為什麼首選它?

strongerlonger


最近幾年伴隨著大數據的發展,人工智能也迎來了前所未有的發展契機,大量的專業人才湧向了人工智能領域,相信未來人工智能領域會進一步贏得市場的追捧。

首先要說明的是人工智能方面的研發是可以使用Java的,我在早期做機器學習方面的實驗使用的就是Java語言,當然C++也是可以的。為什麼現在大部分研發人員都使用Python做人工智能方面的實驗,一個很重要的原因就是用Python做實驗開發週期短。

做一個簡單的類比,我最初一段時間使用Java做算法實現,很多內容是需要自己完成的,如果使用Java來實現樸素貝葉斯算法(算法本身的基本實現)大概需要100行左右的代碼,換做Python來實現同樣的功能我只使用了40行代碼,差距十分明顯。

其次,還有一點比較關鍵,就是Python非常簡單。使用過Java的程序員通常都有這樣的感覺,Java是一個“儀式感”很強的語言,比如你使用Java只寫了3個類和一個接口,此時你卻可能需要打4個包,而這在Java程序員看來是理所當然的。Python在這一點上做的比較徹底,幾乎通過代碼縮進而取消了所有的儀式感,簡單實用且不失優雅,所以使用Python比較容易。

另外,Python中定義了一系列庫,比如Numpy、Matplotlib、Scipy等,這些庫對人工智能開發起到了很大的幫助,使得使用Python開發更像是使用積木,只要把這些模塊按照算法流程搭建起來就可以了,很多東西不用自己去構建,這當然節省了大量的開發時間。

最後,雖然大部分實驗都使用Python開發,但是很多最終產品通常要使用其他語言來進行重寫,因為Python太慢了。但是也要具體問題具體分析,我做過一個智能診療的機器學習系統,驗證階段和最終使用都採用了Python開發,因為效率能滿足實際需要,使用雲端部署能提供強大的計算能力從而保證了項目的運行效率。

總之,使用Python做人工智能方面的研發確實很方便,我目前也一直在使用Python,如果大家有這方面的問題,可以跟我交流。


IT人劉俊明


正好Python,Java,C++的項目我都做過,說說我的體會吧。

Java和C++都是我在工作中常常用到的,也是目前大型項目最常用的開發語言。沒接觸Python之前,有複雜的算法用Java寫的更多一些。後來我業餘時間開始做量化交易,大部分量化平臺首選都是用的Python語言,於是就開始學Python,確是十分好用,現在已經寫出了不少量化策略。

我認為Python的優勢主要有以下幾點:

易上手

這也是Python流行的最主要原因,由於Python的簡潔設計,只要有點編程基礎的話,學習Python非常簡單,低門檻自然容易讓比較多的人接受。

代碼簡潔

本來用Java寫量化模擬,但後來用Python寫了一對比,確實方便不少,特別是一些算法模擬的實驗,如果用Java也能寫,但就顯得笨重。因為這些模擬實驗往往是一些小的代碼片段,Java或者C++是無法簡潔的執行這麼輕量的流程的。

輕量級

還是對於人工智能的研究實驗,Python是一款輕量級的腳本語言,處理代碼片段效率非常高,因此對運行環境的要求也不高,甚至很多網站都提供了在線的Python研究功能。這是Java和C++所不具備的。

科學計算

人工智能自然少不了大量的科學計算,Python裡的各種科學計算庫,數學庫恰恰非常好用,不光效率高,而且好入門,讓數學不好的人也能輕鬆使用。


最後說下,我覺得人工智能是綜合技術的體現,不能說哪門語言就一定是首選了,比如TensorFlow是用了好幾種編程語言的集合,用的最多的語言其實是C++,Python用量佔第二位,根據不同的需求活用各種語言才是最佳解決方案。


程序員寧軍


首先要說明的前提是,人工智能的底層算法通常還是C/C++,其他語言封裝了其接口方便調用,所以看起來好像是其他語言。

Python相比於Java、C++相比,有一些優勢讓其在人工智能時代斬頭露角:

1. 語法簡單易學。Python等解釋性語言通常語法更加接近偽代碼,更加方便人類理解,因此相比於對機器友好的C等語言會更加容易上手。這對於需要專注於構建人工智能應用的統計學家和數據科學家來說更加友好,因此受到他們的歡迎。

2. 豐富的標準庫和第三方庫。Python的標準庫提供了一系列可以方便數據處理的庫,開發者們又寫了很多可以方便數據處理、數據分析和各種計算的庫,讓Python的開發生態十分友好。比如說,處理字符串的標準庫string、re等,做爬蟲、處理網絡數據的request、bs4等,科學計算和數據分析領域的numpy、scipy、statsmodels、sklearn、pandas、sympy等。

3. 膠水語言特性。Python可以通過各種原生支持和第三方庫調用其他語言,這樣可以充分結合許多語言的特性,可以大大提高開發效率和性能優勢。在涉及大量計算的模塊,可以使用C/C++等語言,其他模塊使用Python豐富的標準庫和第三方庫即可。當然這對於開發者的開發能力要求比較高,要對許多語言熟悉。

4. Google、Facebook等大公司的支持。他們一直以來就有用Python的傳統,比如Google搜索引擎的早期版本就是Python寫的。很早開始進行人工智能領域開發的大公司們開源了很多人工智能的第三方庫以方便開發者使用。比如,Google開源的深度學習框架TensorFlow等。


量潮科技張果


Python優勢是易學,是一種輕量型腳本解釋型動態語言,無指針,無須擔心內存洩露等問題,最重要的是具有豐富的算法庫。而Java等語言目標是支持多種場景使用,可以用於多種大型項目,是重量級靜態語言,一般非常適合一些複雜的大型非計算型程序。因為人工智能對算法要求高,而Python支持的又好,又好用,所以就選他了啊。實際從Python運行原理上分析,它的運行速度並不快,但是它的優勢掩蓋了這些缺點啊!


分享到:


相關文章: