小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python和Go都很火,我要怎么選?

 板橋胡同37號(hào) 2020-02-18

選自Medium

作者:SoftKraft
機(jī)器之心編譯
參與:魔王

「人生苦短,我用 Python」是當(dāng)下非常流行的一句口頭禪。但你有沒(méi)有想過(guò),Python 就那么好嗎?在某些方面,其他語(yǔ)言真的不香嗎?本文作者對(duì)比了 Go 和 Python 的特點(diǎn)及測(cè)試結(jié)果,認(rèn)為開(kāi)發(fā)者應(yīng)基于項(xiàng)目的屬性和規(guī)模以及所需技能組合,合理地選擇編程語(yǔ)言,而不是一味地將 Python 用在所有任務(wù)中。


互聯(lián)網(wǎng)上有大量?jī)?yōu)秀的代碼,它們構(gòu)成了多種基礎(chǔ)架構(gòu)的基石。甚至本文所在網(wǎng)站的創(chuàng)建初衷也是創(chuàng)建優(yōu)秀代碼。雖然普通用戶并沒(méi)有注意到這一點(diǎn),但優(yōu)秀的開(kāi)發(fā)者總是致力于優(yōu)化其應(yīng)用(以及代碼)。

編寫(xiě)優(yōu)秀代碼的基礎(chǔ)在于開(kāi)發(fā)者的技能以及他/她所選擇的編程語(yǔ)言。這必然導(dǎo)致開(kāi)發(fā)者之間出現(xiàn)歷史性的沖突,這沖突不僅存在于技能層面,主要還在于開(kāi)發(fā)者所選擇的語(yǔ)言。如果你把兩種編程語(yǔ)言(如 Golang (Go) 和 Python)放在一起對(duì)比,大概率會(huì)得到這樣的結(jié)果。

但是,我們退后一步,放下個(gè)人偏見(jiàn)和喜好,從優(yōu)點(diǎn)和功能的角度來(lái)評(píng)價(jià)兩種語(yǔ)言。然后設(shè)置公平的競(jìng)爭(zhēng)環(huán)境和技能水準(zhǔn)。

現(xiàn)在,我們只有兩個(gè)選擇:Go vs Python。那么問(wèn)題來(lái)了:哪種語(yǔ)言更適合你?

關(guān)于 Python 

詢問(wèn)一些開(kāi)發(fā)者后,你會(huì)發(fā)現(xiàn) Python 是「空前絕后」的語(yǔ)言。Python 獲得這么多人青睞的原因在于它是一門(mén)非常優(yōu)秀的編程語(yǔ)言。互聯(lián)網(wǎng)上到處都是用 Python 寫(xiě)就的奇跡。

Python 是一門(mén)「古老」的語(yǔ)言,其概念首次出現(xiàn)于 1991 年。Python 的歷史積淀賦予了它一些優(yōu)勢(shì)。Python 的使用者眾多,這表示這門(mén)語(yǔ)言穩(wěn)定,且具備大量編寫(xiě)完備的文檔。在大部分案例中,你能找到幾乎所有事物的庫(kù),以及關(guān)于你所思考的所有事物的代碼示例。對(duì)于開(kāi)發(fā)者和企業(yè)來(lái)說(shuō),這意味著使用 Python 伴隨而來(lái)的是大量經(jīng)驗(yàn)和代碼,只需要評(píng)估即可。


還有大量以 Python 為基礎(chǔ)創(chuàng)建的開(kāi)源項(xiàng)目,因此在大多數(shù)情況下,你不需要從頭開(kāi)始。Python 可以很好地集成到企業(yè)級(jí)應(yīng)用中,可用于機(jī)器語(yǔ)言和 AI 應(yīng)用。但它也有缺點(diǎn),比如,不適合內(nèi)存密集型任務(wù),執(zhí)行速度略慢,不適合移動(dòng)應(yīng)用開(kāi)發(fā)。

關(guān)于 Go 語(yǔ)言

Go 于 2009 年由谷歌開(kāi)發(fā)完成。它解決了一個(gè)問(wèn)題,創(chuàng)建出一種沒(méi)有 C++等語(yǔ)言的過(guò)重包袱和過(guò)分設(shè)計(jì)的語(yǔ)言。這使得 Go 在性能和速度上都有極大提升,使用 Go 工作成為一件樂(lè)事。此外,大部分第一次使用 Go 語(yǔ)言的開(kāi)發(fā)者不會(huì)感覺(jué)到不便,因?yàn)?Go 中的熟悉元素及其易用性構(gòu)成了一項(xiàng)驚喜。


這并不是說(shuō) Go 語(yǔ)言在所有情況下都是完美的。雖然它將速度和優(yōu)雅度提升到新的層次,但也舍棄了一些用戶期望的功能。比如,它不具備大量庫(kù),也不支持繼承。此外,它沒(méi)有 GUI 庫(kù),也不支持對(duì)象導(dǎo)向的編程。Go 語(yǔ)言的特點(diǎn)表明它具備輕量級(jí)線程實(shí)現(xiàn)(Goroutine)、智能標(biāo)準(zhǔn)庫(kù)、強(qiáng)大的內(nèi)置安全性,且可使用最簡(jiǎn)語(yǔ)法進(jìn)行編程。

性能測(cè)試

