标签 云计算 下的文章

Go语言:成长的十年

Go语言之父,Google大神Rob Pike代表Go语言的另外两位缔造者Robert GriesemerKen Thompson在自己的博客上发表了一篇名为《Go: Ten years and climbing》的文章,用以纪念Go语言从最初的设计idea起到目前的十年发展。笔者读完后,也是深有感触,因此在这里粗略翻译一下全文,希望能有更多的程序员加入到Gopher行列中来。

译文全文如下:

img{512x368}
Drawing Copyright ©2017 Renee French

本周是创建Go语言十周年的纪念日。

记得第一次关于这门语言设计的讨论是在2007年9月20日,一个周四的下午。进而在第二天的下午两点,我、Robert Griesemer以及Ken Thompson在谷歌山景城总部43#楼的一间名为Yaounde的会议室里又组织进行了一场有关这门语言设计的会议。这门语言的名字诞生于9月25日,在第一封有关语言设计的mail中可以看到一些关于命名的设计考量:

    Subject: Re: prog lang discussion
    From: Rob 'Commander' Pike
    Date: Tue, Sep 25, 2007 at 3:12 PM
    To: Robert Griesemer, Ken Thompson

    i had a couple of thoughts on the drive home.

    1. name

    'go'. you can invent reasons for this name but it has nice properties.
    it's short, easy to type. tools: goc, gol, goa. if there's an interactive
    debugger/interpreter it could just be called 'go'. the suffix is .go
    ...

(将语言命名为Go这事儿值得一提;“golang”来自于这门语言的web站点地址(因为go.com当时已经是迪斯尼的一个web站点了),但却不是语言的恰当名字。)

Go项目将2009年11月10日,即Go项目正式开源的那天作为其官方生日。最初Go项目托管在code.google.com上,几年后迁移至GitHub。不过,现在我们要回到最初的语言概念构建阶段,即那之前的两年,这可以让我们做更进一步地回顾,以更久远的视角,见证一些语言早期的历史事件。

Go开发过程中的第一个惊喜是收到下面这封mail信息:

    Subject: A gcc frontend for Go
    From: Ian Lance Taylor
    Date: Sat, Jun 7, 2008 at 7:06 PM
    To: Robert Griesemer, Rob Pike, Ken Thompson

    One of my office-mates pointed me at http://.../go_lang.html .  It
    seems like an interesting language, and I threw together a gcc
    frontend for it.  It's missing a lot of features, of course, but it
    does compile the prime sieve code on the web page.

Ian Lance Taylor的加入以及第二个编译器实现(gccgo)在带来震惊的同时,也伴随着喜悦。这对Go项目来说不仅仅是鼓励,更是一种对可行性的证明。有了语言的第二个实现对确定语言规范和标准库的过程是至关重要的,同时也有助于Go保证其高可移植性的承诺

虽然Ian的办公室离我们不远,但在看到这封mail之前我们从未谋面。不过,从那之后,Ian Lance Taylor便成为了Go语言及工具设计和实现的核心人物。

Russ Cox也是在2008年加入到刚成立不久的Go语言开发团队的。随着他的加入,他的一些天赋也随即在语言设计和实现中展现出来。Russ发现Go method的通用性意味着一个函数也可以拥有自己的方法,这直接导致了http.HandlerFunc的出现,这是一个我们所有人都未曾想到的结果。Russ还在当时设计的基础上提出了一些更泛化的想法,比如io.Readerio.Writer接口,奠定了所有I/O库的整体结构。

Jini Kim是我们最初的产品经理,他招来了安全专家Adam Langley来帮助我们将Go推向Google外面的世界。Adam为我们做了许多不为外人所知的事情,包括创建最初golang.org站点的web页面以及build dashboard。不过他最大的贡献当然要属cryptographic库了。起先,对于我们中的一部分人来说,这个库无论是规模还是复杂度,和其他库比起来都不成比例。但是就是这个库在后期成为了很多重要的网络和安全软件的基础,并且成为了Go语言开发历史的关键组成部分。像Cloudflare这样的网络基础设施提供商就重度依赖Adam在Go项目中的工作,Internet也因此变得更好。因此,我们由衷感谢他的工作。

