▼ 本文主要分析C、C++98、C++11、Java与Go,主要论述语言的关键能力。在论述的过程中会结合华为各语言编程专家和华为电信软件内部的骨干开发人员的交流,摒弃语言偏好或者语言教派之争,尽量以客观公正的角度来论述下各个语言的特点和不足,对语言选型作为一个客观的参考。 把这些写出来,期望得到大家的指正与反馈,让整个分析更客观,性能方面,着重对Go做深入剖析参考。内容很多,期望不会让你望而却步。 语言整体概要 1、Go 在并发方面,goroutine和channel机制提供了语言层面的轻量级和毫无拖泥带水的并发机制;在性能方面,提供了不弱于Java的性能(性能是个伪命题),而内存资源消耗方面,相对Java和其它动态语言,具备明显的优势;在语法方面,具备了部分Python的动态语言特性,在对象初始化、构造和序列化等方面提供了无比简洁的表述方式,而这些处理代码可能占据10%~50%的代码分量,尤其对于处理数据、配置和协议映射场景,相比C、C++、Java在此方面拙笨,这就是动态语言为何让人着迷的关键所在。 这也是为啥Go语言第一个版本发布时就如此受人瞩目的关键所在,尤其是对于动态语言来说,它提供了动态语言所不具有的并发与性能优势,Pike设计Go语言目的是想作为C/C++的另外一个可选的角色(注意不是替换,其设计目标不是替换),Go语言之父Google首席软件工程师Pike年“大道至简”演讲稿中对于此目标充满沮丧,引用其中一句话:“AlthoughweexpectedC++programmerstoseeGoasanalternative,insteadmostGoprogrammers什么药可以治白癜风白驳风
|