赞
踩
都可以静态编译,直接编译成二进制文件。目前,许多语言(比如Java,C#)都是基于运行时,能静态编译语言的不多,Go算一个。同时,都可以跨平台。
在C++中,需要自己使用new和delete管理内存,尽管C++已经有了智能指针,但是有一些坑,不是那么好用。
Go虽是静态语言,但是自己管理内存,减轻了程序员的心智负担。这一点,非常重要。因为C++程序的崩溃,大多数时候都是内存问题,比如内存泄漏,非常难以解决。
一门语言开发效率高不高,它的标准库起着关键的作用。Go的标准库十分强大,常用的库几乎都有,开箱即用,十分顺手。C++的标准库里面的工具并不多,很多时候只能下载第三方库使用。不过,boost是一个著名的C++库,包含了大量的常用库。
关于性能,看过几家测试的文章,得出结论的是Go性能非常强。绝大部分场景,可能不需要拼语言本身的性能,代码如何写才是关键。这个问题,我不太感兴趣。
并发编程是Go语言的一大特色,可以轻松实现高并发,在语言层面就支持。C++只能调动系统API开启线程实现并发,语言层面并不支持。
Go语言的语法简单,本身的语言特性不多,只有很少的关键字。对比C++,其语法越来越复杂,C++创始人都不敢说自己掌握C++。
C++的内存问题,很难排查和调试,比如内存越界,从程序崩溃的栈信息上可能就看不出来是什么问题,定位问题很难。Go进程中会启动Go自己的运行时,抛出的异常会指明错误信息,很容易能排查出问题。
Go和C++都是偏后台的语言,都可以用来开发高性能的后台服务,但是由于C++历史辉煌,C++还可以做前端开发,比如QT开发,还可以嵌入式硬件级别的开发,C++应用范围更广。
对于后台服务器、中间件,Go非常适合,因为语言本身的特性,使得:
我本人有5年的C++开发经验和2年Go开发经验,最大感触就是Go节省了C++程序员的时间。开发同样的业务,使用Go语言最起码节省40%的时间。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。