Golang和C++简单对⽐
⽂章⽬录
编译
都可以静态编译,直接编译成⼆进制⽂件。⽬前,许多语⾔(⽐如Java,C#)都是基于运⾏时,能静态编译语⾔的不多,Go算⼀个。同时,都可以跨平台。
内存管理
在C++中,需要⾃⼰使⽤new和delete管理内存,尽管C++已经有了智能指针,但是有⼀些坑,不是那么好⽤。
Go虽是静态语⾔,但是⾃⼰管理内存,减轻了程序员的⼼智负担。这⼀点,⾮常重要。因为C++程序的崩溃,⼤多数时候都是内存问题,⽐如内存泄漏,⾮常难以解决。
标准库
⼀门语⾔开发效率⾼不⾼,它的标准库起着关键的作⽤。Go的标准库⼗分强⼤,常⽤的库⼏乎都有,开
箱即⽤,⼗分顺⼿。C++的标准库⾥⾯的⼯具并不多,很多时候只能下载第三⽅库使⽤。不过,boost是⼀个著名的C++库,包含了⼤量的常⽤库。
性能
关于性能,看过⼏家测试的⽂章,得出结论的是Go性能⾮常强。绝⼤部分场景,可能不需要拼语⾔本⾝的性能,代码如何写才是关键。这个问题,我不太感兴趣。
并发编程
并发编程是Go语⾔的⼀⼤特⾊,可以轻松实现⾼并发,在语⾔层⾯就⽀持。C++只能调动系统API开启线程实现并发,语⾔层⾯并不⽀持。
语法复杂度
Go语⾔的语法简单,本⾝的语⾔特性不多,只有很少的关键字。对⽐C++,其语法越来越复杂,C++创始⼈都不敢说⾃⼰掌握C++。
开发和调试难度
go和java后端开发劣势
C++的内存问题,很难排查和调试,⽐如内存越界,从程序崩溃的栈信息上可能就看不出来是什么问题,定位问题很难。Go进程中会启动Go⾃⼰的运⾏时,抛出的异常会指明错误信息,很容易能排查出问题。
总结
Go和C++都是偏后台的语⾔,都可以⽤来开发⾼性能的后台服务,但是由于C++历史辉煌,C++还可以做前端开发,⽐如QT开发,还可以嵌⼊式硬件级别的开发,C++应⽤范围更⼴。
对于后台服务器、中间件,Go⾮常适合,因为语⾔本⾝的特性,使得:
开发的效率提⾼ 缩短开发周期,包括编码时间、调试时间
程序的稳定性、健壮性提⾼ 减少崩溃的机会、容错性增加,有问题也可以快速定位解决
我本⼈有5年的C++开发经验和2年Go开发经验,最⼤感触就是Go节省了C++程序员的时间。开发同样的业务,使⽤Go语⾔最起码节省40%的时间。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论