Go:20 年代的人工智能和數(shù)據(jù)科學(xué)編程語(yǔ)言
AI 和數(shù)據(jù)科學(xué)領(lǐng)域,一直是 Python 的天下。國(guó)內(nèi)七牛云搞了一個(gè) Go+,想要進(jìn)入數(shù)據(jù)科學(xué)領(lǐng)域。有人認(rèn)為,Go 可能會(huì)在 AI 和數(shù)據(jù)科學(xué)領(lǐng)域占據(jù)一席之地。看看他怎么說的。
30 年前,Python 誕生。但是花了 20 年時(shí)間才能獲得開發(fā)人員的贊賞。快進(jìn)到 2019 年,它成為開發(fā)人員中第二受歡迎的語(yǔ)言,就在最近(2021 年 10 月)它超越了 C 成為第一(TIOBE)。
過去,尤其是在過去的 5 年中,它的增長(zhǎng)是巨大的。Python 成為機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)開發(fā)人員的首選語(yǔ)言。
在接下來的幾年中,Python 在這些領(lǐng)域的主導(dǎo)地位無疑將是巨大的。但是與更新的語(yǔ)言相比,它具有一些嚴(yán)重的缺點(diǎn)。對(duì)于 20 年代的開發(fā)者來說,這可能是一個(gè)障礙。
現(xiàn)在是檢查 Python 問題并將其替換為更好的替代方法的正確時(shí)機(jī)。就 AI 開發(fā)和數(shù)據(jù)科學(xué)而言,我認(rèn)為下一個(gè)入門語(yǔ)言可能是 Go。
01 Python 受歡迎的原因
Python 受歡迎的主要原因是它易于學(xué)習(xí)。與其他語(yǔ)言相比,它的語(yǔ)法很簡(jiǎn)單,任何人都可以在幾小時(shí)或幾天內(nèi)學(xué)習(xí) Python 的基礎(chǔ)知識(shí)。
即使在學(xué)習(xí)了其他語(yǔ)言(例如 C++或 Java)之后,開發(fā)人員通常還是更喜歡使用 Python。那是因?yàn)?Python 豐富的庫(kù),幾乎可以滿足所有人的要求。
庫(kù)和簡(jiǎn)單的語(yǔ)法使使用 Python 開發(fā)軟件既簡(jiǎn)單又高效。這些優(yōu)勢(shì)使 Python 成為了初學(xué)者的語(yǔ)言。
02 Python 問題
速度
Python 是一種解釋型語(yǔ)言,這引起 Python 的最大問題 —— 執(zhí)行慢。與其他編譯語(yǔ)言(例如 C++ 和 Go)相比,Python 的執(zhí)行速度很慢,非常慢。
Python 是一門動(dòng)態(tài)類型的語(yǔ)言。在運(yùn)行期間會(huì)自動(dòng)分配變量的數(shù)據(jù)類型。這使執(zhí)行速度大大降低。
使用 C/C++
為了克服 Python 執(zhí)行慢的問題,Tensorflow,Numpy 和 Pandas 之類的庫(kù)部分用 C 或 C++編寫。它們有助于顯著提高執(zhí)行速度。
基本上,Python 需要其他語(yǔ)言的幫助才能克服其問題。
全局解釋器鎖(GIL)
Python 的全局解釋器鎖(GIL)一次只能執(zhí)行一個(gè)線程,同時(shí)提高了單線程性能。Python 的多線程并沒有真正讓多個(gè)線程同時(shí)運(yùn)行。
實(shí)際上,Python 無法執(zhí)行真正的多線程。
(注意:Python 的非 CPython 實(shí)現(xiàn)(例如 Jython 和 IronPython 沒有 GIL))
03 為什么要使用 Go 語(yǔ)言?
Go 是一種開放源代碼編程語(yǔ)言,可輕松構(gòu)建,簡(jiǎn)單,可靠和高效。
“ Go”在 10 來年前首次亮相。它是 Google 開發(fā)的通用語(yǔ)言。
與 Python 和其他編程語(yǔ)言相比,它具有多個(gè)優(yōu)勢(shì),這就是我們感興趣的原因。
快速
Go 是靜態(tài)類型和編譯的語(yǔ)言。這意味著執(zhí)行速度將比 Python 快幾倍。與 Python 不同,Go 不需要其他語(yǔ)言的幫助就可以更快。
這[1]是 Go 和 Python 之間的一個(gè)小型基準(zhǔn)測(cè)試比較。Go 幾乎與 C++ 和 Java 一樣快。而且,Go 的代碼編譯速度比 C++和 Java 快得多。
簡(jiǎn)單易學(xué)
Go 的語(yǔ)法很簡(jiǎn)單,類似于 C。它是一種易于學(xué)習(xí)的編程語(yǔ)言,特別是已經(jīng)了解 C 或 Java 語(yǔ)言的基礎(chǔ)知識(shí)的人。
要了解 Go 的基礎(chǔ)知識(shí),請(qǐng)?jiān)L問Go 之旅[2]進(jìn)行交互式之旅或訪問官方文檔[3]。
越來越受歡迎
根據(jù)此次[4]Hackearth 對(duì)來自 76 個(gè)國(guó)家/地區(qū)的 16,000 多名開發(fā)人員的調(diào)查,Go 是 2020 年最受歡迎的編程語(yǔ)言。
32%的經(jīng)驗(yàn)豐富的開發(fā)人員和 29%的學(xué)生說他們想學(xué)習(xí) Go 不足為奇。


并發(fā)
并發(fā)是 Go 的主要優(yōu)勢(shì)之一。Go 具有 Goroutines 以實(shí)現(xiàn)并發(fā)。Goroutines 是可以同時(shí)獨(dú)立運(yùn)行的函數(shù)。
Goroutine 重量輕,僅占用 2kB 的內(nèi)存。由于 Goroutine 輕巧,因此可以同時(shí)運(yùn)行數(shù)千上萬個(gè)。
Go 還有很多其他優(yōu)點(diǎn)。查閱 Keval Patel 的這篇深入文章。《為什么要學(xué)習(xí) Go?“ Go 將成為未來的服務(wù)器語(yǔ)言”》:https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65
04 是什么使 Go 適用于 AI 開發(fā)
將 Go 專門用于 AI 開發(fā)或數(shù)據(jù)科學(xué)并沒有什么特別的。為什么應(yīng)將 Go 用于 AI 和數(shù)據(jù)科學(xué)?我會(huì)告訴你的...但是等一下
30 年前,尚未開發(fā) Python 來構(gòu)建機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法或進(jìn)行數(shù)據(jù)可視化。
之所以是今天,是因?yàn)殚_發(fā)人員和學(xué)生們喜歡用 Python 進(jìn)行代碼編寫,并且支持開發(fā)該開發(fā)人員意圖的語(yǔ)言。
Go 旨在提高程序員的生產(chǎn)力。與 Python 相比,它具有多個(gè)優(yōu)點(diǎn)。它很可能會(huì)在未來幾年中成功取代 Python,成為最受歡迎的語(yǔ)言。
因此,它可以歸結(jié)為一句話:
Go 可以支持“ 21 世紀(jì) 20 年代的開發(fā)人員”發(fā)展他們的思想,這比任何其他語(yǔ)言都要好得多。
你認(rèn)可嗎?歡迎留言交流!
原文鏈接:https://towardsdatascience.com/golang-ai-programming-language-for-the-20s-71890baa8c47
參考資料
這: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-python3.html
[2]Go 之旅: https://tour.golang.org/list
[3]文檔: https://golang.org/doc/
[4]此次: https://www.hackerearth.com/recruit/developer-survey/
推薦閱讀
