现在go语言已经有很多公司在用了,希望大家知道这个事实,如果不了解,说明你没有足够的关注技术的前沿,对于未来go语言会怎么样,看不看好,今天来聊聊。
这篇文章主要就是来讲讲我对于go语言的一些想法。
大家都知道,今年实习的时候,我选择了去腾讯实习,在腾讯的时候,也是做得后端开发的事情,然后,语言就不是我想要的了,因为,在腾讯的这段时间,用的语言都是go语言,机缘巧合之下,我就跟go语言结缘了。
但是,接触了go语言才知道,原来,他已经很火爆了,可能因为go语言的爸爸是google吧,另外,确实go语言有他的独特之处,这个后面再聊,所以,现在很多的大厂都开始用go语言进行开发,特别是云方向的,这也是因为docker和k8s等巨头的火爆引起的。
在这段时间使用go语言的感受在这里聊聊。
第一,发现这门语言真的是比Java要简单,用起来也更加的方便,另外,很多的特性比Java简洁,同时go语言的原生库的支持比其他语言真的多;
第二,对于并发的支持是go语言的特点之一,这真的是简单到不能再简单了,对于用过Java的知道并发的使用,你再用用go,才知道原来可以这样搞;
第三,上手问题,这个对于学过几年编程的从业者来说,其实不是什么困难的,再加上go语言的特性,对于我来说,基本上只用了几天的时间就开始进行功能需求的开发了,没有什么障碍的,借用知乎的一句话:我学习go语言用了3天,学习python用了一个星期,学习Java用了一个月,学习C用了一年,学习C++用了11年;
第四,go的社区技术体系,对于这点,其实也是不用担心的,go语言从2009年开始,已经有了10年的发展历史了,另外,越来越多的公司和企业采用go语言进行开发,比如七牛云云平台整体采用Go语言进行开发,今日头条采用Go语言构建微服务消息系统;除此之外,很多开源的软件和应用采用go语言进行开发,比如当前大火的容器化软件Docker,和服务管理K8S,都是采用go语言进行开发;
第五,现在越来越多的大公司都在用,当然也有很多中型企业也开始疯狂用go了,比如我知道的七牛云,斗鱼,b站等,都是用go语言进行相关的开发了,既然有越来越多的公司在用,那么就会有需求,有需求,就不用担心找不到工作了。
其实,你会发现,go语言还是非常有潜力的。
另外,我们也可以从发展历史,在用公司,热门项目等几个角度谈谈go语言的发展。
go语言从2009年开始,已经迭代了很多版本了,这能说明,google对于go语言的支持还是非常的活跃的,如下。
2007年,谷歌工程师Rob Pike, Ken Thompson和Robert Griesemer开始设计一门全新的语言,这是Go语言的最初原型。[1]
2009年11月10日,Go语言以开放源代码的方式向全球发布。[1]
2011年3月16日,Go语言的第一个稳定(stable)版本r56发布。[2]
2012年3月28日,Go语言的第一个正式版本Go1发布。[2]
2013年4月04日,Go语言的第一个Go 1.1beta1测试版发布。[3]
2013年4月08日,Go语言的第二个Go 1.1beta2测试版发布。[3]
2013年5月02日,Go语言Go 1.1RC1版发布。[4]
2013年5月07日,Go语言Go 1.1RC2版发布。[5]
2013年5月09日,Go语言Go 1.1RC3版发布。 [6]
2013年5月13日,Go语言Go 1.1正式版发布。
2013年9月20日,Go语言Go 1.2RC1版发布。[7]
2013年12月1日,Go语言Go 1.2正式版发布。[8]
2014年6月18日,Go语言Go 1.3版发布。[9]
2014年12月10日,Go语言Go 1.4版发布。[10]
2015年8月19日,Go语言Go 1.5版发布。[11]
2016年2月17日,Go语言Go 1.6版发布。[12]
2016年8月15日,Go语言Go 1.7版发布。[13]
2017年2月17日,Go语言Go 1.8版发布。[14]
2017年8月24日,Go语言Go 1.9版发布。[15]
2018年2月16日,Go语言Go 1.10版发布。[16]
热门的项目其实我们知道的也有一些,比如docker,k8s,另外,还有以下这些。
nsq:bitly开源的消息队列系统,性能非常高,目前他们每天处理数十亿条的消息
docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建。
packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
skynet:分布式调度框架
Doozer:分布式同步工具,类似ZooKeeper
Heka:mazila开源的日志处理系统
cbfs:couchbase开源的分布式文件系统
tsuru:开源的PAAS平台,和SAE实现的功能一模一样
groupcache:memcahe作者写的用于Google下载系统的缓存系统
god:类似redis的缓存系统,但是支持分布式和扩展性
gor:网络流量抓包和重放工具
当然,远远不止这些开源项目,我github上面就看到过一张go语言的学习路线图,都是已经成熟的项目了,贴到这里给大家看看。
同时,据我了解,下面这些公司有在大量的使用go,特别是腾讯,很多新业务都是在往go方向转。
还有下面这些公司也都在使用,这里都说说,同时也介绍一下一些开源项目。
google作为go语言的开发公司,当仁不让,Google基于Go有很多优秀的项目,比如:https://github.com/kubernetes/kubernetes 。
Facebook还专门在Github上建立了一个开源组织facebookgo,大家可以通过 https://github.com/facebookgo 访问查看facebook开源的项目,比如著名的是平滑升级的grace。
- 腾讯
- 百度
- 京东
京东云消息推送系统、云存储,以及京东商城等都有使用Go做开发。
- 小米
- 360
360对Golang的使用也不少,一个是开源的日志搜索系统Poseidon,托管在Github上,https://github.com/Qihoo360/poseidon.
当然也有很多其他的国外的公司。
- Apcera.com
- Stathat.com
- Juju at Canonical/Ubuntu, presentation
- Beachfront.iO at Beachfront Media
- CloudFlare
- Soundcloud
- Mozilla
- Disqus
- Bit.ly
- Heroku
- youtube
说了,这么多,其实,这都能表明一个问题,那就是至少现在看来go的社区还是非常的活跃的,对于未来,go一定是非常的有潜力的。
最后,对于我个人而言,也在做一个选择,毕竟自己做了4-5年的Java开发了,现在就在选择是否要调到go,前面也讲了这么多,go的前景我觉得是不用太担心的,现在不管从go的背景(google)、社区活跃度、开源项目、使用的公司,这几个方面来看,go的未来都会是光明的,虽然说,现在的go语言还是有一些缺陷的,比如,缺乏泛型,不支持继承,Go的import包不支持版本等,但是这些通过后期的版本迭代,应该都会成为历史。所以,我还是建议大家学习go语言的,我个人也很有可能后面从事go语言的开发工作。