日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
GovsPython,我該選哪一門語言?

入門必備,高性價比輕量、CVM、GPU云服務(wù)器,每日限量開搶

哪個更好,Python 還是 Go?你今天應(yīng)該學(xué)習(xí)哪種語言,為什么?兩者在性能、易學(xué)習(xí)性、可擴(kuò)展性和快速原型設(shè)計方面如何比較?讓我們在 Python 和 Go 的這個友好且易于訪問的概述中找出答案,該概述由For the Love of Go 系列叢書的作者撰寫。

Python 和 Go 都很棒

首先,真的有必要說,Go 和 Python 都是絕對優(yōu)秀的編程語言。它們設(shè)計精良,功能強(qiáng)大,現(xiàn)代,相對易學(xué),是幾乎所有應(yīng)用的理想選擇。兩者都擁有強(qiáng)大的社區(qū),廣泛的應(yīng)用,蓬勃發(fā)展的生態(tài)系統(tǒng)以及高商業(yè)價值。

無論你最喜歡哪一個,都是最值得學(xué)習(xí)的。你可能會想,討論結(jié)束,但讓我們再說一點。

讀到諸如 "為什么 Python 很爛",或者 "為什么我們從 Go 轉(zhuǎn)到 Python "之類的博文是很常見的。不客氣地說,這些文章對于理解可能影響你選擇的 Python 和 Go 的特性并不特別有價值,而且它們通常想論證一種語言更好。

但這真的毫無意義。對什么更好?任何編程語言都自然而然地代表了一系列的權(quán)衡:比如說,速度與安全的關(guān)系,或者是易學(xué)與正確性的關(guān)系。不同的語言會做出不同的權(quán)衡。你可以有把握地假設(shè),任何廣泛使用的語言,如 Go 或 Python,平均來說,和其他語言一樣好......但也許在不同的事情上。

因此,讓我們拋開這個錯誤的兩難選擇,即要么選擇 Go,要么選擇 Python。我們可以學(xué)習(xí)和使用這兩種語言;這兩種語言在不同的領(lǐng)域都很出色,而且從職業(yè)的角度來看,這兩種語言都是非常有價值的技能。然而,假設(shè)你有有限的學(xué)習(xí)和練習(xí)時間,了解你想從事的開發(fā)領(lǐng)域偏愛哪種語言會有幫助。

因此,讓我們看看編程的一些不同領(lǐng)域,看看哪種語言更適合每個領(lǐng)域。

易學(xué)性

如果你是編程新手,你可能會從你的編程語言中尋找不同的東西,比如說,想為深空探測器寫操作系統(tǒng)的人。例如,你可能想要一種簡潔的語言,沒有大量的語法需要學(xué)習(xí),或者一種靈活的語言,讓你以任何感覺最自然的方式表達(dá)自己。

Go 是一門刻意縮小的語言;例如,它沒有很多不同的方式來做同一件事,而且語言中也沒有很多三方工具來涵蓋你可能想要做的每一件事。相比之下,Python 有很多功能:類、lambda 、元組、迭代器、生成器,以及更多。

然而,Python 的語法感覺相當(dāng)自然;它看起來像這樣。

for path in paths:
    if path == '-':
        text = sys.stdin.read()
    else:
        fp = codecs.open(path, 'r', opts.encoding)
        text = fp.read()
        fp.close()

Go 很簡單,但簡單并不等同于容易。如果你是新手,可能很難弄清楚某段 Go 代碼在做什么。

func (forceApi *ForceApi) getApiSObjects() error {
    uri := forceApi.apiResources[sObjectsKey]

    list := &SObjectApiResponse{}
    err := forceApi.Get(uri, nil, list)
    if err != nil {
        return err
    }

另一方面,雖然一開始可能更有挑戰(zhàn)性,但你很快就會達(dá)到熟悉 Go 中一切的程度。要達(dá)到這個階段,Python 需要更長的時間,因為有更多的東西需要學(xué)習(xí)。

然而,如果你正在邁出編程的第一步,使用 Python 可能會是一個更容易和更愉快的經(jīng)歷。

高性能

如果你是編程新手,你可能會驚訝地發(fā)現(xiàn),對于大多數(shù)程序來說,性能幾乎不重要。一般來說,可讀性和可維護(hù)性要比原始速度重要得多。但是,當(dāng)性能確實重要時,在游戲、數(shù)據(jù)庫或大規(guī)模網(wǎng)絡(luò)服務(wù)等應(yīng)用中,它真的很重要。

Go 是一種編譯語言,這意味著 Go 的源代碼會被翻譯成機(jī)器語言,供你在特定的處理器上運(yùn)行:ARM 芯片、X86_64,或者其他。

這使得 Go 程序總體上比 Python 中的同等程序快得多。Python 是一種解釋語言,這意味著它不直接在 CPU 上執(zhí)行。相反,另一個程序,即解釋器,讀取 Python 源代碼,并將其即時翻譯成機(jī)器指令。

需要注意的是,對于你所寫的 99% 的程序來說,性能遠(yuǎn)沒有簡單性和可讀性重要,如果你碰巧需要寫一些執(zhí)行速度非??斓某绦?,Go 將是你的第一選擇。

數(shù)據(jù)科學(xué)

科學(xué)家,包括數(shù)據(jù)科學(xué)家、機(jī)器學(xué)習(xí)開發(fā)者,以及需要做復(fù)雜數(shù)值和統(tǒng)計分析的人,都喜歡 Python。它已經(jīng)存在了很長時間,并且為科學(xué)計算建立了一個偉大的生態(tài)系統(tǒng):數(shù)學(xué)、統(tǒng)計、人工智能、模擬、圖像處理、分布式處理等等。這些庫和社區(qū)非常成熟,并提供了大量的資源。

并不是說你不能用 Go 做這些事情,而是人們在 Python 中做這些事情的時間更長,它或多或少擁有這個空間。如果你在做科學(xué)和工程應(yīng)用,你幾乎肯定會用 Python 做。

高擴(kuò)展

當(dāng)我們談?wù)?"擴(kuò)展性"時,我們通常意味著很多事情發(fā)生得非常快:每秒數(shù)百萬次的交易,成千上萬的服務(wù)器,數(shù)千兆字節(jié)的數(shù)據(jù)。這給程序員帶來了一些挑戰(zhàn):他們需要他們的程序快速、小巧、易于部署和操作,而且最好對并發(fā)有很好的支持。

