设为首页|收藏本站|
开启左侧

[问答] 如果一定要在C++和JAVA中选择,是C++还是java?

[复制链接]
84347 20
失去你怎么舍得 发表于 2021-1-29 16:25:42 | 只看该作者 打印 上一主题 下一主题
 
如果一定要在C++和JAVA中选择,是C++还是java?


上一篇:美剧《硅谷》大结局 :一次区块链扩容引发的危机
下一篇:旧金山新闻速递1/25/2021
@



1.西兔生活网 CTLIVES 内容全部来自网络;
2.版权归原网站或原作者所有;
3.内容与本站立场无关;
4.若涉及侵权或有疑义,请点击“举报”按钮,其他联系方式或无法及时处理。
 

精彩评论20

正序浏览
跳转到指定楼层
沙发
yzk13298 发表于 2021-1-29 16:25:56 | 只看该作者
 
提问题的明显是学生  
学生时间又多 环境又好,  不学难的, 难道先学JAVA????  
被C++虐过的人,再学其它语言。。。。谁试谁知道。。。
学了C++,以后简历上说不定可以写: 熟悉C++,精通JAVA,python,c#.....
先学JAVA      :熟悉JAVA
回复 支持 反对

使用道具 举报

 
板凳
每天都到 发表于 2021-1-29 16:26:18 | 只看该作者
 
结论:
    如果你是 计算机科班,大一学生,不需要立即找工作,想提高自己,那我的建议是: 把手上有关java 的书籍全部扔掉,换成C++ 的几本经典书籍.  如果你是想找工作,建议学习Java , 毕竟以后想提升自己的时候,还是可以再学习C++ 的.如果你是外面培训班出生,没有科班背景,基础不扎实,Sorry,目前阶段你可能还配不上C++ .

    你如果选择C++ , 那C++ 的难度与JAVA 比,那应该不在一个层次. 因为 C++ 作者及委员会 想给你带来足够的抽象能力, 让你可以抽象这个世界; 给你足够的自由与控制硬件的能力,及零开销的高性能.  特别是现代C++ 的发展,  可以带来更多的组合,灵活方便,可以写出非常精简, 有美感的代码. 这些导致了C++ 语法繁杂,学习曲线漫长.
   但是学习C++ 同样会给你带来很多收益(前提是学好的情况下):
    你会变得自信,在有C++ 基础上,学习go 1天,java的学习也就2-3天,   学习rust 也很快,一个月吧,再练习下就可以写代码了.当然我说的只是基础语法的学习.  学习这几门语言时,你就会感觉好轻松.  自己的抽象思维能力会带来提升,抽象思维是计算机领域最重要与基础的能力. 另外很多人吐槽C++ 程序员比较呆板,古董,且不懂设计模式. 那是因为你没有研究过好的C++的开源代码,比如Folly, Wangle,mongogdb . 特别提下 Folly 的promise/future 设计, 是C++的大牛 写的, 基本上把每一行源码都看懂了, 写的真好. 通过学习C++ , 可以学习到很多通用的知识,这些知识也是可以迁移的.  C++ 的oop及资源所有权与生命周期管理, C++的异常处理, C++的泛型设计,C++的元编程,C++的异步编程及Lock-Free 设计等.在学习Lock-Free 过程中,你会发现并发程序设计与数据库中的并发控制的思想非常类似, 比如: Lock-Free 中的Hazard Pointer 里面 不就有MVCC 的思想么, CAS-loop 操作不就是一种乐观的思想么.  另外如果你触及到内存一致性模型的本质的话,你很有可能会去读lamport 的经典paper<Time, Clocks, and the Ordering of Events in a Distributed System> ,对以后学习分布式系统很有好处.  我在学习C++ 的过程中,是先走了一遍基础,然后逐个击破,并辅助一定的实践, 花了大量时间,不敢说学的比较好,只能说我在看一些优秀的开源代码时,心里没有畏惧感了, 因为有能力可以深入到任何代码细节.
 这里特别提一下C++ 的Lock-Free 程序设计:
    我学习C++ ,是工作了多年之后,感觉最烧脑的是Lock-Free 程序设计,  为了学习这货,看了很多内存一致性模型相关的paper, 把 <C++ 并发编程实战 第二版 英文版>看了一遍(千万不要看中文版, 且不要看网上的一些文章) , 应该是理解的非常透彻,并辅以实践,我是看的brpc 中相关Lock-Free 设计及Folly 源码.  这里提下java : java 的内存一致性模型与C++同根同源, 在java 中,很多人可能只知道volatile, 但是volatile 开销太大,在这点上 C++ 又给了你足够的灵活性与不同性能的选项.
   另外有人diss 了 <C++ Primer 第五版 > 这本书. 我觉得作为C++ 入门书籍非常好,主要是翻译的比较好.  但是相关地方,如果你想把知识点连成线的话,需要自己拓展和总结下.
  当然,如果你想把C++ 学的好点, 至少要看5-6 本经典书,并赋予实践.
   Anyway ,  it's only up to you !
