ECUG 2015|许式伟:对编程语言的选择无关阵营,关乎品味

641 查看

编者按:许式伟,七牛云 CEO , ECUG 社区发起人, Go 语言专家,著有国内第一本 Go 语言图书《 Go 语言编程》。有超过 15 年互联网从业经验,曾在金山、盛大等知名公司担任重要技术岗位从事核心产品研发。 2011 年创立七牛云,现仍然活跃在技术前沿领域。

近日,图灵社区对许式伟进行了专访,所采访的主要话题并不是他作为技术牛人的开发经历或是他作为创始人的奋斗史,而关于他在 2007 年创建的 ECUG 社区(全称为 Effective Cloud User Group ,曾用名是 Erlang China User Group )。这样一个曾经关于 Erlang 语言的社区是如何成为云计算领域技术交流的“神圣场合”的呢?我们来看看他是如何回答的吧。

ECUG 最初名为 Erlang China User Group ,于 2010 年更名为 Effective Cloud User Group ,想了解一下名称的改变主要基于哪些考虑?这样的变化是否也代表了技术环境上,一个时代的变迁?

Erlang 是一门小众语言,我们在成立 ECUG 的时候,国内没有几个人对它感兴趣。这门语言特色鲜明,是服务端编程实践的一面旗帜。所以 ECUG 最早叫 Erlang China User Group ,是因为我们想推广 Erlang 。但哪怕如此,从第一届的 ECUG 大会开始我们也没有限制一定必须是 Erlang 语言的编程实践,只要服务端开发的实践分享都可以。

2009 年的 ECUG 大会上,我们讨论了改名的事宜,最后确定了 Effective Cloud User Group 这个名字,在 2010 年我们正式进行了调整。这个改名一方面是由于 ECUG 探讨 Erlang 的话题已经越来越少,坚持老的名字已经非常名不符实。另一方面云计算时代已经明确来临,我们希望吸引到更多人参与到服务端开发的最佳实践的分享中来。到 2011 年时,我们进一步扩大了 ECUG 的话题范畴,不再限制只是服务端开发的实践,只要是服务端领域的话题都可以,比如说服务器运维、服务器安全等等。

自成立以来, ECUG 已有 8 年之久,从成员和活动内容的角度来说,最大的改变是什么?

变化其实是逐步发生的。最早我们主要围绕 Erlang 这门语言探讨服务端的编程实践,到 2011 年话题基本上转向以 Go 语言为主。这不是我的个人意志,而是时代变化的结果。到今天, Go 语言已经基本上统治了云计算。

建立 ECUG 的初衷是什么?一路走来, ECUG 为你和其他人带来了哪些收获?

最早建立 ECUG 的初衷是希望认识服务端开发的朋友,并且交流在服务端开发的最佳实践。一方面我常年在珠海这样一个二线城市,并且刚刚从桌面开发转型到服务端开发,我个人主观非常渴望交流,学习其他人的先进经验。另一方面也是觉得南方行业内的交流是比较少的,所以希望自己能够在这方面贡献一点力量。

直到今天,这个会议仍然是我了解其他行业技术进步的窗口之一,基本上国内各个公司的技术大拿都来过 ECUG 分享过他们的思想。有一些人还是常客,像刘奇、谢孟军、田琪等。也许他们中间换了公司,但和 ECUG 的约定一直不变。很感谢他们。

ECUG 和七牛的成立有什么关系?现在, ECUG 对你和整个行业来说意味着什么?

ECUG 和七牛的成立没啥关系。唯一有关系的是, ECUG 是云计算行业的技术大会,七牛是云计算公司。

在今天会议如此之多的背景下,我坚持 ECUG 以技术干货为导向,杜绝广告。一方面事先对讲师的演讲内容进行确认,另一方面如果谁玩纯广告就封杀,此后的 ECUG 不再接受这个人的议题。 ECUG 对我和整个云计算行业来说,是大家技术交流的神圣场合,通过交流促进行业共同进步。

今年的 ECUG 大会你为什么选择“一周一语言”这个演讲主题? ECUG Con 2015 有什么特色?

