Python和Go語言都這么火,哪個更適合你?

在本文中,我們探討了 Python 和 Go 這兩種世界上最流行的編程語言的差異、相似之處和用例。 從對兩者的快速比較開始,然后看看它們在可讀性、速度、易學(xué)性等方面如何疊加。

Python 和 Go 不同,通常用于不同的目的。 Python 是數(shù)據(jù)科學(xué)家的主要語言,其中 Go 是服務(wù)器端命令的語言。 Go 是用于運(yùn)行軟件的語言。 它是更快的語言,以 Java 和 C++ 速度執(zhí)行。

image

Python 是用于編寫可讀、可共享代碼的語言——因此圍繞它的大型社區(qū)。

從技術(shù)上講,Go 是一種為速度而構(gòu)建的過程式函數(shù)式語言,而 Python 是一種面向?qū)ο?、命令式、函?shù)式和過程式語言。 Go 支持并發(fā),即算法能夠無序運(yùn)行其步驟,而 Python 不支持。

image

簡而言之,如果你正在處理數(shù)據(jù)并且受眾是人,請使用 Python。 如果你正在使用服務(wù)器,請使用 Go。

Python 編程語言

Python 于 1991 年首次發(fā)布。 由 Guido van Rossum 設(shè)計(jì),Python 的設(shè)計(jì)理念以代碼可讀性為中心。

Python 是一種解釋性的、高級的、通用的編程語言。 它是面向?qū)ο蟮?。由于其設(shè)計(jì)側(cè)重于可讀性,Python 社區(qū)將根據(jù)代碼的 Pythonic 程度對彼此的代碼進(jìn)行評分。 由于其可讀性,Python 非常適合:

  • 學(xué)習(xí)編程
  • 快速收集想法
  • 與他人共享代碼

Go 編程語言

Go 是 Golang 的縮寫,Go 最初由 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年在 Google 設(shè)計(jì)。

image

Go 是一種靜態(tài)類型的編譯型編程語言,由 Google 開源并維護(hù)。 Go 是 C 系列編程語言的一部分,它使用垃圾收集器來處理內(nèi)存泄漏。 在設(shè)計(jì) Golang 時,它的創(chuàng)建者想要改進(jìn)已經(jīng)存在的東西,其中之一就是可讀性。

1、可讀性

不可讀代碼的基本標(biāo)準(zhǔn)是 Java 和 C++。 Python 和 Go 都希望改進(jìn)它們。 Go 做了一些改變。 與 Python 類似,Go 取消了:

  • 行尾的冒號
  • 括號和圓括號的使用。

如果熟悉 C 級語言,那么這應(yīng)該看起來很熟悉:

Go 代碼示例:

package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}

func main() {
    fmt.Println(split(17))
}

返回: 7 10

Python 代碼示例 (非-Pythonic):

even_numbers = []

for number in range(10):
 if number % 2 == 0:
    even_numbers.append(number)

print(even_numbers)

Python 代碼示例 (Pythonic):

even_numbers = [ x for x in range(10) if x % 2 == 0]
print(even_numbers)

返回:

[0, 2, 4, 6, 8]

2、錯誤處理

大多數(shù) IDE 將幫助在編寫 Python 代碼時發(fā)現(xiàn)錯誤。與 Python 不同,Go 沒有錯誤處理。它是為已經(jīng)知道如何編碼的人而構(gòu)建的。雖然更易于閱讀和鍵入,但其簡單性的代價是為代碼中的錯誤留下了更大的空間,這意味著將花費(fèi)更多時間調(diào)試代碼。

3、速度

說到速度,Go 很快。Go 的本意是速度快,但這并不是 Python 的唯一目標(biāo)。在大多數(shù)基準(zhǔn)測試中,Go 遠(yuǎn)遠(yuǎn)超過 Python。Go 甚至超過了 Java 的速度,人們普遍認(rèn)為 Java 比 Python 快得多。如果歸結(jié)為需要一個程序來快速加載軟件,那么 Go 就是 Go 的選擇。

image

4、庫

