From 2f5e428e9ecc1f4223901a1e773dc6625b8a4fce Mon Sep 17 00:00:00 2001 From: seifchen Date: Sat, 26 Jun 2021 17:38:40 +0800 Subject: [PATCH] add chap2 --- .../imgs/2-the-go-language.49d63fe2.jpg | Bin 0 -> 42841 bytes chap-2-the-go-language/the-go-language.md | 119 ++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 chap-2-the-go-language/imgs/2-the-go-language.49d63fe2.jpg create mode 100644 chap-2-the-go-language/the-go-language.md diff --git a/chap-2-the-go-language/imgs/2-the-go-language.49d63fe2.jpg b/chap-2-the-go-language/imgs/2-the-go-language.49d63fe2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71e4edcf279dcd24a894e83563cbad85e99d4ddb GIT binary patch literal 42841 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 bGzPhu|1}Ca(EQis4Ediv<)jY!XX5_=0l%vJ literal 0 HcmV?d00001 diff --git a/chap-2-the-go-language/the-go-language.md b/chap-2-the-go-language/the-go-language.md new file mode 100644 index 0000000..424950b --- /dev/null +++ b/chap-2-the-go-language/the-go-language.md @@ -0,0 +1,119 @@ +# Chapter 2: Go 语言 + +![](imgs/2-the-go-language.49d63fe2.jpg) + +## 1 本章中能学到的内容 + +- Go 的起源:它是什么时候被谁创造的。 +- 创造 Go 语言背后的动机。 +- Go 语言主要的特征是什么。 + +## 2 本章中提及的技术概念 + +- 构建时间 +- 静态类型语言 +- 并发 +- 垃圾收集器 +- 软件依赖 + +## 3 创世神话 + +关于 Go 语言的创建有一个神话。它诞生于 Google 的办公室内,它发生在耗时 45 分钟的漫长构建过程中。 + + +这个故事由 Rob Pike 在 [[@go-at-google]](#go-at-google) 中讲述。它为我们提供了关于创建 Go 背后动机的宝贵信息。构建时间太长太痛苦……他们不得不想办法避免它们;那是 Go 创世纪的切入点。 + +Robert Griesemer、Ken Thompson 和 Rob Pike 是 2007 年开始研究 Go 的开发人员。 Rob Pike 声称,到 2008 年年中,该语言 "很多部分已经被设计出来了,并且实现(编译器、运行时)开始工作了。"。之后,Ian Lance Taylor 和 Russ Cox 于 2008 年加入团队 [[@pike2009go]](#pike2009go)。 + +Go 是一种开源编程语言,由其社区和在 Google 工作的核心开发人员团队维护。 Go 首次发布是在 2011 年 3 月 16 日 。 (它被命名为“r56”)。 Go 版本 1 于 2012 年 3 月 28 日发布。 + +## 4 动机 + +Go(或 Golang)是由 Google 构建的,用于解决企业级问题。为了更好的理解原因,值得阅读 Rob Pike [[@go-at-google]](#go-at-google) 的主题演讲。 + +大型跨国公司的软件面临哪些挑战?(以谷歌为例) +- Google 服务的代码库非常庞大。谷歌有数百万行代码。 +- 这些代码是用不同的语言编写的:C、C++、Java 等。 +- 这些应用程序的**构建时间**“已经延长到几分钟,甚至几小时” +- 更新某些应用程序部件的代价可能非常高昂。 + +第一个 Gophers[1](#1) 的目标是通过以下方式使开发人员的生活更轻松: +- 大幅减少程序的构建时间。 +- 为接触过 C、C++ 或 Java 的年轻开发人员设计一种易于学习、阅读和调试的语言。 +- 设计一个有效的**依赖**管理系统。 +- 构建一种可以在硬件上生成可很好扩展的软件的语言。 + +### 4.1 一些概念的定义 + +- **构建时间**:编译器生成机器可读的可执行文件所需的时间。 +- **静态类型语言**:现在给出这个概念的精确定义还为时过早。 我们将在接下来的章节中介绍这个术语。 +- **依赖**:一个软件被另一个软件使用。 +- **可扩展性**:程序处理越来越多的待执行任务的能力。 例如,如果一个网站可以接受越来越多的请求而不会停机或增加加载延迟,那么它就被认为是可扩展的。 + +## 5 Go 主要功能 + +Go 的创造者将他们的精力集中在几个关键的设计选择上: +- 一种编译型语言 +- 语法易于理解和学习 +- **静态类型** +- 具有内置**并发性**的系统,易于开发人员工作 +- 具有强大的依赖管理功能 +- 拥有自动的**垃圾收集器** + +正如 Rob Pike 所说,Go 的主要目标是为开发人员提供一种易于学习的语言,用于“设计大型软件项目” 。 + +### 5.1 一些概念 + +- **并发**:当任务可以无序或部分顺序执行时,就说程序是 并发的 [2](#2)。 +- **垃圾收集器**(通常我们叫做 GC):当我们构建程序的时候,我们需要在内存中存储和读取数据。内存不是无限的资源。因此开发者必须确保不时销毁存储在内存中的未使用的元素。将数据存入内存我们称为分配;相反的操作,包括从内存中删除数据我们称之为释放。垃圾收集器的作用就是在某一元素不再被使用时释放其所占用的内存。如果某一语言不具有任何垃圾收集器,开发人员必须手动收集他的垃圾并释放不再使用的内存......碰巧,Go 有一个垃圾收集器。 + +## 6 Go 目前状态 + +- 该项目发展非常迅速,现在已经有超过一千名贡献者 [3](#3)。 +- 在撰写本文时(2020 年 1 月 8 日),Go 的最新版本是 1.15.6 。 +- 目前已经组织了许多聚会和会议来联合社区[4](#4) + - 2018 年共组织了 19 个会议:3 个在美国,16 个在其他国家5 [5](#5) + - 2017年共举办13场会议 +- Go 在开发者当中也很受欢迎: + - 在 2018、2019 和 2020 年的 Stackoverflow 开发人员调查中,Go 是最受欢迎的三种编程语言之一 [@dev-survy-2018]。 + +## 7 自我测试 + +### 问题 + +1. Go 语言的诞生日期是什么时候? +2. 什么是并发? +3. 平均而言,Go 的构建时间很长,正确还是错误? + +### 答案 + +1. Go 语言的诞生日期是什么时候? + 1. 2007 +2. 什么是并发? + 1. 当任务可能同时执行时,程序是并发的。 +3. 平均而言,Go 的构建时间很长,正确还是错误? + 1. 错误。创建该语言就是为了解决这个确切的问题。 + +## 8 要点 + +- Go 诞生于 2007 年。 +- Go 第一个版本发布于 2012 年。 +- Go 语言很容易理解。并且它的语法很简单。 +- Go 是静态类型语言。 +- Go 是编译型语言。 +- 你可以用 Go 编写并发程序。 + +--- + +1. 这是 Go 程序员的昵称[↩](#4.1) +2. 我们将在另一章中更深入地探讨这个概念。定义取自 https://en.wikipedia.org/wiki/Concurrency_(computer_science)︎ [↩](#5.1) +3. 2019 年 8 月 13 日,Go 项目有 1,349 名贡献者[↩](#6.1) +4. 请参阅此页面 https://github.com/golang/go/wiki/Conferences[↩](#6.2) +5. 这些数字是从网页 https://github.com/golang/go/wiki/Conferences 中提取的,于 2019 年 8 月 13 日检查[↩︎](#6.3) + + +## 9 参考文献 + +- [go-at-google] ———. 2012. “Go at Google: Language Design in the Service of Software Engineering.” https://talks.golang.org/2012/splash.article. +- [pike2009go] Pike, Rob. 2009. “The Go Programming Language.” Talk Given at Google’s Tech Talks. +- [dev-survy-2018] “Stackoverflow Developer Survey 2018.” 2018. https://insights.stackoverflow.com/survey/2018/. \ No newline at end of file