大家好,我是煎鱼。

大家平时都是在用 Go 语言,那以往已经有了 C、C++、Java、PHP。Google 的大佬们为什么还要再开发一门新的语言呢?

难不成是造轮子,其他语言不香吗?

背景

Go 编程语言构虚拟机怎么使用思于 2007 年底,构思的目的是:为了解决在 Google 开发软件基础设操作系统管理用户数据的单位是施时遇到的一些问题。

Google 大佬们为什么要开发 Go 这门新语言?

图上三位是 Go 语言最初的设计者,功力都非常的深厚,按序从左起分别是:

  • Robert Griesemer:参与过 Google V8 JavaScript 引擎和 Java HotSpot 虚拟机的研发。
  • Rob Pike:Unix 操作系统早期开发者之一,UTF-8 创始人之一,Go 语言吉祥物设计者是 Rob Pike 的媳妇。
  • Ken Thompson:图github直播平台永久回家灵奖得主,操作系统的主要功能是Unixgitlab操作系统的基本特征作系统早期开发者之一,UTF-8 创始人之一,C 语言(前身 B 语言)的设计者。

遇到的问题

曾经在早期的采访中,Google 大佬们反馈感觉 “编程” 太麻烦了,他github们很不喜欢 C++,对于现在工作所用的语言和环境感觉gitlab比较沮丧,充满着许多不怎么好用的特性。

具体遭遇到的问题。如下:

  • 软件复杂:多核处理器、网络系统、大规模计算集群和网络编github开放私库程模型所带来的问题只能暂时绕开,没gitlab法正面解决。
  • 软件规模:软件规模也发生了github直播平台永久回家变化,今天的服务器程序由数千万行代码组成,由数百甚至数千名程序员进行工作,而且每天都在更新(据闻 Go 就是在等编译的 45 分钟中想出来的)。
  • 编译耗时:在大型编译集群中,构建时间也延长到了几分钟,甚至几小时。

设计目的

为了实现上述目标,在既有语言上改造的话,需要解决许多根本性的问题,因此需要一种新的Git语言。

这门新语言需要符合以下需求:

  • 目的:设计和开gitlab发 Go 是操作系统管理用户数据的单位是为了使在这种环境下能够提高工作效GitHub
  • 设计:在 Go 的设计上,除了比较虚拟机是什么意思知名的方面:如内置并发和垃圾收集。还Git考虑到:严格的依赖性管理,随着系统的发展,软件架构的适应性,以及跨越组件之间边界的健壮性。

这门新语言就是现在的 Go。

Go 在 Google

Go 是 Google 设计的一种编程语言,用于帮助解决谷歌的问题,而 Google 的问题很大。

Google 整体的应用软件很庞大,硬件也很庞大,有数百万行的软件,服务器主要是 C++ 语言,其他部分则是大量的 Java 和 Python。

数以千计的工程师在代码上工作,在一个由所有软github中文官网网页件组成的单一树的 “头 ” 上工作,所以每天都会对该树的所有程序员怎么学层次进行重大改变。

操作系统是一种个大型的定制设计的分布式构建系统使得这种规模的开发是可行的,但它仍github打不开然很大。

当然,所有这些软件都在几十亿台机器上运行,这些机器被视为数量不多的独操作系统是什么的接口立、联网的计算集群。

Google 大佬们为什么要开发 Go 这门新语言?

简而言之,操作系统当前的配置不能运行此应用程序Google 的开发规模很大,速度可能是缓慢的,而且往往是笨拙的。但它是有效的。

Gogithub永久回家地址 项目的虚拟机vmos目标是:消除 Google 软件开发的缓慢和笨拙,从而使这个过程更富github中文官网网页有成效和可扩展。这门语言是由编写、阅读、调试和维github中文官网网页护大型软件系统的人设计的,也是为他们设计的

因此 Go 的目的不是为了研究编程语言的设计,而是为了改善其设计者及其同事的工作环境。

Go 更多的是关于软件工程而不是编程语言研究。或者换个说法,它是为软件工程服务的语言设计。

痛点

当 Go 发布时,有些人声称它缺少被认为是现代语言的必要条件的特定功能或方法。程序员在缺乏这些设施的情况下,Go怎么可能有价值?

我们的答案是:Go 所拥有的特性可以解决那些使大规模软件开发变得困难的问题。gitee

这些问题包括:

  • 构建速度缓慢。
  • 虚拟机受控制的依赖关系。
  • 每个程序员使用不同的语言子集。
  • 对程序的理解不透彻(代码可读性差,文档不全等)。
  • 工作的重复性。
  • 更新的成本。
  • 版本偏移(version skew)。
  • 编写自动工具的难度。
  • 跨语言的构建。

纯粹一门语言的单个功能并不能解决这些问题,我们需要对软件工GitHub程有一个更大的看法。因此在 Go 的设计中,我们试图把重点放在这些程序员那么可爱电视剧问题的解决方案上。

总结

软件工程指导了 Go 的设计。

与大多数通用编程语言相比,Go 的设计是为了解决我们在构建大型服务器软件时接触到的一系列软件工程问题。这可能会使 Go 听起来相当沉闷和工操作系统业化。

但事实上,整个设计过程中对清晰、简单和可组合性的关注反而导致了一种高效、有趣的语言,许多程序员发现它的表github是干什么的现力和力量。

为此产生的 Go 特性包括:

  • 清晰的依赖关系。
  • 清晰的语法。
  • 清晰的语义。
  • 相对于继承的组合。
  • 编程模型提供的简单性(垃圾收集、并发)。
  • 简单的github中文官网网页工具(Go工具、gofmt、godoc、gofix)。

这就是为什么要开发 Go 的由来虚拟机linux,以及为什么会产生如此的设计和特性的原因。

你学会了吗?:)

若有任何疑问欢迎评论区反馈和交流,最好的关系是互相成就,各位的点赞就是煎鱼创作的最大动力,感谢支持。

文章持续更新,可以微信github是干什么的搜【脑子进煎鱼了】阅读,本文 GitHub github.com/eddycjy/blo… 已收录,学习 Go 语言可以看 Go 学习地图和路线,欢迎 Star 催更。

参考

  • 翻译和修整 《Go atgithub官网 Google: Language Design in the Service of Software Engineering》