回复 支持 反对

使用道具 举报

 
地板
111ljy_一名 发表于 2021-1-29 16:26:37 | 只看该作者
 
编程届有一个固有的偏见,就是大家默认C++可以轻松转JAVA,但JAVA转C++很难。
实际情况比较复杂,通常来说,JAVA在软件工程上的训练比C++足,但是缺乏内存管理和硬件优化的训练。
回复 支持 反对

使用道具 举报

 
5#
CR7KA8 发表于 2021-1-29 16:26:49 | 只看该作者
 
我也来讲两句吧!感慨一下岁月这把杀猪刀吧!
转眼一瞬间,已经从事软件开发十年多了吧,C++和java跟着做过好多项目,相对来讲跟C++的感情更加深刻些,毕竟被折腾的时间最长印象也最深刻,刚入行就跟着做C++项目,开始被泛型编程里面的各种规则折腾的够呛,发现和自己在学校学的完全不是一码事,学校学到的C++理论只是皮毛而已,也就是学学面向对象大概是什么样子,面向对象的三大特性要真正的了解还是需要在项目中才会领悟,然后被技术经理狂叼到无地自容,都开始怀疑自己是不是真的适合做研发?
为了能够跟上项目几乎天天搞到半夜,就这还是赶不上大部队,好在没有放弃坚持下来了。
很多人觉得要能写代码是不是需要什么天份,关键看毅力能够挺下来就能坚持到最后就可以了,刚入行的程序员都有被技术主管叼过的经历,其实后来想想未尝不是一种激励。在当时状态下可能让自己很没有面子,但也是印象深刻,这种场景经历的次数多了,回过头就是一种财富,一个对你已经失望之极的人很难严厉的对待你。正是经历了这痛苦的半年也让自己和C++建立了深厚的感情,从此结下来不解之缘,算是技术生涯里面的使用最多的编程语言。
后来用java做项目开发是C++技能成熟之后去做的,所以接手去做已经简单太多了,能深深体会到一种幸福优越感,毕竟java的语法细节和C++不可同日而语,但并不意味着java做起来就比较简单。 java框架思想要求更高,特别是企业级别的后台的开发,数据量巨大的情况并发以及分布式处理都需要很深的功底,要达到一定的造诣都需要长时间的积累,所以不要轻易下结论一种编程语言难易,这都是相对的。初级的程序员做的是一些小模块的功能觉得简单也很正常,如果参与到框架的设计难度可想而知,不要轻易对一个事物下结论。
java做起来相对C++有种很爽的感觉,起码不用考虑指针的东西,但整体来讲还是没有C++用起来有感觉,所以技术生涯从事的第一个编程语言对于后续的影响还是挺大的。
编程语言本质上只是一种工具,但选择不同的编程语言就意味着会选择不同的编程方向,c/c++主要是底层开发,java属于高级语言开发方向和未来的编程方向的发展息息相关。
如果你想知道C++和Java的语法有什么不同,可以看看这篇外国友人写的技术文章,其实,Java和C++的语法很像的,我当初转型的时候,刚刚开始是把这个语法对比文章打印出来,贴在电脑屏幕下面,随时看的。
有空的话,可以去看看
外国友人写的Java与C++语法区别,可以贴在电脑屏幕下边随时看
回复 支持 反对

使用道具 举报

 
6#
李帅 发表于 2021-1-29 16:27:11 | 只看该作者
 
Java不香吗?为什么要学习C++折磨自己?
 第1张图片 作为一个用了C++多年的老鸟,我理解为什么会产生这种C++恐慌,但个人觉得这种氛围对初学者来说并不友好,因为他们也不懂,本来看到要学的语言知识:指针、虚函数、动态绑定等等就心里发怵,再加上很多行内人给出的建议中提到C++复杂,从心理上就直接畏难了,大多都是被劝退的结局。
我自己是从大一开始接触C++到现在参与服务器开发,将近有10多年的时间了。


你问折磨吗?


说句实在的,头是已经秃了,但拥有C++的我感觉就是一个强者。倒不是鼓吹那种学了C++就高人一等的优越论,就是真心觉得很香。
 第2张图片 C++的应用范围很广,能适应多方面的需求,比如网络、通讯、图像、游戏、桌面等,3种主流的操作系统Windows、linu、Unix内核部分也都是用C++和汇编写的。
