偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

知乎用Go替代Python,說(shuō)明了啥

開(kāi)發(fā) 后端
眾所周知,知乎早在幾年前就將推薦系統(tǒng)從 Python 轉(zhuǎn)為了 Go。于是乎,一部分人就說(shuō) Go 比 Python 好,Go 和 Python 兩大社區(qū)的相關(guān)開(kāi)發(fā)人員為此也爭(zhēng)論過(guò)不少,似乎,誰(shuí)也沒(méi)完全說(shuō)服誰(shuí)。

[[280313]]

大概每個(gè)開(kāi)發(fā)人員應(yīng)該都會(huì)認(rèn)為自己使用的語(yǔ)言是世界最好的語(yǔ)言吧。這都相對(duì)來(lái)說(shuō)的。對(duì)于每個(gè)人應(yīng)該都是不同的。

眾所周知,知乎早在幾年前就將推薦系統(tǒng)從 Python 轉(zhuǎn)為了 Go。于是乎,一部分人就說(shuō) Go 比 Python 好,Go 和 Python 兩大社區(qū)的相關(guān)開(kāi)發(fā)人員為此也爭(zhēng)論過(guò)不少,似乎,誰(shuí)也沒(méi)完全說(shuō)服誰(shuí)。

知乎從Python轉(zhuǎn)為Go,是不是代表Go比Python好?我認(rèn)為,各有優(yōu)點(diǎn),誰(shuí)也取代不了誰(shuí),會(huì)長(zhǎng)期共存!

 

[[280314]]

“由 Python 語(yǔ)言轉(zhuǎn)向 Go 語(yǔ)言就說(shuō)明 Go 語(yǔ)言比 Python 語(yǔ)言好”完全是一種片面理解。

“語(yǔ)言至上論”是解決不了業(yè)務(wù)問(wèn)題的,選 Go 也不行,Java 也不行。

Go 的優(yōu)勢(shì)是文件易部署,協(xié)程機(jī)制相對(duì)成熟且簡(jiǎn)單,以及靜態(tài)編譯語(yǔ)言的效率,還有就是編程模式相對(duì)簡(jiǎn)單。這大概是現(xiàn)在越來(lái)越多企業(yè)嘗試Go的原因,除了知乎,B 站也把核心部件從 PHP 轉(zhuǎn)到了Go。

除此之外,BAT 等互聯(lián)網(wǎng)巨頭,內(nèi)部都有系統(tǒng)采用了 Go 語(yǔ)言。

那是不是說(shuō) Python、PHP 不行了?當(dāng)然不是也不應(yīng)該是這樣的。如果要堅(jiān)持Python、PHP,也是沒(méi)問(wèn)題。一個(gè)系統(tǒng)沉積太久的話,會(huì)產(chǎn)生很多大大小小、零零散散的“技術(shù)債”,這其間就涉及解決成本的考量,重構(gòu)、重寫(xiě)、抑或重新設(shè)計(jì)核心模塊或新模塊?由此又帶來(lái)技術(shù)選擇的問(wèn)題。還有Python、PHP人才儲(chǔ)備的問(wèn)題,還有團(tuán)隊(duì)希望嘗試新技術(shù)的考慮。這些問(wèn)題交織在一起,就不是哪個(gè)編程語(yǔ)言好跟壞這么簡(jiǎn)單的事兒了。所以還是要回到業(yè)務(wù)層面來(lái)看技術(shù)解決之道。

不得不說(shuō),Go的協(xié)程,一個(gè)“go”就能解決絕大多數(shù)問(wèn)題,確實(shí)寫(xiě)代碼很簡(jiǎn)潔,Python 新添的 asyncio 還是相對(duì)復(fù)雜,F(xiàn)uture、Task等等還是有不少門(mén)道的。所以,技術(shù)永遠(yuǎn)只有合適的,而沒(méi)有最佳的,也沒(méi)有非此即彼的好壞分明。

我相信,如果團(tuán)隊(duì)在 Python 方面積累厚實(shí),且熱衷專(zhuān)注于 Python,選擇Python 應(yīng)該就是個(gè)大概率事件。Python 現(xiàn)在已經(jīng)應(yīng)用頗廣,特別是在 AI 領(lǐng)域帶動(dòng)下,Python 人才也不像以前那樣難找工作了,鐵打的營(yíng)盤(pán)流水的兵,是不是知乎也面臨人才流動(dòng)壓力?此外,畢竟 Python 的生態(tài),在這么多編程語(yǔ)言中,是數(shù)一數(shù)二的,Go 雖熱,但在社區(qū)方面恐怕還是比不上 Python、PHP,這也是一個(gè)現(xiàn)實(shí)問(wèn)題。知乎前端換了 React,我沒(méi)感覺(jué)比原來(lái)的 AngularJS 進(jìn)步,但不能就此說(shuō) React 不行。嘗試用 Go 寫(xiě)一些原來(lái) Python 的范圍,也是同理。而且一個(gè)系統(tǒng)同時(shí)應(yīng)用多種開(kāi)發(fā)語(yǔ)言、一系列技術(shù)棧,都是再正常不過(guò)的事了。

Python 有自己的場(chǎng)景,不會(huì)被徹底替換的,擔(dān)心也是多慮的,反正都是“增刪改查”嘛!

至于,知乎為什么選擇 Go,內(nèi)部的一些工程師透露:選擇 Go 并不是一個(gè)人的決定,而是整個(gè)團(tuán)隊(duì)深思熟慮后的結(jié)果!

