1. 从python开发角度看go语言
(1)部署简单:Go 编译生成的是一个静态可执行文件,除了 glibc 外没有其他外部依赖。完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。
(2)并发性好。Goroutine 和 channel 使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。
(3)良好的语言设计。Go 的设计是非常优秀的:规范足够简单灵活。
(4)执行效率高。虽然不如 C 但是已经超过C++和java,和解释型语言相比,更是相差一个数量级,比如python,ruby。
备注:
编译型语言:在程序执行之前,有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。
解释型语言:是在运行的时候将程序翻译成机器语言,相当于一遍翻译,一遍运行,所以运行速度相对于编译型语言要慢。
2.从C/C++角度看Go语言
(1)GO语言优势:使用C/C++开发的最大问题在于开发效率低。Go语言开发效率高。简单来讲,使用Go语言写一个chan类型,使用C/C++完成需要很多工作量,使用C++会稍微方便一点,但是也是相当痛苦一件事。
(2)GO语言优势:libc只向后兼容,运维难度偏大。
(3)GO语言劣势:GO语言运行速度并没有C语言运行速度快。这也是需要提高地方。但是明显高于C++,在一般企业来看,这点运行效率和开发速度比起来,不足以考虑。
3.从GO语言自身看
(1)可直接编译成机器码,不依赖其他库,glibc的版本有一定要求,部署就是扔一个文件上去就完成了。
(2)静态类型语言。运行效率高。
(3)语言层面支持并发,这个就是Go最大的特色,天生的支持并发。
(4)内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,因此开发效率高,但是没有丢失运行效率,这是很可贵的地方。
(5)简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
(6)丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。
(7)内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
(8)跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用。
(9)内嵌C支持,前面说了作者是C的作者,所以Go里面也可以直接包含c代码,利用现有的丰富的C库。
(10)有望成为Google下一代的统一开发平台,彻底摆脱Java的阴影。
3.Go适合用来做什么
(1)服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如处理日志、数据打包、虚拟机处理、文件系统等。
(2)分布式系统,数据库代理器等
(3)网络编程,这一块目前应用最广
(4)云平台,目前国外很多云平台在采用Go开发