谷歌的Go编程语言掀起云开发的风暴
Docker、Heroku的Force.com和CloudFoundry(围棋)路由器等流行项目有什么共同之处?它们都是用“去”写的。谷歌有五年历史的编程语言。
虽然像Java这样的语言继续主导编程,但是已经出现了更适合现代计算,特别是在云中的新模型。专为云计算而写的Go因其对并发操作的掌握和其构建的美而越来越受欢迎。
从某种程度上说,谷歌的GO编程语言是一个非因素的发展。谷歌趋势衡量了人们对搜索术语的普遍兴趣,与Java、C和JavaScript等更成熟的编程语言相比,Go几乎没有什么用处。
但这并不能说明全部情况。虽然基本上不可能找出需要围棋技能的工作数量,但由于它的通用名称,有许多来源(见这里、这里和这里)表明Go作为雇主的一种重要编程语言正在获得发展势头。
然而,获得通过的最佳主要指标是它在开源开发中的崛起。
RedMonk的分析师DonnieBerkholz对Ohloh的分析跟踪了60万个开源项目,根据该分析,GO的采用是真实的,而且还在增长:
虽然几乎有1%的OHLOH跟踪项目似乎很小,但Berkholz则将其置于上下文中:
快速关闭占总数的1%,占项目和派遣国的一半。虽然这种趋势显然是令人感兴趣的,但在最初的扫视数字下,在1%的情况下,相对于总体采用而言,看起来是无关紧要的。然而,为了提供一些上下文,OhLOH(C、C++、Java、JavaScript)上最流行的语言中的每一种都仅占提交的约10%和约5%的项目和贡献者。也就是说,一个看似非常小的玩家,在自由和开源软件中已经使用了近十分之一,这是目前最流行的语言。
当然,这意味着,Go正在成为一个真正的大交易,尤其是如果我们考虑了一些在Github上最重要的项目,比如Docker。
谷歌的Go语言,毫不奇怪,特别适合云开发。但是,根据Go的设计师之一RobPike的说法,Go的创建者最初是为了提高C,但发现“很难将[必要的]并发操作与C的控制结构结合起来,这反过来又使人们很难看到真正的优势。最后,他放弃了它,因为“C使一切看起来太麻烦了。”.
部分之所以成功,是因为它使代码合成变得优雅和简单,因为派克继续:
围棋并不是包罗万象。你不能把所有的东西都装进去。你对执行的每一个细微之处都没有精确的控制。例如,你没有Raii。相反,你会得到一个垃圾收集器。你甚至连一个释放记忆的功能都没有。
给你的是一套强大但容易理解,易于使用的积木,你可以从中组装-合成-一个解决你的问题的解决方案。它可能不会像用其他语言编写的解决方案那样快、复杂或有意识形态的动机,但它几乎肯定会更容易编写、更容易阅读、更易于理解、更易于维护,甚至更安全。
开发人员转向的另一个重要原因是,与并发操作或同时执行多个进程的能力一样。作为一个开发人员注释,Go对并发性特别强:
PHP甚至Node.js的问题是,您显然陷入了单线程情况,而我真正想要的是能够同时做很多事情。我的选择是使用像Java这样的东西,在Java中,您有更多的内存开销,或者我可以使用从底层构建的并行性和使用非常现代的模式的Go之类的东西。
Go还提供了“C或C的静态执行速度”和“更多的组合感觉,一种脚本类型的感觉”的并发性。最终,开发人员爱上了“语言之美”本身,这是一种赞美。
无论是简单的组合还是简单的并发,开发人员似乎更喜欢GoogleGo,因为它是为云编写的,这似乎是未来的发展方向。
正如Berkholz总结的那样,“可以减轻新进入者和现有云用户的复杂性的工具将继续在堆栈的各个层次上获得突出地位。”这对于Go来说是正确的,并表明它在云开发的中心有着光明的前景。