事实上,许多公司在早期使用Go进行开发,尤其是初创公司。其中一些公司成为了云计算的巨头,其中就有一家这样的公司,它现在叫Docker。这家公司使用Go语言,并催化出计算领域的容器行业,进而导致了像Kubernetes这样的项目出现。今天我们可以说Go是容器语言,这是另一个我们完全没有预料到的结果。

不过,Go语言在云计算领域起到作用更大。2015年3月,Donnie Berkholz在为RedMonk撰写的一篇文章中宣称:Go是“云计算基础设施新兴语言”。几乎与此同时,Apcera的Derek Collison说:Go已经是云计算语言了。在那个时候,这也许还不是事实。但Berkholz所使用的“新兴”一词却恰如其分的表明了Go在当时的地位。

今天,Go已经成为云计算语言。想象一下:一个只有10岁的年轻编程语言已经成为这样一个规模庞大且不断发展的行业的主导者,这样的成功以前只是存在于在想象中。如果你觉得“主导”这个词太过强势的话,让我们来看看中国互联网行业。一段时间以来,Go在中国地区大量使用的数据一度让我们误认为Google趋势图出现了某些错误,但是凡是去过中国,参加过中国区Go语言大会的人都可以证实:Google趋势图的数据是真的,Go在中国的使用非常火爆!

简而言之,Go语言的十年发展为我们带来了许多里程碑。 最令人惊讶的是我们现在的位置:保守估计表明至少有50万Go程序员。 当前面那封为Go命名的邮件发送时,憧憬能有有五十万gopher的想法听起来会感觉很荒唐。 但就在此时此刻这里,我们不仅有了50w gopher,并且数量还在持续增长。

说到gophers,很高兴看到来自Renee French想法的吉祥物Go Gopher(地鼠),不仅成为了一个非常受人喜爱的作品,而且也是世界各地Go程序员的象征。许多各个地区顶级的Go大会都被称为GopherCons,因为他们聚集了来自世界各地的gophers。

Gopher大会正在迅速发展。第一次大会的举办只不过是三年前的事情,但今天在全世界各地有很多这样的Go大会。并且还有无数小的本地“聚会(meetups)”。在任何某一天,世界上某个地方都会有不止一个gopher群体在进行有关Go的分享。

回顾过去十年的Go设计和开发,Go社区的发展是惊人的。会议和聚会的数量、长长的且不断增加的Go项目贡献者名单、大量用Go实现的开放源代码存储库、使用Go的公司数量等等,细思恐(吃惊)极!

对于我们三个人,Robert, Rob和Ken,当初只是想让我们的编程生活更轻松一些,而如今,我们难以置信地、欣慰地看到我们的工作已经开始起作用了。

未来十年会带来什么呢?

- Rob Pike, with Robert Griesemer and Ken Thompson


微博:@tonybai_cn
微信公众号:iamtonybai
github.com: https://github.com/bigwhite

2016小结

每到年终岁尾,历史上受到过中国文化影响的国家和地区都有评选当年年度汉字的传统,比如:2016年马来西亚年度汉字为“贪”,鬼子国日本年度汉字为“金”,中国台湾地区年度汉字为“苦”,而大陆地区的年度汉字据说是“规”。其实每个人心中都有一个自己的年度汉字,2016年,我个人的年度汉字为“变”。

一、离职

其实,这两年我求变的步伐一直没有停歇,只是今年迈出了实质性的一步。2016年4月末,就是在参加完GopherChina大会后,我就义无反顾的离开了工作10年多的老东家(也许很多人对于我的忠诚程度感觉很惊讶^0^),加盟了本地另外一家以IDC为基础、追求成为东北地区一流数据和基础设施服务商的初创企业。

我的新的直属领导是公司的技术VP,很牛逼的一个人,也是一名互联网老兵。据说他几乎以一人之力将公司IDC从无到有的建立起来(从商务采购谈判到IDC技术),并组建团队,打造公司云基础设施平台。当时我怀揣的极大的热情希望能在这样的一个新环境下,在公司的重点技术领域:云计算(基于OpenStack的公有云平台)、大数据技术、容器平台(与Rancher公司合作开发容器管理平台)等方向深入下去。但事情的发展往往是这样的套路:你越是期待的,结果却事与愿违。

