屬于新十年的開發(fā)語言:Go語言可能很快會(huì)取代Python
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
30年前,Python首次亮相,它花了20年才得到開發(fā)者的贊賞。如今,它已經(jīng)成為開發(fā)者第二喜愛的語言。尤其是在過去五年里,Python用戶激增,成為機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)開發(fā)者的首選語言。
在未來幾年里,Python在這些領(lǐng)域的主導(dǎo)地位必然是很難被動(dòng)搖的。但與較新的語言相比,它依然存在嚴(yán)重的缺陷。這也是20年代開發(fā)者們所面臨的障礙。現(xiàn)在正是反思Python的問題并選擇更好的語言取代它的最好時(shí)機(jī)。對(duì)于人工智能開發(fā)和數(shù)據(jù)科學(xué)來說,下一個(gè)首選語言可能是Go語言。
Python廣受歡迎的原因
Python廣受歡迎的主要原因是它很容易學(xué)習(xí)。與其他語言相比,它的語法很簡(jiǎn)單,任何人都能在幾小時(shí)或幾天內(nèi)學(xué)會(huì)Python基礎(chǔ)知識(shí)。就算學(xué)習(xí)了C++或Java等其他語言,開發(fā)者還是更傾向于使用Python。這是因?yàn)镻ython的庫幾乎可以滿足用戶的所有需求。
Python 的問題
速度
Python是解釋語言,這導(dǎo)致了其較大問題——執(zhí)行速度慢。與C++和Go等其他編譯語言相比,Python的執(zhí)行速度非常慢。Python還是動(dòng)態(tài)語言。變量的數(shù)據(jù)類型在運(yùn)行時(shí)自動(dòng)分配,這導(dǎo)致其執(zhí)行速度變得更慢。
C/C++的使用
為了克服Python執(zhí)行緩慢的問題,Tensorflow、Numpy和Pandas等庫部分是用C或C++編寫的。這能大幅提高執(zhí)行速度?;旧螾ython需要借助其他語言來克服自身問題。
全局解釋器鎖
Python的全局解釋器鎖(GIL)一次只允許執(zhí)行一個(gè)線程,同時(shí)提高了單線程性能。Python的多線程并不是真正的多線程同時(shí)運(yùn)行。事實(shí)上,Python做不到真正的多線程。
注意,Python非CPython實(shí)現(xiàn)的部分,比如Jython和IronPython沒有GIL。
為什么選擇Go語言?
Go是開源編程語言,它使得構(gòu)建簡(jiǎn)單、可靠且高效的軟件變得容易。10年前,Go首次亮相,它在谷歌作為通用語言開發(fā)。與Python和其他編程語言相比,它有一些顯著的優(yōu)勢(shì)。
快速
Go是靜態(tài)編譯語言。這意味著其執(zhí)行速度要比Python快好幾倍。與Python不同,Go不需要其他語言的幫助;另外,Go編譯代碼的速度比C++和Java還快得多。
易于學(xué)習(xí)
Go的語法和C相似,比較簡(jiǎn)單,是一門易于學(xué)習(xí)的編程語言,特別是對(duì)于那些已經(jīng)了解C或Java基礎(chǔ)知識(shí)的人。想要學(xué)習(xí)Go的基礎(chǔ)知識(shí),可以在A Tour of Go網(wǎng)站進(jìn)行交互式學(xué)習(xí),或者閱讀官方文檔。
日益流行
Hackearth調(diào)查了來自76個(gè)國(guó)家的16000多名開發(fā)者,顯示Go是2020年很受歡迎的編程語言。無需驚訝,有32%富有經(jīng)驗(yàn)的開發(fā)者和29%的學(xué)生表示想學(xué)Go。


并發(fā)性
并發(fā)性是Go的優(yōu)勢(shì)之一。它擁有Goroutines來實(shí)現(xiàn)并發(fā),Goroutines是一些可以同時(shí)獨(dú)立運(yùn)行的函數(shù)。Goroutines體積很小,只占用2kB內(nèi)存,你可以同時(shí)運(yùn)行成千上萬個(gè)Goroutines函數(shù)。
Go為什么適合人工智能研究
實(shí)際上,對(duì)于人工智能研究和數(shù)據(jù)科學(xué)來說,Go沒有任何特殊之處。那么究竟為什么開發(fā)者會(huì)選擇它呢?
30年前,開發(fā)Python不是為了構(gòu)建機(jī)器學(xué)習(xí)或深度學(xué)習(xí)算法,也不是為了實(shí)現(xiàn)數(shù)據(jù)可視化。它之所以成為今天這個(gè)樣子,是因?yàn)殚_發(fā)者和學(xué)生喜歡用Python,而且它能夠支持開發(fā)者開發(fā)他們想要的東西。
Go旨在提高程序員的工作效率。相比Python,它的幾大優(yōu)勢(shì)讓它很容易在未來幾年取代Python成為很受歡迎的語言。最后一言以蔽之:相比其他任何語言,Go可以更好地支持“20年代開發(fā)者”開拓創(chuàng)新。