在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
摘要:本文整理自Google首席工程师Rob Pike的演讲Slide,主要讲述的了Go的部分设计原理和初衷,也有提到Go语言在Google内外的应用现状。但本文的目的更多的是关于软件工程而不是编程语言的设计,更准确地说是如何设计编程语言来帮助软件工程。
序言:关于GoGo语言是一个开源、并发、高效、简单、有趣(但对某些人来说可能很无聊)的编程语言,支 持垃圾回收(GC),具有很好的可伸缩性。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go最初是为了解决Google的问题而开发的,要知道Google面临着很多大问题。Google的中服务器最主要是C++编写的,除此之外还 有 很多Java、Python代码。另外,Google还有数千名工程师、无数行代码、庞大的分布式构建系统以及数不清的机器(我们认为相对于一个中等规模 的集群)。Google的开发可能很慢,甚至笨拙,但它总是很有效。 所以毫无疑问Go对“大硬件”的支持非常好,也适合“大软件”的开发。CSDN之前也编译了一批Rob Pike的文章——Go语言之父谈Go:大道至简,在这里Rob描述了Go的创作起源和初衷。 为什么应该用Go?Go是为了帮助人们阅读、调试和维护大型软件系统而生的,所以目标是
但是在使用C++或者Java开发中却常常遇到各种问题:
而Go语言则是为了解决这些问题而设计的。 另外,C语言的依赖一直是个大问题,包括依赖叠加、编译时引入依赖的情况都很难处理,同时你也没办法查清哪些依赖是可以删除的,那些不可以。在C++中,这一点变得更加明显:
所以一直无法在一台机器上构建大型Google二进制。(To build a large Google binary on a single computer is impractical.) 当然,工具确实很有帮助,于是做了如下改进:
即使在Google的分布式构建系统的的帮助下,大型构建工程依然会花费不少时间(以其中一个二进制文件为例,在2007年花了45分钟,现在是27分钟)。生活质量还是太低。 走进Go语言我们都希望拥有更高质量的生活,所以必须解决这些问题,所以就有了最初的想法:
Go语言的设计是以软件工程为目标,所以它有这些优点:
还有那些问题?Go语言目前所面临的最大问题在于,还没有足够的经验来证明Go是否真的是一个成功的产 品,缺少大型应用实践。但是在Google内部,如golang.org、youtube.com、dl.google.com都已经开始使用Go语言开 发,除此之外还有一些其它小应用(有的是在GAE上)也选择使用Go;而在Google之外,BBC Worldwide、Canonical、Heroku、Nokia、SoundCloud也都在尝试Go。 总而言之,Go是由软件工程驱动的编程语言,但富有成效并且有趣,这样的设计非常高产。 Rob Pike演讲的Slide可以在这里看到。 |
请发表评论