這些都是 Go 非常強(qiáng)大的領(lǐng)域。正如我們所看到的,Go 程序是經(jīng)過編譯的,所以它們的執(zhí)行速度自然很快,而且它們可以作為一個小的二進(jìn)制文件來部署。相比之下,Python 程序是以源代碼的形式部署的,而且它們還需要 Python 解釋器、庫等等。即使使用容器,用 Go 來大規(guī)模部署和運(yùn)行應(yīng)用程序也要容易得多。

Go 從一開始也是為并發(fā)而設(shè)計的。它支持超輕量級的線程,稱為 goroutines,一個程序可以同時運(yùn)行數(shù)百萬個 goroutines 而不會產(chǎn)生問題。雖然 Python 支持并發(fā)進(jìn)程和線程,但使用起來比 Go 要復(fù)雜一些,而且性能也沒有那么好。

對于大規(guī)模、低延遲的應(yīng)用,尤其是涉及大量并發(fā)的應(yīng)用,Go 是你應(yīng)該首先關(guān)注的語言。

快速原型設(shè)計

在軟件開發(fā)中很常見的是,我們事先并沒有對程序的所有詳細(xì)要求。相反,我們只想讓一些東西運(yùn)行起來,證明這個概念,并給我們一個簡單的原型,我們可以向用戶展示,這樣我們就可以得到反饋。

Python 是一種優(yōu)秀的快速原型語言;我們可以把我們的想法以一種幾乎看起來像英語的形式快速寫下來,而且所產(chǎn)生的程序可能會運(yùn)行,或多或少。Python 的動態(tài)類型是非常寬容的;它意味著你不需要確切地知道什么是什么,就可以處理它。

相比之下,Go 是相當(dāng)嚴(yán)格的。它是靜態(tài)類型的,這意味著編譯器堅持事先驗證你傳遞給一個函數(shù)的每一個值,比如說,正是它應(yīng)該有的類型。這可能會使編程經(jīng)驗感覺有點像在做大量的文書工作,只是為了讓一個簡單的概念證明運(yùn)行。

對于超快速的原型開發(fā)、實驗和用快速腳本解決一次性問題,Python 是理想的選擇。

總結(jié)

我希望這篇文章能讓你相信 Python 和 Go 都值得你認(rèn)真考慮。如果可能的話,你應(yīng)該爭取在這兩種語言中至少獲得一定程度的經(jīng)驗,因為這對你在任何技術(shù)職業(yè)中都是非常有用的,甚至如果你把編程作為一種愛好的話。

你現(xiàn)在知道的足夠多了,可以拒絕所有旨在說服你相信 Go 或 Python 在某種絕對方式上比另一個更好的點擊率文章,或者至少用非常挑剔的眼光來閱讀它們,并理解它們在很大程度上只是表達(dá)作者的個人偏好。

這沒關(guān)系:編程是一項非常主觀和個人的活動,你用你最喜歡的語言比用一個計算機(jī)科學(xué)家小組認(rèn)為理論上優(yōu)越的語言更有成效。另外,你也不會覺得有必要寫博客文章侮辱那些喜歡不同語言的人;你明白他們只是對不同事情的優(yōu)先考慮。

因此,你同時嘗試 Python 和 Go,看看你更喜歡用哪種語言編程,真的很有意義,不是嗎?當(dāng)你寫了一堆玩具程序或編碼挑戰(zhàn),也許每種語言都有一個非簡單的程序,你就能更好地決定你想優(yōu)先學(xué)習(xí)哪種語言了。

最后一點:好的程序員就是一個好的程序員,無論他們現(xiàn)在用什么語言工作。作為一名軟件開發(fā)人員,你所學(xué)到的大多數(shù)技能都可以很好地轉(zhuǎn)化為其他語言和技術(shù)棧,所以今天選擇學(xué)習(xí)什么并不重要。

忽略那些炒作的言論,跳過那些過度炒作的博客文章,讓你自己決定:當(dāng)涉及到 Python 和 Go 之間的選擇時,只有你的意愿是重要的。


當(dāng)前題目:GovsPython,我該選哪一門語言?
瀏覽地址:http://www.dlmjj.cn/article/ccojchd.html