屬于新十年的開(kāi)發(fā)語(yǔ)言:Go語(yǔ)言可能很快會(huì)取代Python
本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)
30年前,Python首次亮相,它花了20年才得到開(kāi)發(fā)者的贊賞。如今,它已經(jīng)成為開(kāi)發(fā)者第二喜愛(ài)的語(yǔ)言。尤其是在過(guò)去五年里,Python用戶(hù)激增,成為機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)開(kāi)發(fā)者的首選語(yǔ)言。

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


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
















 
 
 




 
 
 
 