C++,Python和 Go
在项目开发中主要使用的语言是C++和Python开发,但是C++的开发成本比较高,写Makefile和Cmake写到头大,而Python虽然简单,但是性能是硬伤,所以一般对性能没有要求的服务都是用Python开
发。 最近受公司大佬的推荐了解到golang, 语法简单编译速度快而且高性能,可以作为C++的替代品。
下面主要从包管理,语法,和性能方面对这三种语言做一个简单的比较。
包管理
C++这种与平台和编译器相关,很难有语言级别的包管理器, 一般是各个开发环境 持有各自的复用管理,比如 linux 的 apt-get, deb, yum,各种lib header dev包可以通过其安装的。一般都需要CMake或者Makefile进行工程管理,所以有相应的学习成本。
Python有丰富的包管理器,比如,distutils,setuptools, 还有较为流行的pip, pip 可以利用 requirments.txt 来安装依赖的库文件。
GO早期的包管理也是为人诟病,不过1.11 版本推出 modules 机制,让go语言包管理变得更方便简单,还支持GoProxy,replace,SubCommand等高级特性。
语法
在语法方面,C++和GO语言的语法较为相似,但是GO语言语法简洁,不需要程序员管理内存,有丰富的API可调用,也提供了切片,map等灵活的数据类型,Python作为解释型语言在语法方面以优雅著称,更为简单。Python 社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖 科学计算、人工智能、机器学习、Web 开发、数据库接口多个领域。
性能
在性能方面,Python作为解释型语言,不需要编译,在性能方面与C++和GO语言有很大差距,并行编程这一块因为GIL的存在,Python很难充分利用多核CPU的优势。GO的运行效率几乎可以媲美C/C++,而且天然支持并发编程,可以通过go关键字创建N个goroutine(一种用户态线程)来实现并发,同时提供多个goroutine的同步机制。
小结
综上所诉,C++在性能方面很高,但是开发成本也比较高。Python开发简单,但是性能较低,使用与一些对性能没要求的服务和工具开发。相对来说,GO语言的语法简单,开发成本低,而且效率也远高于解释型语言,适合大部分的服务开发。