眾所周知,知乎社區(qū)后端的主力編程語(yǔ)言是 Python。

隨著知乎用戶的迅速增長(zhǎng)和業(yè)務(wù)復(fù)雜度的持續(xù)增加,核心業(yè)務(wù)的流量在過(guò)去一年內(nèi)增長(zhǎng)了好幾倍,對(duì)應(yīng)的服務(wù)端的壓力也越來(lái)越大。隨著業(yè)務(wù)發(fā)展,我們發(fā)現(xiàn) Python 作為動(dòng)態(tài)解釋型語(yǔ)言,較低的運(yùn)行效率和較高的后期維護(hù)成本帶來(lái)的問(wèn)題逐漸暴露出來(lái):

運(yùn)行效率較低。知乎目前機(jī)房機(jī)柜空間已經(jīng)不足,按照目前的用戶和流量增長(zhǎng)速度,可預(yù)見(jiàn)將在短期內(nèi)服務(wù)器資源告急(針對(duì)這一點(diǎn),知乎正在由單機(jī)房架構(gòu)升級(jí)為異地多活架構(gòu));

Python 過(guò)于靈活的語(yǔ)言特性,導(dǎo)致多人協(xié)作和項(xiàng)目維護(hù)成本較高

受益于近些年開(kāi)源社區(qū)的發(fā)展和容器等關(guān)鍵技術(shù)的普及,知乎的基礎(chǔ)平臺(tái)技術(shù)選型一直較為開(kāi)放。在開(kāi)放的標(biāo)準(zhǔn)之上,各個(gè)語(yǔ)言都有成熟的開(kāi)源的中間件可供選擇。這使得業(yè)務(wù)做選型時(shí)可以根據(jù)問(wèn)題場(chǎng)景選擇更合適的工具,語(yǔ)言也是一樣。

基于此,為了解決資源占用問(wèn)題和動(dòng)態(tài)語(yǔ)言的維護(hù)成本問(wèn)題,我們決定嘗試使用靜態(tài)語(yǔ)言對(duì)資源占用極高的核心業(yè)務(wù)進(jìn)行重構(gòu)。

為什么選擇 Golang?

如上所述,知乎在后端技術(shù)選型上比較開(kāi)放。在過(guò)去幾年里,除了 Python 作為主力語(yǔ)言開(kāi)發(fā),知乎內(nèi)部也不乏 Java、Golang、NodeJS 和 Rust 等語(yǔ)言開(kāi)發(fā)的項(xiàng)目。

Golang 是當(dāng)時(shí)知乎內(nèi)部討論交流最活躍的編程語(yǔ)言之一,考慮到以下幾點(diǎn),知乎決定嘗試用 Golang 重構(gòu)內(nèi)部高并發(fā)量的核心業(yè)務(wù):

  • 天然的并發(fā)優(yōu)勢(shì),特別適合 IO 密集應(yīng)用
  • 知乎內(nèi)部基礎(chǔ)組件的 Golang 版生態(tài)比較完善
  • 靜態(tài)類(lèi)型,多人協(xié)作開(kāi)發(fā)和維護(hù)更加安全可靠
  • 構(gòu)建好后只需一個(gè)可執(zhí)行文件即可,方便部署
  • 學(xué)習(xí)成本低,且開(kāi)發(fā)效率較 Python 沒(méi)有明顯降

相比另一門(mén)也很優(yōu)秀的待選語(yǔ)言—— Java,Golang 在知乎內(nèi)部生態(tài)環(huán)境、部署的方便程度和工程師的興趣上都更勝一籌,最終我們決定,選擇 Golang 作為開(kāi)發(fā)語(yǔ)言。

最后,我們做個(gè)簡(jiǎn)單總結(jié):第一點(diǎn),重構(gòu)語(yǔ)言的選擇,關(guān)鍵要跟公司技術(shù)背景和業(yè)務(wù)場(chǎng)景結(jié)合起來(lái);第二點(diǎn),架構(gòu)盡量靈活,并不斷自我迭代;第三點(diǎn),監(jiān)控要早點(diǎn)開(kāi)展,并盡可能底層化、通用化。

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2018-12-28 15:30:15

PythonGo編程語(yǔ)言

2017-06-16 21:00:02

Python爬蟲(chóng)

2017-05-24 15:07:19

Python爬蟲(chóng)爬取

2019-11-25 11:03:19

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2018-12-13 11:32:55

知乎裁員調(diào)整

2025-02-11 09:12:55

2021-01-08 15:58:52

比特幣加密貨幣金融

2018-11-12 09:00:33

2013-03-18 10:09:53

蘋(píng)果央視315

2023-06-27 07:20:45

2023-07-18 18:14:51

云原生軟件架構(gòu)

2010-01-13 10:09:24

C++標(biāo)準(zhǔn)庫(kù)

2021-12-15 10:54:12

Gogofmt命令Go源代碼

2020-06-24 14:33:14

開(kāi)發(fā)技能代碼

2018-05-07 15:15:26

服務(wù)器爬蟲(chóng)數(shù)據(jù)

2015-07-21 15:22:20

點(diǎn)贊仿知乎按鈕動(dòng)畫(huà)

2024-09-20 08:20:20

2020-12-22 18:41:00

比特幣區(qū)塊鏈數(shù)字貨幣

2017-11-10 14:12:35

2021-06-08 09:36:20

Python代碼內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)