關(guān)于 Go 和 Python 的優(yōu)缺點(diǎn)能說(shuō)上三天三夜,但最關(guān)鍵的一點(diǎn)還是它們的性能。因此接下來(lái)本文在基于 Intel? Core? i7–9700K CPU @ 3.60GHz × 8 cores 運(yùn)行的試驗(yàn)配置中執(zhí)行一些測(cè)試。

代碼地址:https://github.com/sekarasiewicz/go-python-benchmark

二分搜索

創(chuàng)建整型列表(從 1 到 100000),使用二分搜索找出數(shù)字 729。測(cè)試結(jié)果如下:


冒泡排序

首先生成整型列表(包含 10000 個(gè)隨機(jī)數(shù)字元素),然后使用冒泡排序算法對(duì)這些元素進(jìn)行排序。測(cè)試結(jié)果如下:


從文件中讀取

該測(cè)試是關(guān)于讀取「lorem ipsum」文本文件,測(cè)試結(jié)果如下:


HTTP 請(qǐng)求處理

創(chuàng)建 HTTP 服務(wù)器很簡(jiǎn)單,但是用 Python 搭建一個(gè)類(lèi)似的服務(wù)器則需要花費(fèi)一番功夫。我們來(lái)看二者對(duì)簡(jiǎn)單的「hello world!」消息的響應(yīng)時(shí)間:


如何選擇?

Python 是社區(qū)最受歡迎的語(yǔ)言,在 2019 年第一季度「GitHub 發(fā)展最快的編程語(yǔ)言」中名列第二位(pull requests 數(shù)量增長(zhǎng) 17%),但 Golang 也沒(méi)落后多少,在該排名中名列第四(pull requests 數(shù)量增長(zhǎng) 8%)。在 Golang 和 Python 中做出選擇變得更加艱難。然而,在選擇適合自己的語(yǔ)言時(shí),你需要考慮以下事項(xiàng):

  1. 可擴(kuò)展性:Golang 在創(chuàng)建之初就考慮到了可擴(kuò)展性。其內(nèi)置并發(fā)性允許同時(shí)處理多項(xiàng)任務(wù)。Python 也使用并發(fā)性,但并非內(nèi)置,它通過(guò)線程實(shí)現(xiàn)并行化。這意味著如果你打算處理大型數(shù)據(jù)集,Golang 似乎是更適合的選擇。

  2. 性能:眾所周知,Python 并非內(nèi)存/CPU 友好的語(yǔ)言,但它具備大量庫(kù),可以高效執(zhí)行基礎(chǔ)的開(kāi)發(fā)任務(wù)。Golang 具備內(nèi)置功能,更適合微服務(wù)軟件架構(gòu)。

  3. 應(yīng)用:Python 適合人工智能、數(shù)據(jù)分析、深度學(xué)習(xí)和 web 開(kāi)發(fā)任務(wù),而 Golang 適用于系統(tǒng)編程,執(zhí)行云計(jì)算和集群計(jì)算應(yīng)用的開(kāi)發(fā)者喜歡使用 Golang。

  4. 社區(qū)與庫(kù):如前所述,Python 的歷史賦予它一定優(yōu)勢(shì)。其中之一就是它具備大量庫(kù),擁有大型支持社區(qū)。而 Golang 語(yǔ)言仍在增長(zhǎng)期,沒(méi)有那么多庫(kù)和社區(qū)支持。但是我們不應(yīng)因此判定 Go 語(yǔ)言出局。其增長(zhǎng)率和采用率非常驚人,每天都在擴(kuò)張。

  5. 執(zhí)行:如果速度是王道,那么 Golang 遙遙領(lǐng)先。


考慮以上事項(xiàng)后,具體使用案例將成為采用哪種語(yǔ)言的決定性因素。假如你的開(kāi)發(fā)團(tuán)隊(duì)要?jiǎng)?chuàng)建微服務(wù),那么 Golang 是更合理的選擇,因?yàn)樗俣瓤?、易于編程、可擴(kuò)展性優(yōu)異。而 Python 更適合 AI、ML 和數(shù)據(jù)分析任務(wù)。

從直接測(cè)試結(jié)果來(lái)看,Go 在大部分案例中領(lǐng)先,被認(rèn)為是 Python 的有效替代方案。開(kāi)發(fā)者在選擇編程語(yǔ)言時(shí),應(yīng)考慮開(kāi)發(fā)項(xiàng)目的性質(zhì)和規(guī)模,以及所需的技能組合。

好消息是,不管選擇了哪種語(yǔ)言,Go 和 Python 都在持續(xù)演進(jìn)。盡管在大多數(shù)情況下 Golang 可能是更好的選擇,但 Python 社區(qū)不會(huì)坐以待斃。這兩種語(yǔ)言都在擴(kuò)張和增長(zhǎng)。這意味著,未來(lái)我們將看到更多功能和改進(jìn)。

原文鏈接:https:///softkraft/golang-vs-python-which-one-to-choose-3c052ec324e6


文為機(jī)器之心編譯,轉(zhuǎn)載請(qǐng)聯(lián)系本公眾號(hào)獲得授權(quán)。
?------------------------------------------------
加入機(jī)器之心(全職記者 / 實(shí)習(xí)生):hr@jiqizhixin.com
投稿或?qū)で髨?bào)道:content@jiqizhixin.com
廣告 & 商務(wù)合作:bd@jiqizhixin.com

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多