写C++就像是抱着一捆指针在浩瀚的内存中裸奔

看到此文,是否觉得体内洪荒之力爆发,饥渴难耐想吐槽
本文为转载文章,若有侵权或违规行为,请联系我,会及时处理相关内容。

支付宝微  信

Ja娃们,好久不见,最近和两位Java大牛喝了牛肉汤后,惊奇发现,他们都提及到了一个很有意思的话题:Java的开发效率比C++要高!小编的常识认为,C++的运行效率高,Java的开发效率高,但究竟是为什么,我觉得有必要弄个明白,我请教了几位大牛,他们这样说:

A大哥说了:

Java的开发效率到底比C++高在哪儿?

C++是面向内存编程,Java则是面向数据结构编程。

C++里,内存是裸露的,可以拿到地址,随意徜徉,增了删了,没人拦你,等到跑的时候崩给你看。

然而Java里,能操作的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。

Java程序员是孩子,嚷嚷要这个那个,玩完了就丢,JVM是家长,买买买,还要负责收拾。有的孩子熊点,屋子很乱,收拾起来费劲,但房子还在。

C++程序员是神,操纵着江河湖海,日月星辰,但能力越大,责任越大,万一新来的神比较愣,手一滑,宇宙就退出了。

新手写C++,像是抱着一捆指针,在浩瀚的内存中裸奔。跑着跑着,有的针掉了,不知踪影,内存就泄露了;跑着跑着,突然被人逮住,按在地上打的error纷飞,内存就越界了;终于到了,舒了口气,把针插在脚下,念出咒语,“delete”,系统就崩溃啦!

B大哥said:

Java的开发效率到底比C++高在哪儿?

我刚做程序员的时候发现自己写的代码速度非常慢,当时对STL远比周围人熟悉,按这样想,应该效率高才对啊。结果发现并不是,写代码的时候总想:“这样必然可以work了,但一定有更好的方法,会是啥呢?抽象出一个基类?做个bridge模式?那Ownership的问题怎么解决?谁负责回收内存呢?太复杂,别人也理解不了。就先这样吧,能work就好。” 就这样,兜了一个圈子回来。有的时候,这个圈子不是纯柏拉图式的,我会真的实现不少 “优化” 设计来比对,那个时间啊,花花的就耗在里面啦。有的时候确实会获得一些改进,但是多数时候是得不偿失,旁边那些在我看来连C都只是一知半解的家伙采用 “CtrlC-CtrlV-Modify-Debug” 大法,早就冲到我前头去了。这就是“心智包袱”的威力。

C大哥觉得吧:

Java的开发效率到底比C++高在哪儿?

Java是一门你不需要讲究,也没法讲究的语言。很多c++资深人士写不好java 或者写的很难受,就是因为他们想很多但是又没法实现哇。

D大哥以为呢:

Java的开发效率到底比C++高在哪儿?

独孤九剑,摘叶飞花皆可伤人。手中无剑,心中有剑,用龙泉还是莫邪有什么区别?用神兵还是树枝有什么区别?

不过大宋步兵还是不能用树枝。

对于优秀的程序员来说,语法,语言特性,编译器,运行时环境都不是问题。不过于此相反的是,对于不优秀的程序员,这些通通都是问题。

最简单的,去掉“指针”,对于独孤九剑式的程序员,并没有什么开发效率的提升,但是对于大宋步兵式的程序员,就少了很多坑,这就带来了开发效率的提升。我们当然要追求当独孤九剑,不过,当你做大宋将军时,最好别把你的士兵都当独孤九剑那么用,铁定死的很惨。

不知上面几位大哥的见解能否给你一些指引或是脑洞呢,程序娃的常规认识是"C++的运行效率高而Java的开发效率高(相对而言)"。但在某些场景下Java的性能已经不输C++啦,有的即使落后,但感知差距也并不大。而现代C++有了更多方便的语法和工具,开发效率也是有了很大的提高,所以了解语言之间的差异更多的还是让我们对技术实现的原理和深度有了更高层面的认识,有了更好的视野而已。

好啦,小编肚子饿了,要去高效的觅食啦,希望“Java我最强”可以真正帮到热爱Java、从事Java的娃们,更多精彩的内容或是跟小编一对一的聊聊闲天,就快快微信搜索“Java我最强”公众号吧,说不定你再也离不开这个平台啦!今天就聊这么多,下回见!

以上,部分观点参考知乎!


原文链接:http://www.toutiao.com/i6339796829273588225/


分类: C/C++, JAVA, 技术, 编程 | 标签: , , , , | 评论 | Permalink

发表评论

电子邮件地址不会被公开。