最近在学习react-native和QT

帝国的更迭 :Go语言能否成为新的霸主?

golang jackton 863℃ 0评论

Go会成为编程语言中新的霸主吗?

在2016年8月10日,100offer曾推出过一篇《C++和C++程序员快要被市场淘汰了?》,提及C++的兴盛期与衰退期。不可否认的是,有的热门语言在衰退后便从此一蹶不振,直至淘汰,有的热门语言面临被替代风险时,经历低谷再迎来重生,更多新兴语言是从未见过天日,未被世人知晓前便尘埃落定,彻底消亡。

战争是由胜者推翻旧帝国,来撰写新历史,在科技比拼里,强大公司都在写编程语言,创建新帝国。2007年,谷歌工程师设计了一门全新语言:Go语言的原型。2009年11月10日,Go语言以开放源代码的方式,正式在全球发布,同年,Go拿下TIOBE榜单的「年度编程语言」,犹如新帝国崛起。

2003-2014 TIOBE 年度编程语言,图片来源TIOBE官网

Go虽在发布当年拿下TIOBE的年度编程语言,但在TIOBE的排名并不是很理想,直到2016年8月,Go异军突起,从50名开外跃至第20名,引发众人讨论。

2015-2016 Go在TIOBE的排名走势,图片由100offer整理制作

上图为2015年9月至2016年8月Go语言在TIOBE的排名走势,曲线越低代表排名越上升。

榜单前十名的竞争是最为激烈的。谷歌的Go前年第19名,去年第13名,今年更是挤进前10,充分说明了其日益增长的影响力。Diakopoulos分析说,Go的快速上升跟Github上的使用率上升有关。据统计,2016年Github上以Go为主要语言的的原始仓库数量是2014年的四倍,另外在Reddit上人们对Go的讨论也较多,如今有关Go的帖子比2014年翻了三倍。

Go语言的迅速上升,在招聘市场上也发生了明显改变,让我们来看看这一年来企业对Go工程师发出的面邀数量。

2015-2016 Go工程师在C端的需求走势,数据来源:100offer数据库

如今,Go语言,无论是它在各大榜单上的亮眼表现,还是各类媒体对它的争先追捧,又或是招聘市场上的需求提升,Go语言无疑是崛起的,这让无数人心里都起了一个疑问——

Go会成为编程语言中新的霸主吗?

100offer无意做语言之间谁优谁劣的比较,编程语言的对比并无意义,任何一种热门编程语言都会被人预言衰退。

在此,100offer给出的答案是:从市场需求上来看,Go语言无法撼动Java、C++等编程语言的霸主地位,Go语言成为市场需求上的新宠儿,还需要很长一段时间。

Go语言在中国很受欢迎?

Go在TIOBE取得了优异成绩,在中国互联网的讨论上也一直热度不减。Go语言现在热度很高是事实,从2016年5月4日100offer发布的《2016年春季互联网高端人才流动报告》中也能发现,Go语言工程师以年薪35.2万元排在第三。

100offer 2016年春季互联网高端人才流动报告

在谷歌的推动下,Go语言迅速发展,新帝国崛起的光芒总是无比耀眼。

Go语言作为一种创新性的甚至革命性的编程语言,即便它诞生了时间只有六年。一个帝国的崛起通常需要很久,六年的时间不足以让Go语言成为编程语言的霸主,但足以威胁不少弱势语言的前程,甚至动摇「帝国」语言的地位。

众所周知,Go语言自诞生起,给大众留下的第一印象是:便捷,它在并发编程这一块做到了极简,且支持编程范式,它保证了足够强大的程序构建和发布工具。

「所谓的便捷,所谓的极简,并不是说偷工减料。不得不说的是,Go语言做到了权衡各方位的利弊,可以看出来,整个开发团队做了大量工作,使得开发人员能够用低到以前无法想象的开发成本写出极高运行性能的Go语言并发程序。」张先生是一名Java工程师,在2011年接触了Go语言,他在接受采访时表示,「Go语言有个亮点,它把“激活”所需要并发执行的代码块的操作给内置了。我只要一个“Go”,就可以轻易地完成这项操作。」

