03.04 为什么Java程序员在C++程序员面前有一种挫败感?

heruilive


作为一个写了十几年代码的老司机,对于这两种语言都有过涉猎,本人倒是没觉得两种语言之间有多少感觉,两种编程语言的主题思想都是面向对象的编程,只不过应用场景还是略有差异,先是在c++下面做项目,后来转化到java项目中,作为两种编程语言都使用的人,现在简单介绍下。

c++主要用在客户端系统级开发上面,算是编程语言中比较难的,不建议初学者直接选择c++就编程思想而言显得没有那么复杂,但是就具体的语法细节还是相当的繁琐,这也是很多编程高手对于c++不爽的地方,但是真要挑选一种编程语言,既能贴近底层又能有面向对象的编程思想恐怕只能是c++,所以很多客户端的框架代码都是基于c++完成,像安卓框架层,浏览器内核等都是c++作为主力开发语言,虽然这是一门很难的编程语言,但是很多架构师的最爱。

java语言相比c++在语法细节上已经简化太多了,java主要氛围两个方向,一个是客户端一个是服务端方向,客户端主要指的是app的开发,两者共同的点需要把java基础弄扎实。从c++转战到java开发有一种比较轻松的感觉,终于摆脱了语法繁多的细节问题,相对来讲java入门比较容易,但要成为高手还是相当困难。

单纯的比较两种意义不是很大,每种编程语言都有其存在的必要性,真要不堪一击早就被市场淘汰了,每一种编程语言都有其自身优点,不需要比较一个高低贵贱,找到合适的触发场景就够了,在现实的生活中可能会存在做高级语言羡慕底层开发语言,觉得底层编程比较难,毕竟还需要和指针打交道,觉得特别难,做c/c++又会觉得高级语言变通性太强,需要很强的框架支持,会觉得脑子不够用的,要说之间会产生什么挫败感之类基本上不存在的事情,无论是什么编程语言,合适的就是最好的。

希望能帮到你。


大学生编程指南


反了,完全反了。曾经我的导师调侃,“当人家前端程序员在各种讨论框架和设计模式的时候,我们c++程序员还在纠结线程同步的问题。”

有一个事实必须要承认,c++的业务开发效率,真的不是一般的低。在开发的时候你需要注意各种鸡零狗碎的东西。

比如你得小心指针的使用,一不小心就会遇到空指针和野指针的问题,而且一旦出了这样的问题导致了崩溃,真的很难查。厉害高级程序员,在一个c++大型项目中遇到野指针难题,十个里面能找出八个就已经是高手了。

还有就是臭名昭著的内存管理问题,全都得自己控制申请和释放,真的好难。

而Java就少了指针同时也增加了内存回收机制,对于开发业务的程序员来讲,简直就是福音。真的,一个c++十天能搞定的项目,人家Java最多五天就搞定了。

生产力是第一要素呀,c++怎么敢在人家Java面前抬高头颅装高贵呢。

我是编程历史主义者,c++的存在的价值很大一部分是为了兼容c语言,因此也为此付出了生产力不高的代价。

最后,不要比来比去了,如果真的要比的话,还是得针对不同的应用场景去分析,要不然就找不到比较的那把尺子!

我是coder李,欢迎大家关注我


李CODER




C++是我本人学习的第一种面向对象语言,这是完全不同于面向过程的C语言,编程的思路发生了远离机器接近于人类的变化。

不得不承认一点,C++难度比Java大

学习过它以后以至于我后来选择Java方向上手比较快速。用过C++写过一个非常简单的银行管理系统,给我的感觉就是,指针有时候会弄得头晕。C++不说别的,光是弄明白指针和多重继承就够呛。开发效率明显没有Java这个广泛应用于上层应用的语言高,以至于如今C++转Java的明显比Java转C++的人多。

但是C++有个比Java更加巨大以至于现在都没有被替代的特点跑同样一个程序。

