Fuck me on GayHub

A little experience about Golang

这里我就是想阐述一下自己使用Golang做开发的经验以及自己的看法。编程语言太多,非常有名气的也有好多,例如Java,C,C++,Python, Ruby, NodeJs,Perl,Lua,PHP以及这里要阐述的Golang. 前面罗列出的语言,我都或多或少的做过相关的开发,其中以Python,NodeJs,和C为最甚。

自己接触Golang还是因为黄老师的指点原因,当时他作为公司的技术总监,选取了异步的NodeJs作为系统的开发语言,那时候Golang还不怎么出名,但是他特别看好Golang,因为我们也使用了C开发了系统中的一部分代码,而那时候C开发出的模块虽然可以工作,但是因为指针,队列,多线程同步等问题,我们对自己书写的代码逻辑也是不敢百分之百的自信。而Golang当时的应用背景也是和我们的情况类似,是因为Google公司大量使用Java,Python,C++开发其系统,众所周知,虽然Java,C++的OOP很是牛逼,但是其语言本身复杂,Java就是一个概念的海洋,C++的一堆STL库也是乱七八糟,这样对后期系统的维护开发是十分不利的,所以呢,Google内部的几个德高望重的人物如Rob Pike,就开发了更加简化的,性能相当不错的Golang语言,以此来作为内部系统复杂性的一个解决方案。

那个时候我只是刚刚接触了Golang,写过一些书本上的demo而已,并没有怎么应用起来,座椅只能算作是了解吧。但是对于这些语言,我一直是怀有开放的心态对待的,例如新出的支持Funcational Programming的Scala,Groovy,Closure等语言,我还是非常想尝试应用一下的。所以到了广州美读公司,开始进去是作为后台系统的开发人员的,因为技术总监也是喜欢尝试新的东西,所以建议我将其中的一个系统使用Golang开发出来。我的Golang之旅就这样真正的开始了。

刚开始真正使用Golang做开发的时候还是较痛苦的,因为看书归看书,做事情归做事情,两者之间是有个巨大的代沟的。书本在我开始开发系统之前,已经阅读了两本,可是一到真正的开发,还是遇到了各种各样的细节性的问题。所以就必须阅读文档,谷歌搜索,反过去阅读咀嚼书籍,就这样一点一点的积累,到现在反而喜欢上了这个语言。

总体对Golang的感觉是,它好像是Python,C,Perl等一些语言杂交出来的水稻,就像晚清政局中的袁世凯,是中间的角色,具有众家所长,所以才能兴盛起来。使用Golang开发,明显的感觉是其比C,Java简洁了许多,而且性能上是比Java快好多,和C差不了多少,因为执行的时候它也是二进制的机器码,而不像Java的byte code。另一方面,Golang的第三方库做的很好,它有自己的包管理机制,就像Python,Ruby一样。框架方面也有许多,例如国人开发的beego的MVC框架,外人开发的Martini等REST框架。总体来说,现在使用Golang开发我们的系统,是没有任何问题的。

前面说了Golang的优点,那么使用过程中的一些缺点也是比较明显的,例如开发速度上没有Python等语言快速。在解析Json数据等一些结构化的数据时,没有像NodeJs那样所见即所得。

开始刚出来的时候,Golang在编程语言排行榜上是直线上升的,但是现在反而冷却了下来,没有像NodeJs那样一路高歌猛进。不过像一些大公司都在尝试像Golang转型,如Uber要从NodeJs转向Golang,而国内的七牛等公司也是直接使用Golang作为其主流开发语言。也许在如今中国这样的国家,简单粗暴的可以流行起来,而像Golang这样的稍微复杂点儿的,就不会那么流行了。但是不流行不是代表死亡,老牌的强硬的东西仍然是有它广阔的市场的。

对于Golang,我还远不算一个高手。现在只能是说你要做什么,我就可以做什么。在开发的过程中,发现扎实的工程能力还是欠佳。还需要不停的在这一方面积累,不停的看相关书籍。就像NodeJs,Python一样,我是基本看了所有相关的书籍。