文章目录
常见的一些语言
1.C/C++
2.Java
3.JavaScript
再谈Go
1.自带运行环境Runtime,且无需处理GC问题
2.快速编译,且跨平台
3. 天然支持高性能高并发,且语法简单,学习曲线平缓
4.丰富的标准库,完善的工具链
前言
越来越多的互联网大厂开始使用Go语言了,例如腾讯、美团、滴滴、百度、Google......
这么多国内首屈一指的大公司,都在开始使用它,那么它到底有哪些优势呢?我们今天来探讨一下Go语言究竟有哪些优势?
常见的一些语言
1.C/C++
C语言
是在1971年的时候,被大神Ken Thompson和Dennis Ritchie发明的,而Go语言
的主导开发者之一就是Ken Thompson,所以在很多地方和C语言类似,(比如struct、Printf、&取值符)
C/C++
也作为很多初学初学的语言,它们都是直接编译为机器码,所以执行效率会更高,并且都不需要执行环境,用户的使用成本会更低,不像很多语言还需要安装所需的环境。也因为这些原因,它们的一次编码或编译只适用于一种平台,对于不同操作系统而言,有时需要修改编码再编译,有时直接重新编译即可。
而且对于开发者也"很不友好"😒,需要自己处理垃圾回收
(GC)
的问题。编码时,还需要考虑,堆上的内存什么时候free、delete
?代码会不会造成内存泄露、不安全?
2.Java
Java
是直接编译成字节码(.class)
,这种编译产物是介于原始编码和机器码的一种中间码。这样的话,Java
程序就需要特定的执行环境(JVM)
了,执行效率相比会低一些,还可能有虚拟化损失。但是这样也有一个好处就是可以编译一次,多处执行(跨平台)
。而且它也是自带GC
的。
3.JavaScript
和
Python
一样,JS
是一种解释型语言,它们不需要编译,解释后即可运行。所以Js
也是需要特定的执行环境(浏览器引擎)
将其代码放入浏览器后,浏览器需要解析代码,所以也会有虚拟化损失。
Js
只需要浏览器即可运行,所以它也是跨平台的。
再谈Go
看完了前面几种常见语言的简单介绍。
C/C++
性能很高,因为它直接编译为二进制,且没有虚拟化损失,Go
觉得还不错;Java
的自动垃圾回收机制很好,Go
觉得也不错;Js
的一次编码可以适用可以适用多种平台,Go
觉得好极了;而且Go
天然具备高并发的能力,是所有语言无可比及的。那我们来简单总结一下吧!
1.自带运行环境Runtime,且无需处理GC问题
Go
程序的运行环境可厉害了,其实大部分语言都有Runtime
的概念,比如Java
,它程序的运行环境是JVM
,需要单独安装。对于Java
程序,如果不经过特殊处理,只能运行在有JMV
环境的机器上。而
Go
程序是自带运行环境的,Go
程序的Runtime
会作为程序的一部分打包进二进制产物,和用户程序一起运行,也就是说Runtime
也是一系列.go代码和汇编代码等
,用户可以“直接”调用Runtime
的函数(比如make([]int, 2, 6),这样的语法,其实就是去调用Runtime中的makeslice函数)
。对于Go
程序,简单来说就是不需要安装额外的运行环境,即可运行。除非你需要开发Go
的程序。正因为这样,
Go
程序也无须处理GC
的问题,全权交由Runtime
处理(反正要打包到一起)
。
2.快速编译,且跨平台
不同于
C/C++
,对于多个平台,可能需要修改代码后再编译。也不同于Java
的一次编码,编译成中间码运行在多个平台的虚拟机上。Go
只需要一次编码,就能轻松在多个平台编译成机器码运行。值得一提的就是它这跨平台的能力也是
Runtime
赋予的,因为Runtime
有一定屏蔽系统调用的能力。
3. 天然支持高性能高并发,且语法简单,学习曲线平缓
C++
处理并发的能力也不弱,但由于C++
的编码要求很高,如果不是很老练、专业的C++程序员
,可能会出很多故障。而Go
可能经验不是那么丰厚,也能写出性能很好的高并发程序。值得一提的就是它这超强的高并发,也是
Runtime
赋予的去处理协程调度能力。
4.丰富的标准库,完善的工具链
对于开发者而言,安装好
Golang
的环境后,就能用官方的标准库开发很多功能了。比如下图所示的很多常用包:
而且
Go
自身就具有丰富的工具链,(比如:代码格式化、单元测试、基准测试、包管理...)
参考文章
为什么很多公司都开始使用Go语言了?