偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

為什么要開發(fā) Go 這門新語(yǔ)言?

開發(fā) 后端
大家平時(shí)都是在用 Go 語(yǔ)言,那以往已經(jīng)有了 C、C++、Java、PHP。Google 的大佬們?yōu)槭裁催€要再開發(fā)一門新的語(yǔ)言呢?

本文轉(zhuǎn)載自微信公眾號(hào)「腦子進(jìn)煎魚了」,作者陳煎魚。轉(zhuǎn)載本文請(qǐng)聯(lián)系腦子進(jìn)煎魚了公眾號(hào)。

大家好,我是煎魚。

大家平時(shí)都是在用 Go 語(yǔ)言,那以往已經(jīng)有了 C、C++、Java、PHP。Google 的大佬們?yōu)槭裁催€要再開發(fā)一門新的語(yǔ)言呢?

難不成是造輪子,其他語(yǔ)言不香嗎?

背景

Go 編程語(yǔ)言構(gòu)思于 2007 年底,構(gòu)思的目的是:為了解決在 Google 開發(fā)軟件基礎(chǔ)設(shè)施時(shí)遇到的一些問(wèn)題。

Go 語(yǔ)言之父

圖上三位是 Go 語(yǔ)言最初的設(shè)計(jì)者,功力都非常的深厚,按序從左起分別是:

  • Robert Griesemer:參與過(guò) Google V8 JavaScript 引擎和 Java HotSpot 虛擬機(jī)的研發(fā)。
  • Rob Pike:Unix 操作系統(tǒng)早期開發(fā)者之一,UTF-8 創(chuàng)始人之一,Go 語(yǔ)言吉祥物設(shè)計(jì)者是 Rob Pike 的媳婦。
  • Ken Thompson:圖靈獎(jiǎng)得主,Unix 操作系統(tǒng)早期開發(fā)者之一,UTF-8 創(chuàng)始人之一,C 語(yǔ)言(前身 B 語(yǔ)言)的設(shè)計(jì)者。

遇到的問(wèn)題

曾經(jīng)在早期的采訪中,Google 大佬們反饋感覺(jué) "編程" 太麻煩了,他們很不喜歡 C++,對(duì)于現(xiàn)在工作所用的語(yǔ)言和環(huán)境感覺(jué)比較沮喪,充滿著許多不怎么好用的特性。

具體遭遇到的問(wèn)題。如下:

  • 軟件復(fù)雜:多核處理器、網(wǎng)絡(luò)系統(tǒng)、大規(guī)模計(jì)算集群和網(wǎng)絡(luò)編程模型所帶來(lái)的問(wèn)題只能暫時(shí)繞開,沒(méi)法正面解決。
  • 軟件規(guī)模:軟件規(guī)模也發(fā)生了變化,今天的服務(wù)器程序由數(shù)千萬(wàn)行代碼組成,由數(shù)百甚至數(shù)千名程序員進(jìn)行工作,而且每天都在更新(據(jù)聞 Go 就是在等編譯的 45 分鐘中想出來(lái)的)。
  • 編譯耗時(shí):在大型編譯集群中,構(gòu)建時(shí)間也延長(zhǎng)到了幾分鐘,甚至幾小時(shí)。

設(shè)計(jì)目的

為了實(shí)現(xiàn)上述目標(biāo),在既有語(yǔ)言上改造的話,需要解決許多根本性的問(wèn)題,因此需要一種新的語(yǔ)言。

這門新語(yǔ)言需要符合以下需求:

  • 目的:設(shè)計(jì)和開發(fā) Go 是為了使在這種環(huán)境下能夠提高工作效率。
  • 設(shè)計(jì):在 Go 的設(shè)計(jì)上,除了比較知名的方面:如內(nèi)置并發(fā)和垃圾收集。還考慮到:嚴(yán)格的依賴性管理,隨著系統(tǒng)的發(fā)展,軟件架構(gòu)的適應(yīng)性,以及跨越組件之間邊界的健壯性。

這門新語(yǔ)言就是現(xiàn)在的 Go。

Go 在 Google

Go 是 Google 設(shè)計(jì)的一種編程語(yǔ)言,用于幫助解決谷歌的問(wèn)題,而 Google 的問(wèn)題很大。

Google 整體的應(yīng)用軟件很龐大,硬件也很龐大,有數(shù)百萬(wàn)行的軟件,服務(wù)器主要是 C++ 語(yǔ)言,其他部分則是大量的 Java 和 Python。

數(shù)以千計(jì)的工程師在代碼上工作,在一個(gè)由所有軟件組成的單一樹的 "頭 " 上工作,所以每天都會(huì)對(duì)該樹的所有層次進(jìn)行重大改變。

一個(gè)大型的定制設(shè)計(jì)的分布式構(gòu)建系統(tǒng)使得這種規(guī)模的開發(fā)是可行的,但它仍然很大。

當(dāng)然,所有這些軟件都在幾十億臺(tái)機(jī)器上運(yùn)行,這些機(jī)器被視為數(shù)量不多的獨(dú)立、聯(lián)網(wǎng)的計(jì)算集群。

