当前位置: 首页 > 后端技术 > Java

为什么谷歌大佬要开发Go这种新语言?

时间:2023-04-01 22:22:30 Java

大家好,我是炸鱼。大家平时用的都是Go语言,所以过去就有了C、C++、Java、PHP。为什么谷歌的大人物想要开发一种新语言?能造轮子吗,别的语言不香吗?背景Go编程语言诞生于2007年底,其目的只有一个:解决在Google开发软件基础架构时遇到的一些问题。图中的三位是Go语言的原设计者,都非常厉害。他们从左到右依次为:RobertGriesemer:他参与了谷歌V8JavaScript引擎和JavaHotSpot虚拟机的开发。RobPike:Unix操作系统的早期开发者之一,UTF-8的创始人之一,Go语言吉祥物的设计者是RobPike的儿媳。KenThompson:图灵奖获得者,Unix操作系统的早期开发者之一,UTF-8的创始人之一,C语言(原B语言)的设计者。遇到的问题在早期的面试中,谷歌的老板们都觉得“编程”太麻烦了。他们不太喜欢C++。他们对现在工作的语言和环境感到沮丧,充满了许多无法使用的特征。遇到的具体问题。如下:软件复杂:多核处理器、网络系统、大规模计算集群、网络编程模型带来的问题只能暂时绕开,不能直接解决。软件规模:软件的规模也发生了变化。今天的服务器程序由几千万行代码组成,由数百甚至数千名程序员共同工作,并且每天都在更新(据说Go需要等待45分钟才能编译。算出来了)。编译时间:在大型编译集群中,构建时间也可能延长到几分钟,甚至几小时。设计目的为实现上述目标,对现有语言进行改造,需要解决许多基础性问题,因此需要一种新的语言。新语言需要满足以下要求:目的:Go的设计和开发是为了在这种环境中提高生产力。设计:在Go的设计中,除了比较知名的方面:比如内置并发和垃圾回收。还考虑了:严格的依赖性管理、随着系统的发展软件架构的适应性以及跨组件边界的健壮性。这种新语言现在是Go。GoatGoogleGo是谷歌为了帮助解决谷歌的问题而设计的一种编程语言,谷歌的问题很大。谷歌整体应用软件庞大,硬件也庞大。有数百万行软件。服务器以C++语言为主,其余大量使用Java和Python。数以千计的工程师在代码上工作,在所有软件的单个树的“头部”,因此每天都会对该树的所有级别进行重大更改。大型定制设计的分布式构建系统使这种规模的开发成为可能,但它仍然很大。当然,所有这些软件都运行在数十亿台机器上,这些机器被视为少数独立的网络计算集群。简而言之,谷歌的开发规模庞大,速度可能很慢,而且往往很笨拙。但它有效。Go项目的目标:通过消除Google软件开发的缓慢和笨拙,使流程更加高效和可扩展。该语言是由编写、阅读、调试和维护大型软件系统的人员设计的,也是为他们而设计的。因此,Go的目的不是研究编程语言设计,而是改善其设计者及其同事的工作环境。Go更多的是关于软件工程而不是编程语言研究。或者换个说法,就是为软件工程服务的语言设计。痛点当Go发布时,一些人声称它缺乏现代语言所必需的特定功能或方法。如果没有这些设施,Go怎么会有价值?我们的答案:Go具有解决使大规模软件开发困难的问题的特性。这些问题包括:构建缓慢。不受控制的依赖性。每个程序员都使用该语言的不同子集。对程序的理解不佳(代码可读性差、文档不完整等)。工作的重复性。更新成本。版本偏差(versionskew)。编写自动工具的难度。跨语言构建。纯粹的一种语言的单一特性并不能解决这些问题,我们需要一个更大的软件工程视野。所以在Go的设计中,我们尝试着重解决这些问题。总结软件工程指导了Go的设计。与大多数通用编程语言相比,Go旨在解决我们在构建大型服务器软件时遇到的一系列软件工程问题。这会使Go听起来相当沉闷和工业化。但事实上,在整个设计过程中对清晰、简单和可组合性的关注反而导致了一种高效、有趣的语言,许多程序员发现这种语言富有表现力和强大。由此产生的Go特性包括:清除依赖关系。语法清晰。语义清晰。组合而不是继承。编程模型提供的简单性(垃圾收集、并发)。简单工具(gotools、gofmt、godoc、gofix)。这就是Go被开发的原因,以及它具有这样的设计和特性的原因。你学会了吗?:)如有任何问题,欢迎在评论区反馈交流。最好的关系是相互成就。您的好评是创作炸鱼最大的动力。感谢您的支持。文章持续更新中。可以微信搜索【脑补炸鱼】阅读。本文已收录在GitHubgithub.com/eddycjy/blog中。学习Go语言可以看Go学习地图和路线。欢迎星星提醒。参考翻译和修整《Go at Google: Language Design in the Service of Software Engineering》