一个「Go」,就能轻松完成一项操作。听起来像是将军指挥千军万马时,大喊一声「Go」,便攻陷城池。所以,从Go语言的发展现状来看,未来在中国招聘上会有很高的需求量,那么,从目前来看呢?Go语言又为何在中国很火呢?

2014年4月,美国有名作者做了一项调查,写下一篇名为《Why is Golang popular in China?(为什么Go语言在中国受欢迎?)》的文章,文章里给出一项数据,表明Go语言在中国的受欢迎程度——

图片来源:Why is Golang popular in China

我们可以看到,golang.org的18.9%的游客来自美国,12.1%来自中国,受欢迎程度显而易见。对于Go语言在中国为何取得如此高热度,作者做了一些数据调查,这是用「谷歌数据」统计的Google App Engine在世界各地受欢迎程度——

图片来源:Why is Golang popular in China

接着,他们又用Node.js做出比较——

图片来源:Why is Golang popular in China

作者给出这样的解释:在中国,谷歌受到很高的崇敬,所以带动golang.org的流量的缘由或许不是Go语言本身,而是源于谷歌。

从目前来看,Go语言的热度仅限于互联网的讨论,在实际市场需求上虽处于不断提升的阶段,但并不是高需求岗位,Java等编程语言依旧是热招岗位。接下来,100offer从市场需求来分析Go语言为什么还不是现在的市场需求新霸主。

Go语言为什么还不是如今的霸主?

随着时代发展,新兴编程语言如雨后新笋般层出不穷,很多新语言的爆发让曾经的「帝国」渐渐衰退。

只是,无论哪一种编程语言,兴衰都是有规律可循的。如Objective-C,它因iPhone和iPad的诞生,而借此变得无比火热,Java也由于Google公司的「横门一脚」占据了移动程序开发领域的制高点。有时候,是「时势造英雄」,「帝国」的兴盛衰退都是随时代而发生的必然现象,一门编程语言是否成为「霸主」,有时候在于它是否能把握住时代标签,一旦走在风口上,便会飞速发展。

不过,一门语言的兴衰,它们自身的原因,并不是最主要的。

对语言的兴衰而言,最主要的仍是市场需求。如果一门语言需求强烈,那么,它势必带来高薪岗位,也势必有无数人选择这门语言。100offer此次根据市场需求来分析Go语言为何还未成为新帝国。

我们来对比一下IEEE Spectrum编程语言榜去年和今年的前十榜单(左边2016年,右边2015年),看看这一年的趋势。

2015、2016 IEEE Spectrum编程语言榜,图片来源:IEEE Spectrum官网

Go语言今年首度进入前十,是新兴语言中最耀眼的存在,但从总体评分来看,Java、C、C++、Python依旧排在前列,无论是受众广度还是招聘需求上。

Go语言在中国的热度其实仅限于小圈子内,国内开设Go语言课程的高等院校少之又少,就连Python课程的都不多,绝大多数院校都是以C、C++、Java为主开设课程。

100offer认为,「更迭」这个词,有时候被误读了。所谓的「更迭」,不一定是旧的编程语言被彻底颠覆,然后看新编程语言建立新体系,而是旧编程语言在「更迭」中形成了自己的新体系。

并且,「更迭」的最主要因素依然是:市场需求。

就拿java来说,它已是成熟的「帝国」,它在云计算、大数据还有企业应用有了惊人数量的APP、Framework、Library,更何况,它被无数程序员所使用所热爱。

我们在2016年7月6日发布的《为何优秀的Java程序员如此难招?》中说——

在今年4月-6月的招聘高峰期,在前端、移动端、PHP等多类程序员全面紧缺的情况下,Java程序员依旧以面邀总数3005封的成绩排在了紧缺职位NO.1,甩出排名第二的前端工程师近500封面邀。

无论Go语言等新兴编程语言「攻城掠地」的「战绩」有多耀眼,其实从市场需求上来看,它依旧不是如今的霸主。虽然Java也曾经历过「衰退」,但最终做到了「浴火重生」,即便无数人都在预言C++会跌下神坛,C++的市场需求量的确也在减少,但从如今的状况来看,很多重要项目中我们都能看见Java和C++的身影。

图片来源:TIOBE官网