当时正值公司刚刚确定了新的一年的几个重点战略方向,其中一个就是面向Goverment的智慧城市建设方向,我们戏称:”To G业务”。公司大老板希望我能以一个技术架构师的角色,对公司整个面向智慧城市的技术架构、产品和服务进行梳理,形成公司对应To G方向的核心产品套件和方法论。当时的我对于什么是智慧城市基本上是小白一个,无奈老板发话,只能硬着头皮上。

在后续若干个月的梳理过程中,我渐渐发现这个工作中技术绝对不是主要的因素,重要的是对智慧城市的深入理解。而智慧城市建设的纷繁芜杂,加上没有实战经验,驾驭起来又岂能是短短几个月的事情?输出的成果物我自己感觉都很苍白无力。那个阶段,我在各方面是备受煎熬:工作量是庞大的,老板要求也高,关键是还没有什么成就感。并且渐渐地我发现大老板似乎希望我能继续在smart city这个领域继续钻研下去,甚至成为专家型选手。这显然与我对自己的定位和规划不符,我没有成为智慧城市专家的愿望和热情,自觉也没有这方面的能力。于是在工作了大致五个月的时候,在输出了近六本成果物之后(没错,我这几个月的成果物就是一本本薄薄的书,如果你在市面上能有幸看到署有我的名字的关于智慧城市的著作,也不要惊讶哦^0^,不过看不到的可能性更大),我选择了离开。

这次跳槽从一般意义来说,也许是失败的。但个人觉得这几个月我还是有很多收获的。Hard模式让我个人也有了更快的成长,尤其是在内心抗压上。同时,在其他方面也有不少收获,这些收获不是在技术层面,而是在格局、眼界以及接触的人的圈子方面:由于角色的原因,接触到很多外部公司的相对级别较高的人,和他们一起交流,增长了许多见识。

二、蛰伏

离开的时候其实有几个机会,但是考虑到东北当前经济环境下的创业企业的情况,于是决定先回到老东家,不过这次换到了另外一个部门(以前的老领导负责的一个部门,这里感谢老领导收留^0^),我也从新回归技术兼部分技术管理,我把这个阶段称为蛰伏。一方面,将当前团队的产品打磨好,一方面等待下一次“变”的机会。

顺便简要说一下当前所做的事情。当前团队规模不大,5 dev + 1美工美女,致力于制作一个相对通用的互联网产品运营平台,一个类APaaS平台,与国内主流运营渠道能力对接(比如:微信等),简化商家在产品营销和运营时应用开发、部署和运维的门槛,为应用提供支持负载均衡和快速弹性伸缩的环境,以保障应用在业务波峰也可以正常运作。平台的底层采用的是Kubernetes,这也是10月份以来我为何发表大量有关容器Kubernetes博文的原因。团队目前也在摸着石头过河,无论是对方向的把握还是对技术的探索。

团队采用了一些较新的小众流行的“技术栈“,包括:golangvue.js 2.0等。目前团队还在招前后端开发,沈阳的朋友有意者可以留言联系。

三、小目标

优秀是一种习惯。反过来,不是所有习惯都能让你优秀,比如那些众所周知的“坏毛病”。

2017,从现在开始,我要改掉如下的一些“坏毛病”:

  • 不吃垃圾食品,比如方便面、KFC等;
  • 不躺着床上看书,除非是为了入眠^_^;
  • 拖延症,或多或少还是有一点的。

总是告诉女儿:活到老学到老!作为爸爸,必须带头身体力行,2017自然不能忘记学习。除了当前工作涉及到的golang、docker、k8s的应用和深入之外,目前考虑到的可能学习和实践的方向还包括:

  • AI:近两年大热的方向,特别是机器学习这一支。如果不跟上,就要落伍了。不过进入AI领地不是那么容易。要学的太多,而且很有难度。
  • Blockly:在国外,尤其是主流欧美国家,“编程一小时”活动开展的如火如荼,无论成人还是未成年的儿童少年,对于编程的兴趣与日俱增。我相信这一趋势将来也必将在国内“蔓延”开来。而Google开源的Blockly作为很多编程网站开发编程activity的基础是值得学习、研究和实践的。

img{368x512}
图:女儿在接受编程思维训练

四、自我寄语

新一年,风险与机遇并存。
但我心中那团火,永不熄!

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats