成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們為什么選擇了 Go 語言

開發 開發工具
我發現我花了四年時間錘煉自己用 C 語言構建系統的能力,試圖找到一個規范,可以更好的編寫軟件。結果發現只是對 Go 的模仿。缺乏語言層面的支持,只能是一個拙劣的模仿。

我發現我花了四年時間錘煉自己用 C 語言構建系統的能力,試圖找到一個規范,可以更好的編寫軟件。結果發現只是對 Go 的模仿。缺乏語言層面的支持,只能是一個拙劣的模仿。

這是云風在博客中說過的一句話。最近開始做一個很有意思的個人項目,我們選擇使用 Go 來搭建后臺服務,Why Go ?其實真相是:不是我們選擇了 Go ,是 Go 面向我們,選擇了我們。

出身

首先 ,不得不說一下 Go 的作者(僅選了三個代表):

  • Ken Thompson
  • Rob Pike
  • Robert Griesemer

Ken Thompson 大家肯定不陌生,設計了 B 語言和 C 語言,Unix 之父,1983年圖領獎得主,Ken 老爺子在2000年的時候離開了貝爾實驗室,轉行飛行員!!!后來加入了 Google,順手寫了個 Go 。 這里 有 Ken 和他的好基友 Denise M. Ritchie的故事。

[[172432]]

上面應該有一張 Ken 和 Denise 的合照,如果顯示不出來,你可能被墻了,自救吧

Rob Pike 參與 Plan9 和 Inferno 操作系統開發,Unix 小組成員。

Robert,曾協助制作Java的HotSpot編譯器和Chrome瀏覽器的JavaScript引擎V8。

按照這個配置,Go 出身于 Google,師出名門加上牛逼哄哄的作者們,語言界的富二代。

語言的設計者,很大程度決定了語言的設計哲學。在學習 Go 的過程中,你會感覺到這門語言如此的簡潔優雅,但是又不簡單。

設計哲學和特性

來說一下語言的設計哲學和特性(并不想拆開講解)。

少即是多。跟 C++ 不同的是, Go 沒有盡可能多的包含所有的特性,這只會增加了語言自身的復雜性,提高了學習成本。Go 盡可能保持簡單,甚至摒棄了繼承這一特性。使用過 Java 的程序員對此可能略感不適,畢竟在面向對象的編程模型中,繼承是非常常用的策略。而 Go 選擇使用簡單的組合的方式來構建復雜的類型,因為繼承會提高軟件開發的復雜程度,以 Java 的集合類為例,多少學習 Java 的人至今仍然道不出集合類之間的繼承關系。多用組合,少用繼承,Go 放棄了看似強大的語言特性,把這一理念實踐的非常徹底。

編碼規范。有些人覺得代碼規范被設計到語言本身會很奇怪,限制了語言。但實際上,Go 直接在語言層面加以約束,意義重大。曾幾何時,團隊會因為語言的 code style 而爭論不休,code format 需要團隊通過政策來約束,code review 可能也會因為代碼格式的問題而爭吵的面紅耳赤。Go 作為互聯網時代的一門語言,可以讓全世界的 Go programmer 的代碼風格保持一致,減少了無意義的爭論,對于共享和合作意義重大。

設計規則靈活。Go 是一門多范式的編程語言。Go 開發者可以自由發揮。

面向接口編程。這也是大型軟件系統的一種設計哲學,面向抽象,而非面向實現。Go 的接口是duck類型,鴨子類型在 ruby 中非常常見。它講述的是如果一只鳥走起路來像鴨子,游泳也像鴨子,叫起來也像鴨子,那么這只鳥就是鴨子。因此 Go 的接口定義是隱式的,非侵入性的。它關注的不是對象(當然在 Go 中我們稱之為 struct )的類型本身,而是如何使用。

異常處理和防御性編程。非常明顯的一點是 Go 的函數調用對 error 的檢查,雖然讓代碼可能并不美觀,但是為了實用性,這種級別的代碼防御也是可以接受的,減少不安全的代碼。

