在本文中瞳收,我們探討了 Python 和 Go 這兩種世界上最流行的編程語言的差異、相似之處和用例厢汹。 從對兩者的快速比較開始螟深,然后看看它們在可讀性、速度烫葬、易學(xué)性等方面如何疊加界弧。
Python 和 Go 不同,通常用于不同的目的搭综。 Python 是數(shù)據(jù)科學(xué)家的主要語言垢箕,其中 Go 是服務(wù)器端命令的語言。 Go 是用于運行軟件的語言兑巾。 它是更快的語言条获,以 Java 和 C++ 速度執(zhí)行。
Python 是用于編寫可讀蒋歌、可共享代碼的語言——因此圍繞它的大型社區(qū)帅掘。
從技術(shù)上講委煤,Go 是一種為速度而構(gòu)建的過程式函數(shù)式語言,而 Python 是一種面向?qū)ο笮薜怠⒚钍奖探省⒑瘮?shù)式和過程式語言。 Go 支持并發(fā)吱窝,即算法能夠無序運行其步驟讥邻,而 Python 不支持。
簡而言之院峡,如果你正在處理數(shù)據(jù)并且受眾是人兴使,請使用 Python。 如果你正在使用服務(wù)器撕予,請使用 Go鲫惶。
Python 編程語言
Python 于 1991 年首次發(fā)布。 由 Guido van Rossum 設(shè)計实抡,Python 的設(shè)計理念以代碼可讀性為中心欠母。
Python 是一種解釋性的、高級的吆寨、通用的編程語言赏淌。 它是面向?qū)ο蟮摹S捎谄湓O(shè)計側(cè)重于可讀性啄清,Python 社區(qū)將根據(jù)代碼的 Pythonic 程度對彼此的代碼進(jìn)行評分六水。 由于其可讀性,Python 非常適合:
- 學(xué)習(xí)編程
- 快速收集想法
- 與他人共享代碼
Go 編程語言
Go 是 Golang 的縮寫辣卒,Go 最初由 Robert Griesemer掷贾、Rob Pike 和 Ken Thompson 于 2007 年在 Google 設(shè)計。
Go 是一種靜態(tài)類型的編譯型編程語言荣茫,由 Google 開源并維護(hù)想帅。 Go 是 C 系列編程語言的一部分,它使用垃圾收集器來處理內(nèi)存泄漏啡莉。 在設(shè)計 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)建的囤躁。雖然更易于閱讀和鍵入冀痕,但其簡單性的代價是為代碼中的錯誤留下了更大的空間,這意味著將花費更多時間調(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 的選擇。
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í)將是一項巨大的努力讲衫。(頂級 Go 庫都與服務(wù)器維護(hù)有關(guān))
5、共享
與 Jupyter notebook 共享可執(zhí)行的 Python 代碼是數(shù)據(jù)科學(xué)世界中常見的工作流工具之一。 Jupyter Notebooks 和 Google Colab Notebooks 允許 Python 用戶在非常交互式的閱讀和編寫體驗中閱讀和執(zhí)行代碼涉兽。
在 Go 中共享和顯示這些類型的圖表將很難啟動和運行招驴。
6、簡單易學(xué)
編程語言被設(shè)計得更好枷畏、更智能别厘。任何代碼的可讀性使其易于學(xué)習(xí)。在編程世界中拥诡,公認(rèn)的事實是**触趴,如果你學(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á)那里,但就目前而言考廉,程序員的工具包中有兩種語言的空間秘豹。
TSINGSEE 青犀視頻研發(fā)人員在做平臺開發(fā)時,在智能分析方面用 Python 編譯會比較多昌粤,在部分基層調(diào)用能力上則采用 Golang 比較多既绕。大家可以根據(jù)自身的需求來選擇初始學(xué)習(xí)的語言,也可以通過我們的開源項目 EasyDarwin 來進(jìn)行測試涮坐。
我們在人工智能技術(shù)+視頻領(lǐng)域凄贩,將AI檢測、智能識別技術(shù)融合到各個視頻應(yīng)用場景中袱讹,如:安防監(jiān)控疲扎、視頻中的人臉檢測、人流量統(tǒng)計、危險行為(攀高椒丧、摔倒壹甥、推搡等)檢測識別等。典型的示例如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)系刪除。