所消耗的性能一定比Java小,消耗的时间一定比Java短,因为Java一个虚拟机在中间,而C++直接在操作系统上跑。

两个语言各有千秋,作为Java程序员我对C++没有题目所说的挫败感,但是有敬佩感,毕竟用的工具比我们复杂难上手。



我是“极客宇文氏”,欢迎计算机专业学生以及程序员小白关注我,分享自己的编程感悟

极客宇文氏


c++和Java没有可比性。

c++完全兼容c语言,主要用于底层开发,比如:驱动、操作系统、内核(目前内核大多用c开发)、虚拟机、开发工具、引擎、服务器等,Java虚拟机就可以用c++开发。c++具有更高灵活的内存控制、指针控制、高效的运行效率。以前的端游服务器,全是由c++开发(c++90%以上代码,场景脚本、ai、技能扩展脚本用lua开发),启动服务器瞬间开辟玩家、场景等内存池,游戏玩家上线不会频繁new操作,只需要从内存池中取相应的内存,同时避免了内存碎片化问题。【更多说明: 魔兽世界、剑网三、传奇,大家熟知的大型网游都是采用c++开发。有兴趣的可以研究Trinity源码(魔兽世界服务器模拟),网络库采用boost.asio开发】

Java主要是上层开发,现在很多服务器都是用Java开发。语法和c#类似,语法相对简单干净,容易上手,现代服务器开发流行的语言。现在很多手游都选择Java做服务器了,没必要考虑那么多性能问题,快速开发上线才是首要目标。目前的Android系统之上就运行着一个庞大的java虚拟机,所以同样的配置情况下ios的效率吊打Android。

除此以外,c++做跨平台比较麻烦,需要用大量的#if #define做跨平台代码处理,由于Windows和Linux内核不一样,网络socket、线程等都需要单独处理。Java就完全不用考虑这方面的问题,Java虚拟机已经帮你做好了跨平台处理,你只需要把Java源码拷过去就OK了。

对于语言选择上,如果没有特别高的性能要求,或者对c++指针、内存把握不到位的话,建议选择Java语言。


cpp架构


虽然我不喜欢java,为吃口饭选择了java团队,现在正逐步摆脱中,但是说在cpp面前挫败感,这个就有点无中生有了,首先声明的是java开发团队为主的公司极少出现cpp开发者,即便有团队,规模也非常有限,在java团队面前直接被忽略,更不要说挫败感了,java语言有各种被吐槽的点,但是系统生态强大,成熟的应用,类库层出不穷,从另一方面证明语言特性虽然笨重,但是却是一种安全稳定的语言,所以你看很多脚本语言轻灵快捷的懂的人都说好,但是结果让python这种简单略有固执的语言上位。

java上位后完成了几个任务,首先微软的开发生态被破坏,其次是挤占了大量cpp的开发领域,cpp现在只能固守在性能和依赖硬件的领域,第三开发平台转移到了web,后来转移到移动端,最后普及了oo的开发和设计理念和知识理念

以上,语言不会因为复杂灵活,多样性就能被更多人接受,反而稳定,明确,略有沉重也没关系,会更让人信任


一叶书藏