簡(jiǎn)而言之,Google 的開發(fā)規(guī)模很大,速度可能是緩慢的,而且往往是笨拙的。但它是有效的。

Go 項(xiàng)目的目標(biāo)是:消除 Google 軟件開發(fā)的緩慢和笨拙,從而使這個(gè)過(guò)程更富有成效和可擴(kuò)展。這門語(yǔ)言是由編寫、閱讀、調(diào)試和維護(hù)大型軟件系統(tǒng)的人設(shè)計(jì)的,也是為他們?cè)O(shè)計(jì)的。

因此 Go 的目的不是為了研究編程語(yǔ)言的設(shè)計(jì),而是為了改善其設(shè)計(jì)者及其同事的工作環(huán)境。

Go 更多的是關(guān)于軟件工程而不是編程語(yǔ)言研究?;蛘邠Q個(gè)說(shuō)法,它是為軟件工程服務(wù)的語(yǔ)言設(shè)計(jì)。

痛點(diǎn)

當(dāng) Go 發(fā)布時(shí),有些人聲稱它缺少被認(rèn)為是現(xiàn)代語(yǔ)言的必要條件的特定功能或方法。在缺乏這些設(shè)施的情況下,Go怎么可能有價(jià)值?

我們的答案是:Go 所擁有的特性可以解決那些使大規(guī)模軟件開發(fā)變得困難的問(wèn)題。

這些問(wèn)題包括:

  • 構(gòu)建速度緩慢。
  • 不受控制的依賴關(guān)系。
  • 每個(gè)程序員使用不同的語(yǔ)言子集。
  • 對(duì)程序的理解不透徹(代碼可讀性差,文檔不全等)。
  • 工作的重復(fù)性。
  • 更新的成本。
  • 版本偏移(version skew)。
  • 編寫自動(dòng)工具的難度。
  • 跨語(yǔ)言的構(gòu)建。

純粹一門語(yǔ)言的單個(gè)功能并不能解決這些問(wèn)題,我們需要對(duì)軟件工程有一個(gè)更大的看法。因此在 Go 的設(shè)計(jì)中,我們?cè)噲D把重點(diǎn)放在這些問(wèn)題的解決方案上。

總結(jié)

軟件工程指導(dǎo)了 Go 的設(shè)計(jì)。

與大多數(shù)通用編程語(yǔ)言相比,Go 的設(shè)計(jì)是為了解決我們?cè)跇?gòu)建大型服務(wù)器軟件時(shí)接觸到的一系列軟件工程問(wèn)題。這可能會(huì)使 Go 聽起來(lái)相當(dāng)沉悶和工業(yè)化。

但事實(shí)上,整個(gè)設(shè)計(jì)過(guò)程中對(duì)清晰、簡(jiǎn)單和可組合性的關(guān)注反而導(dǎo)致了一種高效、有趣的語(yǔ)言,許多程序員發(fā)現(xiàn)它的表現(xiàn)力和力量。

為此產(chǎn)生的 Go 特性包括:

  • 清晰的依賴關(guān)系。
  • 清晰的語(yǔ)法。
  • 清晰的語(yǔ)義。
  • 相對(duì)于繼承的組合。
  • 編程模型提供的簡(jiǎn)單性(垃圾收集、并發(fā))。
  • 簡(jiǎn)單的工具(Go工具、gofmt、godoc、gofix)。

這就是為什么要開發(fā) Go 的由來(lái),以及為什么會(huì)產(chǎn)生如此的設(shè)計(jì)和特性的原因。

你學(xué)會(huì)了嗎?:)

參考

 

翻譯、修整《Go at Google: Language Design in the Service of Software Engineering》

 

責(zé)任編輯:武曉燕 來(lái)源: 腦子進(jìn)煎魚了
相關(guān)推薦

2014-04-09 10:08:06

FacebookHack

2012-05-19 22:17:30

Android

2020-06-22 07:18:21

Java語(yǔ)言開發(fā)

2020-04-07 16:12:56

Go編程語(yǔ)言開發(fā)

2022-06-02 08:48:39

Go枚舉器Iota

2017-04-05 18:10:05

R語(yǔ)言開發(fā)Ross

2017-09-08 08:35:16

Android代碼API設(shè)計(jì)

2010-11-03 09:22:00

C語(yǔ)言

2010-01-22 15:14:37

學(xué)習(xí)C++

2021-02-23 10:19:46

編程技能開發(fā)

2024-01-02 10:38:22

Go語(yǔ)言數(shù)組

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2018-05-02 12:34:48

2023-09-17 23:01:39

Python編程語(yǔ)言

2015-05-25 15:31:56

C語(yǔ)言學(xué)習(xí)和使用 C 語(yǔ)言

2023-03-06 08:01:25

structGo語(yǔ)言

2025-07-01 07:37:27

2020-02-24 09:38:05

PythonGo語(yǔ)言Linux

2023-11-20 22:26:51

Go開發(fā)

2012-11-13 10:27:45

PythonGo編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)