这是我看到的一个比较干货的C++项目,可以上手试试,你就知道有多爽了!
知乎营销平台并且C++可以称得上是一个“万金油”型的语言,凡是能用其他语言写的程序,都可以用它来写,你要是基础打得牢,上手其他新语言的时候也更快,更容易深入。像Java,一些基本简单的内容可能3、4天就搞定了,快的话2天左右。
市场上对这类人才的需求也很大,存在10万的缺口,并且这个数字仍在逐年上升。看看各大厂在招聘C++研发、开发工程师时给出的薪资就能感觉到。
 第3张图片  第4张图片  第5张图片 所以从一个过来人的角度来说,如果你是在校生,早点接触C++没什么坏处,反而可以实打实的锻炼自己,提前成为市场上稀缺的人才。


但C++的确很复杂,怎么学?


我在学的时候也不轻松,但整个过程下来会发现C++说是难,但也有方法可循。
 第6张图片 之所以会觉得难懂、学不会,都是因为没有用对方法,学C++学的是各种各样的语法知识吗?


不是!


最重要的是弄懂语言实现背后的原理,例如运行环境、操作系统、网络知识、算法数据思维等。
我在最开始学的时候,自己耐着性子啃了很多本书,《C++ Primer》、《Effective C++》、《C++ 标准程序库》等等,也看了很多视频跟着上面的代码去练习。
折腾完发现道理我都懂,真正做的时候一堆Bug。虽然有的书或者视频会给出代码让你实操,但那上面的代码都是假定在完美环境下进行的,只要按照步骤走,基本没什么问题。
真的放在业务实操环境里面,步步都可能出Bug。
 第7张图片 经历过这个阶段,我想劝诫初学者一句,学C++尽量有人带你。自己摸索可能耗时耗力,最后还仅停留在理论层。
我整理了一些学习资料以供初学者参考~
C++ reference:www.cppreference.com 这个网站是学习C++比较好的论坛,唯一不足的就是全英文;
免费的C免费 C/C++源代码:http://www.cprogramming.com/cgi-bin/source/source.cgi
CodeCogs是一项协作的开放源码库,可以看到C/C++的数值方面的组件:http://private.codecogs.com/
有关C++的信息、教程、文章等:http://www.cplusplus.com/
上面这些是自己学习的时候可以查询阅读的资料,有关老师带着教学的视频资料,我找到了一门个人觉得比较靠谱的《C++难点突破训练营》,指个路:
知乎营销平台它是在3天时间里用直播的形式通过手写Google测试框架去学习编程的思想、逻辑,而不是浮于单纯学习C++语言本身的层面。比较适合有一定C++语言基础,目标是进大厂拿高薪的人。
还可以加入到社群里面一块学习,不至于自己学着学着没动力,或者对着视频看了半天,有不懂的地方也找不到人问。
根据身边人体验之后的反馈,学完可以获得两类的项目成果。一类是C++项目实战开发成果,一类是使用Qt模拟体温数据采集与展示,它们分别锻炼的是不同的能力。
朋友发给了我一些有关C++项目实战开发成果的截图,可以看看作为参考。


下图就是演示运行Google Test框架后,对代码产生的效果。主要提升三个技能点:程序的编译过程、Google Test框架使用、printf输出彩色字:
 第8张图片

第二张图的结果演示是在Google Test框架原理之外,增加了测试的思想,锻炼自行编写代码、程序设计的能力:
 第9张图片

第三张图是通过讲解实操去实现六次版本优化之后快速排序的结果,从中锻炼3个技能点:快速排序的代码实现、虚函数表与函数指针、算法设计和优化。难度达到4颗星:
 第10张图片

就这门课程的老师资质,我觉得是可以真正学到干货的。授课老师胡光是ACM亚洲区金牌得主,至于ACM的地位,凡是计软专业的都懂。他也曾担任百度的高级算法研发工程师 ,是百度NLP推理引擎开发者,后来还在美国硅谷从事过AI工程师。
 第11张图片

据内部透露出的数据,他教过的双非院校本科生最高毕业年薪为59.5万。
 第12张图片

课程之外还可以领取项目源码的资料包,获取的方式放在文末了,有需要的朋友可以自取。
 第13张图片 最后,我想对所有学C++语言的朋友说一句:走C++的路,哭过、秃过,也就变强了!
 第14张图片

领取项目源码资料包,戳:
知乎营销平台
回复 支持 反对

使用道具 举报

 
7#
青冥1長天 发表于 2021-1-29 16:27:35 | 只看该作者
 