大家别争了,任何语言都有它存在的意义和价值,本人十多年的C/C++开发经历,也有一两年的JAVA经历,算是对这两种语言有一定的了解了,具体讨论哪个语言更好,本身就是一种短视的行为,也是不科学的,如果我们这样去思考,从开发应用上讲,一个语言能做到的,另一个语言能做到吗?或者说谁更好地控制和利用计算机资源的极限,并且能兼顾使用上的方便,谁就可以算是更好的语言,至于很多支持JAVA的人,都喜欢重点指出开发效率,这恰恰从侧面证明了他跟本不算是一流的程序员,更加体现了他在学习技术的道路上,一定走得不远,为什么这样说呢?因为,在大多数商业软件的开发模式中,都会先根据业务需求范围,编写一个比较实又适合迭代的开发框架,框架结构中封封了很多与应用业务无关的公共实现代码,这样做的目的就只有一个,方便迭代快速,稳定性好,换句话说,在一个成熟的框架下,傻子(一般指刚毕业的)都能以拷贝和粘贴的方式快速迭代版本,降低技术门槛,这就是为什么JAVA出现的原因,不然的话,为什么要搞一个虚拟机?然后再以面向对象的方式搞一个语言?只有一个目的:降低技术标准,让半调子人才也来搞IT,难道不是吗?编程的关键在于思想和精神,并不在于实现方式本身,任何问题的最终归宿都是哲学问题,只是在细化的过程中方向不同而已,这恰恰也说明了技术人员偏执的心态,归根结底:说JAVA更好的,一定不是技术大牛,就算你的职位是架构师,你内心也是恐慌的。因为你根本不知道底层对你的实现做了什么?你能有信心吗?说C++好的,你也一定不会发展得很好,你或许知道计算机究竟干了什么,但你没有考虑到很多人根本不想去理解那么多,他们只想拿来就用,快速出货来证明他有如何如何的牛叉⋯

一句话:说什么不好,就是证明自己的不好,说什么好,他妈的也是在证明自己的不好⋯


啸天86018054


作为一个从1997年开始采用开发C+

开发软件的人来说,期间没有使用过任何其它语言。个人感觉C++和java的定位不同,C++更适合开发复杂计算软件,JAVA更适合开发应用软件,使得C++应用面比较窄,不容易找工作,但一旦找到C++的工作方向,那么相对会工作稳定一些,不容易被淘汰。C++更适合开发操作系统、数据库、复杂的仿真计算等。

我在工业制造业领域工作多年,发现用于工业制造设计、仿真、校验的软件基本都是C++写的,例如ANSYS,Solidworks、Blade仿真软件都是C++写的,但这些工业制造业软件基本是国外垄断的,包括大型机械的形式认证,听说所有民航客机的形式认证就是要通过美国的一款软件来仿真认证的。

C++和Java只有定位不同,不应该有挫败感,C++不好找工作的,但一旦找到了可能更稳定一些;Java更容易找工作


wwwffh


其实跟语言无关,还在纠结语言的人不配做程序员。现在都追求短平快,拿来主义,很多所谓的程序员就略过了基础的学习,成为语言的奴隶,只能做程序员中的民工,也就是码农。目前而言,互联网公司,好比那些建筑公司,对码农的需求是相当多的,这些都无可厚非。但悲哀的是很多所谓架构师也只是码农水平,包括所谓大数据,AI工程师,居然美其名曰不重复造轮子,不思进取。悲乎哉!


flyhaha


不存在了,阿里巴巴提高了JAVA程序员的地位。cpp对人的要求太高,JAVA就低很多,相同水平的cpp和JAVA程序员,反而是JAVA程序员工资高一截。而水平非常高的cpp程序员,更想要的是函数式编程。


天一阁图书管理员


作为 曾经的C++程序员,现在做着Java程序员,不明白为什么会有所谓的挫败感.

从以下几个方面论述我的观点

应用层面

c++的应用场景大多在嵌入式领域,后台底层技术,图像处理方面等等

java的应用场景更广泛,后台开发,android开发,大数据平台应用,都是主流的语言应用

c++对于系统底层的控制和字节流的控制更为精细和高效.java在系统的应用层上比较顺手

语言方面

c++相对java较难入门和精通,光c++的指针应用和内存泄露问题,就可以浇灭部分程序员的热情,同等精力和时间的前提下,语言的难度使得c++程序员的开发效率相比java程序员逊色一筹.同时java有各个方面完整的第三方类库,可以省去重复造轮子的麻烦,并且java更易于实现各种设计模式和系统架构

薪资待遇

这个和工作年限,工作行业,职场机遇,公司关系较大,两种语言在一线城市的年薪20w,30w以上的很正常,彼此之间并没有什么挫败感


分享到:


相關文章: