使用golang已经一年半了,我之前是在华为做C++的,后来离职的时候因为C++水平很菜,找的工作都不满意,而且我也对C++很不满意,所以被golang的宣传的种种特性吸引到了,就找了一份golang的工作,到目前为止薪资很满意,工作很开心,对未来也有所期待,不在害怕失业,遇上傻逼也有了说不得能力。
聊聊我对golang的看法
说实话我对网上那些 所谓的“21世纪的C语言”,“大道至简” 这种说法很反感,不过话说回来让我用最精炼的词语总结,我的答案 是 简单,其实根上面两个词语表达的是同一个意思。
优点1:开发效率高,在能满足需求性能需求的情况下,开发效率的追求其实是第一位的,毕竟公司归根节点还是为了赚钱,况且现在国内IT业的人力成本也有点高的吓人,与C++比就不谈了完胜,与java相比,如果大家都有第三方库可用的情况下golang开发效率要高于java,况且现在一般的app开发,golang库也是很齐全的,与python比开发效率我觉得差距不大,python需要更少的代码行数,但是有过开发经验的人都知道,开发过程中经常需要读别人代码的,而且时间长了自己的代码也要读,而且像我这种还很喜欢修改之前的代码,所以算上这部分其实python作为动态语言开发效率上就没有优势了。
优点2:运行效率高, 其实运行效率高是个相对的事情,为什么我说这个是golang的优点呢,因为一直以来一门语言将开发效率作为标签的时候,通常意味着运行效率低,不过golang打破了这个传统,可以跟python,php等脚本语言比开发效率,跟 java 比运行效率,当然了跟C++是肯定没办法比的。实例:滴滴账号系统用PHP写用了45台实例,golang重写6台机器就够了,想想这是多么大的成本差距啊,这可不是简简单单 45-6 的差距,运维45台机器 和 6台机器的成本可是不一样的,如果是 450 和 60 就更大了。
优点3:简单,学习简单,用起来也简单,c++,java的那一套面向对象被抛弃了,就是简单的组合,简单接口编程,当然他是多范式编程。这个其实极大的降低了开发者的心智负担,写C++的人心里总觉得写得不够有效率,写java的人总觉得不够面向对象,不用上设计模式不够高大上。简单体现在方方面面,比如代码都是自动排版,大家都统一格式,我在华为的时候如何学习排版格式的规范还学习了很久,而且就算有规范,总有人不按照规范做,这种隐形成本很大的。
golang缺点
语法层面我认为主要有两个比较大的缺点
1.不支持泛型,这个问题在开发者中间其实也闹听很久了,golang官方现在给我的感觉就是想支持泛型,不过鉴于golang的历史架构等问题,还不太好改,也不知道以后会不会支持,以什么样的方式支持
2.变量定义的时候不需要声明类型,虽然可以声明类型,但是大多数人都不声明,我也不声明,但是我还是觉得强制必须声明比较好,因为比较好读代码,不然总是要跳进去函数看一下
3.变量在前,类型在后,这个真的恶心,不知道为为啥在这个问题上跟所有人唱反调,很困扰我
库的缺乏
golang做web开发的高质量库数量足够,但是很多别的库还是跟java没是没法比的,比如我现在正在做区块链的网络层,需要用到gossip协议,就没找到高质量的库,以后从业者多了这个肯定能改善
人的稀缺
如果组建一个大点的golang团队,想找到都是有golang经验的人还是比较难的,不过如果有意愿学习其实还是很简单的。
以上就是我的浅薄理解,欢迎探讨