选择什么样的语言跟你要干什么样的业务是有关系的,不能一概而论。
就跟你过年要回家一样,你不能要乘坐高铁回家,你就要去造一个高铁吧。(成本有点高啊
但是人家制作高铁的就必然要去照高铁。
如果你只是要开发一个web,你选java或者php等肯定是要比c++要好一点。
如果你要开发对性能要求高、规模又不太小那你就去搞C++。
或者是要用到底层的算法如图像识别之类的。
所以选择什么样的语言要看你以后要从事什么行业,做什么样的业务。不能一棒子拍死不是吗?
或者你前期学C++感觉比较难你可以先从java入手也是可以的。所以不要纠结你要学什么语言。
而是要搞清楚你怎么学会它并运用。
大学的你们可能和我当时一样都是想的比较多而实际动起来的比较少。
希望你们都能动起来,而不是每天都在纠结中度过!!
回复 支持 反对

使用道具 举报

 
8#
我不是驴 发表于 2021-1-29 16:27:48 | 只看该作者
 
小孩子才做选择题,成年人都要!

哈哈哈哈既然要学,那就都来学学看吧!其实有时候选择不一定要在最开始就决定好,边学边决定也是可以的呀~
C++和Java的区别

    JAVA是纯面向对象语言,所有变量和方法都在类中声明和定义/C++为了向前兼容c语言则保存部分面向过程特性。C++是编译型强类型语言,由编译器直接编译成本地机器识别的机器语言/JAVA是半编译半解释型语言,由编译器得到class字节码文件,然后由虚拟机解释执行,由JIT即时编译器进行热点代码探测直接翻译成机器码。JAVA没有指针,虽然虚拟机底层实现还是依赖指针,但不对外开放,更加安全/C++ 存在各种指针*、常量指针、指向指针的指针,还有与指针对应的取址&,c++指针使用不当可能存在野指针,指向一个已删除的对象或者有访问权限限制的内存区域。
哪个更好入门呢?

两者相比还是Java更好入门!C++入门难,精通更难!
由于C++是正宗的C语言体系,是由C语言发展而来的,所以它支持多种编程范式,它主要有两个特点,一个是尽量兼容C,另一个就是支持面向对象的方法。C++对C系统进行了有效的进化,比C更加安全,还能检查出更多的类型错误!
Java是一个纯粹的面向对象的程序设计语言,继承了C++语言面向对象技术的核心。取其精华去其糟粕,舍弃了C语言中容易引起错误的指针等特性,Java作为一门编程语言,完全可以单独学习,所以零基础入门也是可以的。
你的志向是什么呢?

程序员作为当今最火的工作之一,Java程序员在其中占比算是相当大了,并且Java的应用范围广,想找工作学Java可以说就很合适了,C++更注重底层应用开发,
从学习角度来讲:Java更偏向企业级应用开发,C++更偏向底层应用开发
如果是为了未来就业的话:Java的招聘更多,工作机会也多,C++的工作岗位前期工资高,但是工作机会少;
从两者的前景看:这两者都具有非常长远的可发展前景,这一点是毋庸置疑的!
所以,无论是学习Java还是学习C++,只要有多年的经验,薪资都会高!这一点在编程界都是恒定不变的!
最最重要的一点

如果你今后想要作为一名程序员,那么你就要养成热爱学习的好习惯,因为随着社会的不断发展,技术的不断更新,无论是学习时,面试过程中,还是工作期间,唯有不间断地推陈出新,学习新的知识,摒弃旧的知识,才是一个程序员可持续发展的最好方法!
 第29张图片 一定要在Java和C++两者选择的话,还是要看自己更偏向哪一方面~
以上就是我的一个建议和分享,希望能给题主一些帮助~还有什么想要问我的问题可以在评论区评论!ヾ(◍°∇°◍)ノ゙当然,我还是更喜欢你关注我!或者关注@动力节点吧~
回复 支持 反对

使用道具 举报

 
9#
囡囡的宝贝 发表于 2021-1-29 16:28:04 | 只看该作者
 
c++是走系统级编程,基础设施,程序员不容易被裁员,因为c++人难招。
java是商业化语言,常用于电商和管理系统,好找工作,但也容易被裁员,学的人很多。
你可以先学c++,学不会再来学java,或兼职学java。
c++,语言复杂,但你可以按带类的c来学习,c++的模板你可以不学,会用就行,如怎么调用boost库,用自动指针。
学c++同时可以学习一下go语言,做云计算服务器好多开始用go语言,号称互联网c语言。
回复 支持 反对

使用道具 举报

 
10#
宋宸奕 发表于 2021-1-29 16:28:40 | 只看该作者
 
到底是学习C++还是学习Java就不用我多说了吧?
这个问题下方226个回答,基本上都是让你选择Java,如果你是为了工作就选择Java。
如果是像单纯的增加自己的计算机知识那就学习C++。
回复 支持 反对

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

排行榜
活跃网友
返回顶部快速回复上一主题下一主题返回列表APP下载手机访问
Copyright © 2016-2028 CTLIVES.COM All Rights Reserved.  西兔生活网  小黑屋| GMT+8, 2024-5-14 05:26