go web和python web哪個(gè)前景更好?
網(wǎng)友解答: 新人受邀,受寵若驚吶~首先我們來(lái)看一下前幾天IEEE Spectrum雜志發(fā)布的一年一度的編程語(yǔ)言排行榜,這個(gè)排行榜還是很有說(shuō)服力的,已經(jīng)連續(xù)發(fā)布了五年了,并且綜合了9個(gè)重要
新人受邀,受寵若驚吶~
首先我們來(lái)看一下前幾天IEEE Spectrum雜志發(fā)布的一年一度的編程語(yǔ)言排行榜,這個(gè)排行榜還是很有說(shuō)服力的,已經(jīng)連續(xù)發(fā)布了五年了,并且綜合了9個(gè)重要數(shù)據(jù)源的11個(gè)指標(biāo),例如Google Search,Google Trends, Twitter, GitHub等,對(duì)48中語(yǔ)言進(jìn)行了排名。
可以看到Python排在第一,這兩年P(guān)ython勢(shì)頭一直不滅反盛,那么是不是PythonWeb就一定好呢?
我們先來(lái)分析一下Python怎么火起來(lái)的,這幾年大數(shù)據(jù),云計(jì)算,人工智能火的一塌糊涂,行業(yè)缺口達(dá)到了頂峰,Python在數(shù)據(jù)處理上有著得天獨(dú)厚的優(yōu)勢(shì),Python在安裝時(shí)就默認(rèn)附帶了很多的高級(jí)數(shù)據(jù)類型例如列表、元組、字典、集合、隊(duì)列等等,無(wú)需進(jìn)一步的封裝處理就可以對(duì)這類數(shù)據(jù)進(jìn)行操作,而且其代碼簡(jiǎn)潔在相比于java,C等傳統(tǒng)語(yǔ)言處理數(shù)據(jù)時(shí),其高效的代碼質(zhì)量深受人們青睞。
顯而易見(jiàn)的是Python在數(shù)據(jù)方面的應(yīng)用居多,實(shí)際上在web開(kāi)發(fā)中公司更青睞于PHP或者Java這類語(yǔ)言,在企業(yè)招聘web開(kāi)發(fā)人員時(shí),Python是居于少數(shù)的,在國(guó)內(nèi)PythonWeb的前景是不理想的,拿BAT來(lái)說(shuō),百度傾向于PHP,阿里用的最多的是JAVA,騰訊用c和PHP居多。雖然國(guó)內(nèi)也有Python開(kāi)發(fā)web成功的案例,例如知乎,豆瓣這些網(wǎng)站,但是相比于其他語(yǔ)言來(lái)說(shuō)確實(shí)還有一定的差距。
我認(rèn)為一個(gè)原因就可以讓go打敗Python——區(qū)塊鏈
區(qū)塊鏈作為目前大火的模塊之一,越來(lái)越多的被各大企業(yè)所重視,而寫(xiě)區(qū)塊鏈的語(yǔ)言基本上都推薦go,go具有一下幾點(diǎn)優(yōu)勢(shì),下面還有一個(gè)用戶增量的排行榜。
可以看到go從去年的第七上升到第五,用戶增加的很快,而go開(kāi)發(fā)web具有以下幾點(diǎn)優(yōu)勢(shì)
長(zhǎng)期項(xiàng)目中的易維護(hù)代碼
go語(yǔ)言是一門十分簡(jiǎn)單的語(yǔ)言,易上手,學(xué)習(xí)曲線平緩,開(kāi)發(fā)過(guò)程簡(jiǎn)單迅速,要知道開(kāi)發(fā)一個(gè)區(qū)塊鏈系統(tǒng)代碼量是很龐大的,所以我們?cè)诒M可能地簡(jiǎn)化代碼有利于維護(hù)以及找bug。
速度與效率
不像python,go不是一種解釋型語(yǔ)言,它是編譯型的,這就大大減少了運(yùn)行中突然減少的bug,錯(cuò)誤在編譯時(shí)才得到處理(有點(diǎn)類似于c),一個(gè)區(qū)塊鏈非常需要高效性,而go在效率上遠(yuǎn)遠(yuǎn)高于python,在大多數(shù)的用戶場(chǎng)景中,go都比python高效。下面是Benchmarking Game的對(duì)比效果圖。
go語(yǔ)言由于自己的多線程模塊和CPU可伸縮性獲得了較好的性能。無(wú)論什么時(shí)候我們需要執(zhí)行一些內(nèi)部的請(qǐng)求,我們可以使用Goroutine來(lái)分別執(zhí)行,這個(gè)比Python中的Threads在資源開(kāi)銷上要少十多倍。由于這些內(nèi)置的語(yǔ)言特性,可以節(jié)省大量的資源。
區(qū)塊鏈領(lǐng)域幾乎所有人都用它
很多基于穩(wěn)定區(qū)塊鏈的DApps和tools都是用的Go語(yǔ)言。你所需要的某個(gè)功能,很輕松就能找到一個(gè)相對(duì)應(yīng)的庫(kù)。
另外前面說(shuō)到go是編譯型的,所以直接由操作系統(tǒng)執(zhí)行,這讓我們可以更自如地實(shí)現(xiàn)向以太坊沙盒一樣的技術(shù)。而如果是Java,因?yàn)樗旧淼倪\(yùn)行載體JVM就是一個(gè)虛擬機(jī),要再做一個(gè)沙盒,實(shí)質(zhì)是更高一層的抽象,完全沒(méi)有必要,會(huì)浪費(fèi)大量的資源。
所以單從Web開(kāi)發(fā)的角度來(lái)說(shuō)go要比Python更有前景,盡管Python這兩年一直居高不下,但是作為it人員不能盲目跟風(fēng),要搞清楚各自的優(yōu)勢(shì)再做結(jié)論。
網(wǎng)友解答:我個(gè)人覺(jué)得這個(gè)問(wèn)題不應(yīng)該這樣問(wèn),因?yàn)榻窈?,只要是涉及到網(wǎng)絡(luò),幾乎都會(huì)用到這個(gè)所謂的Web模式,比如Restful這樣的Service方式來(lái)完成通訊,不管你在前端表現(xiàn)為是一個(gè)移動(dòng)或桌面的App,還是一個(gè)傳統(tǒng)的網(wǎng)站,還是別的什么。
所以,我個(gè)人覺(jué)得比較用Go還是Python來(lái)做Web好,核心在于要考慮清楚你所面對(duì)業(yè)務(wù)的規(guī)模,以及在并發(fā)方面的復(fù)雜度。
從目前的情況來(lái)看,如果你的業(yè)務(wù)在規(guī)模和并發(fā)上沒(méi)有特別的需求,比如就是一個(gè)很傳統(tǒng)的公司網(wǎng)站之類的,那么,現(xiàn)階段無(wú)疑是用Python好,因?yàn)橄馞lask、Dango這樣的很成熟的框架在那呢,出現(xiàn)各種問(wèn)題也容易去找到人回答你。
如果覺(jué)得這些還麻煩,那么,還有更簡(jiǎn)單的web.py等著你。而且作為一種粘性十足的膠水式語(yǔ)言,實(shí)際上,也比較適合于你所想的那種Web端。當(dāng)然,不是說(shuō)Go不能做到那些,只是你現(xiàn)階段的學(xué)習(xí)曲線稍微陡峭些。
至于你說(shuō)的將來(lái),我覺(jué)得,根本不需要擔(dān)憂,他們都肯定有將來(lái)