實踐理念。Go 自身提供了豐富的 CLI,幾乎涵蓋了整個軟件的生命周期,例如開發,測試,部署,維護等環節。寫 Go 的時候,不再需要額外的IDE或者是工具在組織代碼,構建,編譯,測試。這省去了很多麻煩,節省了開發者寶貴的時間。我們只需要關注代碼本身即可。

以上主要是關于 Go 的設計哲學,其中摻雜的提到了一些特性。其實 Go 還有很多特性值得我們去思考 Go 為何這樣設計,比如:與 C 語言的集成 CGo 這種語言間的交互性;匿名函數和閉包;函數多返回值;豐富的類型系統;自動的 gc( gc 的鼻祖應該是 lisp, 被 Java 發揮的爐火純青,v8 因有優秀的 gc 性能得以大幅度提升,雖然這不是 Go 的專利,但是這卻讓開發者省了不少心);包管理;單元測試規范;并發和分布式;開發和執行效率;同樣的支持跨平臺;對網絡開發有非常好的支持,不需要使用框架也可以很快的開發一個 web 程序。這些特性很多都不是 Go 的專利,但是 Go 卻有限的進行了吸收和發揮。

總之,Go 被稱為21世紀的 C 語言名副其實,正因如此,在我們的新項目中,不管是從語言本身,團隊協作,部署成本,性能等各個方面考慮,Go 是我們的不二選擇,當然,Go 開發者現在并不是很多(比如相對于爛大街的 Java),但是我有理由相信,越來越多的人也會像我一樣,被 Go 所吸引,并且也選擇 Go 。

責任編輯:未麗燕 來源: 推酷
相關推薦

2020-06-10 09:06:48

MongoDB架構高可用

2021-04-09 09:55:55

DockerGoLinux

2023-02-10 08:58:46

2024-01-15 00:42:55

Go語言應用程序

2020-04-07 16:12:56

Go編程語言開發

2012-08-13 09:15:54

Go開發語言編程語言

2017-02-27 15:19:04

2010-11-03 09:22:00

C語言

2021-04-26 09:33:46

Go Iota語言

2024-01-02 10:38:22

Go語言數組

2018-05-30 14:49:51

編程語言API語法

2018-05-02 12:34:48

2018-09-28 10:06:21

移動開發App

2021-12-06 12:48:40

Gosyncatomic

2017-02-27 15:43:14

iOSObject-CJava

2018-12-21 11:26:49

MySQLMongoDB數據庫

2022-12-12 07:30:59

編程語言架構

2023-03-06 08:01:25

structGo語言

2020-11-16 12:03:08

Java開發代碼

2022-01-26 00:00:00

GoGopher語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合中文 | 99精品久久久 | 日韩在线精品 | 欧美一区二区三区视频在线 | 精品日韩一区 | 精品福利一区二区三区 | www.久久99 | 蜜桃精品噜噜噜成人av | 国产成人综合亚洲欧美94在线 | 日韩欧美精品 | 国产欧美日韩 | 亚洲精品久久久久久久久久久久久 | 国产最好的av国产大片 | 综合精品在线 | 91在线视频观看 | 成人黄色电影在线观看 | 99精品国产在热久久 | 亚洲国产成人久久久 | 欧美电影免费观看高清 | 国产一区二区三区视频在线观看 | 九九色综合 | 欧美日韩一区二区三区不卡视频 | 91不卡 | 久久久久久久久久久福利观看 | 国产精品欧美一区二区三区不卡 | 色婷综合网 | 在线视频 欧美日韩 | 亚洲精品亚洲人成人网 | 亚洲视频一 | 久久精品国产一区二区电影 | 亚洲 精品 综合 精品 自拍 | 精品www| av中文网| 国产综合精品一区二区三区 | 国产资源在线观看 | 国产精品一区二区三区久久 | 久久成人一区 | 免费黄色的视频 | 亚洲美女网站 | com.国产| 国产av毛片 |