嗯,你这个问题有意思,是今天采访最让我兴奋的话题了。为什么选择“一周一语言”,有几个原因吧。一方面,弥补下中国人没有自己流行语言的遗憾,我认为 qnlang (不过我在内部已经改名为 qlang ,即 Q 语言)具有流行起来的基因。 qlang 的定位很独特:它是 Go 语言的伙伴语言。作为和 Go 语言交互最便捷的语言,在 Go 语言成为云计算的事实标准时,在很多场合我们都可以用 qlang 作为辅助语言完成对系统的灵活定制需求。例如,如果我们用 Go 语言开发爬虫,我们可以用 qlang 来定制爬虫的诸多策略,怎么做到这一点我在演讲中会给出示范。

另一方面,大部分人学习的时候太功利,不太重视学习基本功,比如编译原理。事实上我认为编译原理是非常非常重要的一门基础知识。某种程度上说可能是名字不够好,我个人更喜欢把这个领域叫做文本处理。文本处理应用范围非常广泛,想一下我们今天实际生产环境中,什么地方不需要文本处理?在我们现在很火的“大数据”领域,文本处理显然是很重要的基础。

ECUG Con 2015 从议题上看,技术更加细粒度化了,很多讲师都选了一个很小的知识点来展开讲,把话题讲透彻,这是很好的进步。比如洪强宁只讲网络,我只讲文本处理,刘奇讲 Raft (有趣的是 Etcd 作者李响讲 Paxos ,他们两的议题结合起来听一定很有意思)。比起很泛泛地说 XX 实践,这样的议题大家可以得到更多干货。

很多人都把七牛、你和 Go 语言紧紧地联系在了一起,曾几何时,很多人认为七牛选择 Go 语言是一个很大胆的决定。请问程序员应该如何选择正确的编程语言?面对一门新语言时又该如何高效地学习?

没有正确的编程语言,只有合适自己的语言。选择语言需要基于你对要解决的问题域的理解而做出抉择。当然,这事也和品味有关,不同语言实际上体现的是创始人的个性。不少程序员喜欢把语言看做阵营。我个人没有这种想法,语言说白了只是个工具。没有必要因为我选了 Go 语言,就觉得你没有选 Go 就和我是敌对。如果有适合所有领域的语言,我也不会去造 qlang 这个新语言了。

学习新语言的最好办法是实践。你用它写几个程序解决你实际生产环境你遇到的问题,这比任何方式都有效。我记得我第一个 C 语言程序是在 DOS 环境下模仿实现了一个 doskey ,这个东西挺复杂,涉及编辑器、 TSR 驻留这些领域知识,一个程序写下来有好几千行。这就是我自己的学习方法。

你曾经说过“我为谁提供服务的认知,比我是哪个领域的程序员(工种认知)更重要”,对于程序员来说,如何培养这种基于产品的思考方式?

有些程序员只关心技术,而不关心业务,我认为这会制约他们的发展,所以才给了这样的忠告。只关心技术的人很快就会遇到成长的天花板。关心你的客户,这个行动起来可以很简单。比如我在金山做办公软件的时候,喜欢泡 WPS 用户论坛,这是技术人员近距离接触客户的有效方法。这个时候技术就不只是技术,它的背后就是鲜活的人,他们有思想,有喜怒哀乐。这样你对产品的理解会深刻很多,你会理解产品设计为什么是做成这样的,而不是另一种形态。

相比于其他技术公司,哪怕是云计算公司,七牛的极客文化都是极其鲜明的,请问这种文化基因来源自哪里?你?初始创业团队?还是行业?

七牛的文化基因,可能和我、我们初始创业团队的风格有关。我希望七牛别那么功利。虽然企业都需要赚钱,但是只想赚钱的企业是很没有意思的。所以我们做企业的时候坚持了做我们自己,做我们喜欢做的事情。我个人很喜欢接触新技术,体验新技术的力量。至于这是极客还是什么,其实我也不太关心。

国内云计算行业内部的竞争现在处于什么阶段?是否可以大胆地预测一下云计算行业的未来发展方向?

中国的云计算从阶段上来说,仍然非常早期。具体说来,就是整个云计算的市场容量仍然非常非常小。云计算的未来不需要我预测,结论是非常明确的,很多人都进行了预测,大家的意见很趋同。

ECUG 2015 正在火热报名中,前往报名: http://www.huodongxing.com/event/5316188717200