Java 的开发效率究竟比 C++ 高在哪里?

高在,别人用JAVA写了一堆比较垃圾的代码,你把这个jar包进来,就不改了。

而C++的情况是,别人写了一堆比较垃圾的代码,你把源码include进来,顺便手贱点了进去……骂了几天~几个星期娘后,他的代码有一半被你改了。

也可能高在,别人写JAVA需要一个功能,搜了搜到maven里加了几行,自动下了几个1m的包就开始干正事了。

而C++的情况是,你搜到了几个知名的开源库,下下来一看,好多个近百K的hpp,拖慢了编译速度不说,好多功能还用不上!于是你挽起袖子花了好几天自己写了一个轮子,然后以后花了更长的时间去修bug。

说白了,不是语言的问题,而是使用者心态问题。

我写java的时候,就为了个bimap,引了个guava进来,为了几个流的拷贝把apache commons引了进来。

当然C++也可以用的很随性,我也见过别人同时用armadillo和opencv(前者矩阵按列存,后者按行存),结果动不动就转置矩阵来转换格式的。。。。


 

有几个原因

1. 语言上,Java是一个比C++更容易parse得多的语言,所以相应的工具链IDE会更容易做,无论多大的Java的项目,就是新手写完都不会有编译错误。但是写上千行C++程序,写完不需要改编译错误的,都不是一般高手。实际上,C++的语言特性太丰富,一般的团队都是裁剪出一个子集来用,就这个子集来说,大家的认识也千奇百怪。

2. ABI依赖,C++还是一门面向底层的语言,直接面向ABI接口这样底层环境的编程。我就不提什么Linux下程序移植到Windows下这种坑爹的事情了,我有一次把一个在fedora下跑得好好的程序拿到ubuntu下重编译就莫名crash了,开着gdb debug N久汇编。

3. 没有包管理,这样库就不容易分发,不可能有Maven这样的东西,这个缺陷严重限制了C++的使用,就是你的项目必须要有依赖的全部代码,因为原因2,很多时候static lib都不靠谱,更不要提dynamic lib了。

4. 因为前三个原因,C++上面用于解决通用问题的库和框架比起Java World是差很多的,反过来会更加使得C++的用途边缘化,迈向特定领域。

C++开发效率的问题还不止这些,越写越想吐槽,但是还是不提了。但对于Java来讲,开发效率比C++强很多,被JIT充分优化过的代码的效率基本接近C++,当然内存使用的效率是远低于C++的,但是省内存这个需求现在已经很少见了。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值