从TIOBE的近15年走势图我们能够看出,即便Java、C、C++在2004年至2014年间处于下跌状态,但Java在绝大数年份里,都排在第一,并且,在2014年后,不断上升,在2016年又一次迎来高峰,而Java、C、C++也一直稳居第三,直到近年,C++的霸主地位才不断受到威胁。

图片来源:TIOBE官网

从长期趋势来看,C、Java、C++始终多年来盘踞着前三的宝座。

Redmonk 发布的2016Q3编程语言排行榜

这是Redmonk说发布的2016第三季度编程语言排行榜。榜单图较为复杂,分析的结果是:JavaScript蝉联了榜首之位,Java排在第二,PHP排在第三,和TIOBBE的走势相似,排在前面的编程语言多年来的位置都没有什么太多变动。值得一提的是,JavaScript只比第二名Java领先了一点点,其中的数值差距非常微小。

无论是TIOBE还是Redmonk,这些榜单能体现编程语言的持久热度,也在一定程度上体现了编程语言在企业或初创企业中的受重视程度。

让我们回归招聘市场再来看看,《为何优秀的Java程序员如此难招?》里给出过Java程序员供需变化的数据——

2015-2016 Java程序员供需变化,数据来源:100offer数据库

我们再看看Go工程师供需变化的数据——

2015-2016 Go工程师供需变化,数据来源:100offer数据库

不够直观?看一看结合对比。

2015-2016 Go与Java供需变化对比,数据来源:100offer数据库

从市场需求来看,对比是惊人的。

一个帝国之所以被称之为帝国,仅有耀眼的开端还是不够的,它需要健全成熟的「体制」。Go语言还不成熟,它的各种语言特征和规格还在变化。Go语言在适用领域的优势更强,而在不适用领域的劣势也更加明显。

「比如,用Java编写桌面程序起码还有Swing和JavaFX可选,但是Go语言官方至今还没有一个成熟的解决方案。当然,这仍旧与诞生时间有关。另外,我们还可以用Java语言编写Android应用程序。Go语言目前虽然已经涉足,但还不完美。」张先生说,「总之,两种语言在适用领域方面有所重叠但又有些不同。在很多情况下,我们可以混用这两种语言。」

事实上,Go语言在接口、Groutine、defer、库代码、HTML template 库等方面,与Java相比,也有着明显缺陷,在此不一一列举。

我们在2016年8月10日发布的《C++和C++程序员快要被市场淘汰了?》里提到——

从应用领域来说,C++适用于高性能计算、嵌入式系统、开发服务器软件、游戏、实时系统等,短期内能彻底取代C++语言并不存在。C++在系统、图形、网络等很多领域都是不可替代的,它的光辉岁月让它的死亡速度得以削减。

相似案例还有像COBOL 语言在金融领域的「霸主」地位,对于Java、C、C++等编程语言来说也是如此,她们建立了如同「帝国」的体系,撼动如此庞大的体系无异于推翻这个帝国。

Go语言即便在未来成长为「帝国」,也无法撼动Java、C、C++的地位,更不可能取代它们。

100offer说

结论已经给出:Go语言还不是如今市场需求上的新霸主。

100offer始终认为:编程语言不应该被拿来作为对比。

并且,一门语言、一个岗位的兴衰,也是源于市场需求,需要它的企业多,自然会使它成为热门,甚至供不应求。

事实上,编程语言之间的比较并没有太多意义,能够解决实际问题的编程语言就是好的编程语言。对于开发团队来说,哪种编程语言能低开发成本且高速高质解决问题,哪种编程语言便更容易被接纳使用。每门编程语言的诞生,都有它自身的意义,都是为了解决某项具体问题而被创造,而解决能力是发展趋势的最重要评判标准。

说到底,评断一名程序员的价值所在,和他会什么语言、用什么语言的直接关联并不是很大,而是他用这门语言解决了多少实际问题,创造了多大利润,提高了多少效率。与其比较语言直接的优劣,倒不如想清楚解决什么领域的问题。

 

作者:简浅
链接:https://zhuanlan.zhihu.com/p/22265969
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载请注明:Coding » 帝国的更迭 :Go语言能否成为新的霸主?

喜欢 (0)

您必须 登录 才能发表评论!