Python 比 Go 早 16 年,因此圍繞它建立了一個更大的社區(qū)。在該社區(qū)中,它對面向所有類型的 Stack Overflow 提供了大量支持:初學(xué)者、課程、教程和操作指南,以及最終的 Python 庫。 很可能,永遠(yuǎn)不必在 Python 中從頭開始。

Python 庫尤其龐大。 他們可以讓任何編寫代碼的人在第一天做他們想做的事。 使用 Pandas 可以輕松探索數(shù)據(jù)表,使用 TensorFlow 和 PyTorch 可以輕松進(jìn)行機(jī)器學(xué)習(xí)。

Go 不提供這種支持。你必須編寫自己的所有腳本來搜索數(shù)據(jù)表。在 Go 中開發(fā)機(jī)器學(xué)習(xí)將是一項(xiàng)巨大的努力。(頂級 Go 庫都與服務(wù)器維護(hù)有關(guān))

5、共享

與 Jupyter notebook 共享可執(zhí)行的 Python 代碼是數(shù)據(jù)科學(xué)世界中常見的工作流工具之一。 Jupyter Notebooks 和 Google Colab Notebooks 允許 Python 用戶在非常交互式的閱讀和編寫體驗(yàn)中閱讀和執(zhí)行代碼。

在 Go 中共享和顯示這些類型的圖表將很難啟動和運(yùn)行。

image
image

6、簡單易學(xué)

編程語言被設(shè)計(jì)得更好、更智能。任何代碼的可讀性使其易于學(xué)習(xí)。在編程世界中,公認(rèn)的事實(shí)是**,如果你學(xué)習(xí)一種語言,你就可以學(xué)習(xí)任何其他語言——你只需要深入研究。**

討論差異只對挑剔的人和已經(jīng)可以用一種語言讀寫的人有意義。從某種意義上說,這些差異并不重要,應(yīng)該涉及一個人開始編程的選擇。相反,這些差異僅在選擇最適合執(zhí)行功能的語言時才重要。

結(jié)語:選 Go 還是 Python?

Go 和 Python 都易于使用和學(xué)習(xí)。Go 真的很快。 Python 有大量的社區(qū)支持。

目前,在 Go 的開發(fā)中,Go 主要用于服務(wù)器端應(yīng)用程序。Python 是數(shù)據(jù)科學(xué)家的首選語言,而且很可能會持續(xù)很長時間。所有 ML 庫開發(fā)人員都在投入時間為 Python 開發(fā)庫。Go 可能會及時到達(dá)那里,但就目前而言,程序員的工具包中有兩種語言的空間。

image

TSINGSEE 青犀視頻研發(fā)人員在做平臺開發(fā)時,在智能分析方面用 Python 編譯會比較多,在部分基層調(diào)用能力上則采用 Golang 比較多。大家可以根據(jù)自身的需求來選擇初始學(xué)習(xí)的語言,也可以通過我們的開源項(xiàng)目 EasyDarwin 來進(jìn)行測試。

我們在人工智能技術(shù)+視頻領(lǐng)域,將AI檢測、智能識別技術(shù)融合到各個視頻應(yīng)用場景中,如:安防監(jiān)控、視頻中的人臉檢測、人流量統(tǒng)計(jì)、危險行為(攀高、摔倒、推搡等)檢測識別等。典型的示例如EasyCVR視頻融合云服務(wù),具有AI人臉識別、車牌識別、語音對講、云臺控制、聲光告警、監(jiān)控視頻分析與數(shù)據(jù)匯總的能力。

當(dāng)然,也有網(wǎng)友認(rèn)為:作為一種編程語言,Golang 勝過 Python。 Go 在大多數(shù)情況下絕對占上風(fēng),它可能沒有 Python 多年來獲得的名氣和互聯(lián)網(wǎng)的擴(kuò)張,但 Go 肯定也在這方面迎頭趕上。歡迎在評論區(qū)和我們討論。

本文轉(zhuǎn)自 https://juejin.cn/post/7020319356944908325,如有侵權(quán),請聯(lián)系刪除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容