原文地址 git
与其余的现代高级语言相比,如 Java 或 Python,使用 C、C++ 的最大优点,就在于性能,由于 C/C++ 均为编译型语言,而非解释型语言。(扩展:如何理解编译型语言、解释型语言?)github
对于处理器来讲,能够直接识别运行的是二进制文件。对于咱们熟知的现代高级语言,当你编译一个用 Java 或者其余基于 JVM 的语言构建的应用程序时,它不会直接生成二进制文件,而是将人类可读的代码编译为字节代码,这些字节代码能够被 JVM 或者在底层操做系统之上运行的其余虚拟机所理解。当须要真正执行的时候,由虚拟机解释这些字节码,再将他们转化为处理器能理解的二进制文件。golang
对于 C/C++ 这类编译型语言来讲,在执行周期中省略了编译为字节代码这一步来提升性能,不依赖 VM(虚拟机) 执行,而是直接将人类可读的代码编译为二进制文件。算法
虽然 C/C++ 这类语言的性能优点明显,可是,在这些语言中释放和分配变量是一件极其痛苦的事情。而大部分现代高级编程语言在这方面又是具备优点的,它们会使用垃圾回收器或者引用计数的算法来处理对象的分配和移除。编程
那么有没有一种语言,可以取两家之长呢?服务器
Go 偏偏作到了一箭双鵰,Go 像一些底层语言(如:C/C++ )同样,是一门编译型语言,这意味着它的性能几乎接近于底层语言,它实现了垃圾回收来分配和删除对象。所以,再也不须要使用 malloc() 和 free() 声明了!这太酷了!架构
我要告诉你一件事情,Go 没有像其余语言同样复杂的编程语法,Go 的编程语法简洁明了。并发
Google 的 Go 语言的设计者,在建立这门语言的时候就考虑到了这一点。因为 Google 拥有庞大的代码库,成千上万的开发人员都工做在同一个代码库上,因此对于项目外的其余开发人员而言,代码应该易于理解,而且代码间的耦合也应该尽可能小。只有这样,才能使代码易于维护和修改。编程语言
Go 有意摒弃了一些现代面向对象编程语言的功能特性。post
上述改变使得 Go 与其余语言大相径庭,而且使 Go 的编程体验也与其余语言不一样。你可能不喜欢这些改变,可是仔细想一想,离开了这些繁杂的编程语法,就没有办法编写应用程序了么? 你可能要作的,就只是再多写2–3行来适应而已。但从积极的方面来讲,这些改变将使你的代码更加的整洁、准确、易读。
从上图能够看出,Go 几乎与 C/C++ 同样高效,同时,代码语法也可以像 Ruby、Python 同样简单。因此对于开发者和处理器性能来讲,这是共赢的!
与 Swift 等其余新语言不一样 ,Go 的语法体系很是稳定。自2012年首次公开发布1.0版以来,它一直保持不变。这使得 Go 能够向后兼容。