人生苦短,我要換Go!
在使用健壯的軟件開(kāi)發(fā)編程語(yǔ)言方面,Golang 已經(jīng)被許多人選中。這種編程語(yǔ)言為程序員提供了獨(dú)特的好處。
Go 基本上是一個(gè)編譯語(yǔ)言,它的靈感來(lái)自C。所以,如果你精通 C 的語(yǔ)法,你會(huì)發(fā)現(xiàn) Golang 是有用的。學(xué)習(xí)這種編程語(yǔ)言只需要幾天時(shí)間,因?yàn)镚o的語(yǔ)法類似于C。
今天,Golang 已經(jīng)被一些知名公司使用,比如 Netflix,Uber,F(xiàn)acebook,Dropbox 等等。它有望在未來(lái)成為一種廣泛使用的編程語(yǔ)言。
Golang:含著金湯匙出生,高并發(fā)性能堪比C++
Go得到了谷歌的資金支持。
由于 Google 已經(jīng)投資了這種編程語(yǔ)言,開(kāi)發(fā)者可以信任這種編程語(yǔ)言,由于該產(chǎn)品是由谷歌支持的,預(yù)計(jì)Go語(yǔ)言將帶來(lái)高端安全性。 Go也被認(rèn)為是一種快速而完美的編程語(yǔ)言,具有豐富有趣的特性,最關(guān)鍵的一點(diǎn)是其簡(jiǎn)單的語(yǔ)法和結(jié)構(gòu)。因此,使用這種編程語(yǔ)言并不需要花費(fèi)很多時(shí)間。開(kāi)發(fā)人員可以提高他們?yōu)檐浖驊?yīng)用程序編寫代碼的速度。
Go語(yǔ)言還具有高效的并發(fā)性和速度,與 Java、 C、 C + + 等編程語(yǔ)言相似。
Go語(yǔ)言還可以跨平臺(tái),包括 Linux,Windows,Unix,BSD 等。它也適用于其他許多操作系統(tǒng)。Go具有作為一種重要的編程語(yǔ)言在未來(lái)持續(xù)發(fā)展的潛力,作為一種跨平臺(tái)的編程語(yǔ)言,它為希望在多個(gè)平臺(tái)上構(gòu)建應(yīng)用程序的開(kāi)發(fā)人員提供了便利。 同時(shí),Go語(yǔ)言的垃圾收集器特性值得一提,這個(gè)特性為程序員提供了自動(dòng)內(nèi)存清理工具。當(dāng)內(nèi)存滿時(shí),程序員必須花費(fèi)大量時(shí)間查找垃圾代碼來(lái)清理空間,而Go帶有自動(dòng)垃圾檢測(cè)和清理功能。使程序員能專注于他們的應(yīng)用程序或軟件開(kāi)發(fā),而不用考慮內(nèi)存或空間。
Python適合初學(xué)者,Golang才是做工程的料
Python 是一種高級(jí)的面向?qū)ο蟮恼Z(yǔ)言。它具有內(nèi)置的數(shù)據(jù)結(jié)構(gòu),結(jié)合了動(dòng)態(tài)綁定和類型,是快速開(kāi)發(fā)的理想選擇。Python 還提供了對(duì)模塊和包的支持,這允許系統(tǒng)模塊化和代碼重用。
Python 也是入門最快的編程語(yǔ)言之一,因?yàn)樗恍枰苌俚拇a行。重點(diǎn)是可讀性和簡(jiǎn)潔性,這使它成為初學(xué)者的一個(gè)很好的選擇。
圖:Stack Overflow上Python和Go的問(wèn)題數(shù)
切換到一種新的編程語(yǔ)言通常是一件大事,特別是當(dāng)團(tuán)隊(duì)成員對(duì)原始的語(yǔ)言有豐富經(jīng)驗(yàn)的時(shí)候。今年早些時(shí)候,Stream 將它的主要編程語(yǔ)言從 Python 轉(zhuǎn)換為 Go。
Python和Go的關(guān)鍵區(qū)別:
1.Go是一種過(guò)程化的、函數(shù)式的并發(fā)語(yǔ)言,而 Python 是一種面向?qū)ο蟮?、命令式的、函?shù)式的語(yǔ)言
2.Go 支持并發(fā),但 Python 沒(méi)有任何內(nèi)置的并發(fā)機(jī)制
3.Go 是系統(tǒng)編程的理想選擇,而 Python 是一種用于解決數(shù)據(jù)科學(xué)問(wèn)題的流行語(yǔ)言
4.Go 不提供異常,而 Python 支持異常;Go 不支持繼承,而 Python 支持繼承
5.雖然使用 Go 構(gòu)建代碼比 Python 或 Ruby 要花費(fèi)更多的時(shí)間,但是你可以節(jié)省大量?jī)?yōu)化代碼的時(shí)間。如上圖所示,Go的速度非???,大概是Pyhon的30倍。
想要高性能,就從Python切換到Go吧
速度快
Go的速度非??欤乃俣冉咏贘ava或者C,比Python快30倍。
語(yǔ)言本身的性能很重要
對(duì)于許多應(yīng)用程序來(lái)說(shuō),編程語(yǔ)言只是應(yīng)用程序和數(shù)據(jù)庫(kù)之間的粘合劑。語(yǔ)言本身的表現(xiàn)通常并不重要。
Python 是一種很棒的語(yǔ)言,但對(duì)于序列化/反序列化、排序和聚合等,它的性能很差。Cassandra 檢索數(shù)據(jù)需要1毫秒的時(shí)間,而 Python 在接下來(lái)的10毫秒內(nèi)將其轉(zhuǎn)換為對(duì)象。
開(kāi)發(fā)者的效率,不用太創(chuàng)新
很多人第一次接觸編程時(shí),總是喜歡使用 Python 的高級(jí)特性。Python 可以讓開(kāi)發(fā)者從正在編寫的代碼中獲得很好的想法。 這些特性很有趣,但是大多數(shù)程序員認(rèn)為它使得閱讀其他人的代碼變得更加困難。 Go 強(qiáng)迫你使用最基本的東西,這使得閱讀別人的代碼變得容易。
并發(fā)和通道
作為一種編程語(yǔ)言,Go 總是盡可能簡(jiǎn)單而且沒(méi)有引入太多的新概念,因?yàn)樗哪繕?biāo)是創(chuàng)建一種易于使用的編程語(yǔ)言。
唯一有創(chuàng)新的地方是 Goroutines 和 Channel。Goroutine 是 Go 的輕量級(jí)線程解決方案,而 Channels 是與 Goss 交互的首選方式。
Goroutine 非常輕量級(jí),只需要幾千字節(jié)的額外內(nèi)存。因?yàn)?Goroutine 是如此的輕量級(jí),可以有成百上千的 goroutine 在同一時(shí)間運(yùn)行。
Goroutine 和基于信道的并發(fā)方案使應(yīng)用程序可以輕松地使用所有可用的 CPU 內(nèi)核和處理并發(fā) IoOs,而不會(huì)使開(kāi)發(fā)復(fù)雜化。與 Python/Java 相比,在 Goroutinerequires 上運(yùn)行一個(gè)函數(shù)只需要很少的固定代碼。
編譯速度快
與 Java 和 C 等語(yǔ)言的海龜速度編譯相比,用 Go 編寫的最大的微服務(wù)項(xiàng)目只需6秒鐘就可以編譯完成。Go 的快速編譯速度是它的主要生產(chǎn)力。
強(qiáng)大的生態(tài)系統(tǒng)
相對(duì)于其他新的語(yǔ)言,比如 Rust 或 Elixir,Go 有著巨大的生態(tài)系統(tǒng)優(yōu)勢(shì)。盡管它不能與 Java、 Python 或 Node 相提并論,但仍可以找到滿足許多基本需求的高質(zhì)量包。
Gofmt,強(qiáng)制代碼格式化
Gofmt 是一個(gè)優(yōu)秀的命令行程序,內(nèi)置在 Go 編譯器中,用于格式化代碼。在功能方面,它類似于 Python 的 Autopep 8。Gofmt 以正式的方式對(duì)代碼進(jìn)行格式化,以避免所有這些參數(shù)。
gRPC 和協(xié)議緩沖
Go 提供了一流的協(xié)議緩沖和 gRPC 支持。這兩個(gè)工具完美地結(jié)合在一起,構(gòu)建了一個(gè)通過(guò) RPC 進(jìn)行通信的微服務(wù)器。只需要編輯一個(gè)庫(kù)文件,該文件定義 RPC 調(diào)用及其參數(shù),服務(wù)端和客戶端可以從該文件自動(dòng)生成適當(dāng)?shù)拇a。這不僅速度快,而且占用網(wǎng)絡(luò)空間少,使用更方便。 不過(guò),雖然有這么多的優(yōu)點(diǎn),Go語(yǔ)言也并不是那么的完美。
相對(duì)Python,Go語(yǔ)言也有不足:
Go語(yǔ)言不是一種通用語(yǔ)言;
與 Go 集成的 API 沒(méi)有官方支持的 Go SDK;
庫(kù)的支持不夠豐富;
依賴管理不夠健全 不知道各位小伙伴或者身邊的朋友是不是開(kāi)始使用Go了呢?
參考鏈接:
https://news.ycombinator.com/item?id=24887521