结论:java
(1)若是你是 计算机科班,大一学生,不须要当即找工做,想提升本身,那个人建议是: 把手上有关java 的书籍所有扔掉,换成C++ 的几本经典书籍。 程序员
(2)若是你是想找工做,建议学习Java,毕竟之后想提高本身的时候,仍是能够再学习C++ 的。数据库
(3)若是你是外面培训班出生,没有科班背景,基础不扎实,Sorry,目前阶段你可能还配不上C++。编程
你若是选择C++,那C++ 的难度与JAVA 比,那应该不在一个层次。由于C++ 做者及委员会 想给你带来足够的抽象能力,让你能够抽象这个世界; 给你足够的自由与控制硬件的能力,及零开销的高性能。 特别是现代C++ 的发展, 能够带来更多的组合,灵活方便,能够写出很是精简,有美感的代码。这些致使了C++ 语法繁杂,学习曲线漫长。设计模式
可是学习C++ 一样会给你带来不少收益(前提是学好的状况下):promise
(1)你会变得自信,在有C++ 基础上,学习go 1天,java的学习也就2-3天, 学习rust 也很快,一个月吧,再练习下就能够写代码了。固然我说的只是基础语法的学习。 学习这几门语言时,你就会感受好轻松。 微信
(2)本身的抽象思惟能力会带来提高,抽象思惟是计算机领域最重要与基础的能力。另外不少人吐槽C++ 程序员比较呆板,古董,且不懂设计模式。那是由于你没有研究过好的C++的开源代码,好比Folly, Wangle,mongogdb 。特别提下Folly 的promise/future 设计, 是C++的大牛 写的, 基本上把每一行源码都看懂了,写的真好。并发
(3)经过学习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,把看了一遍(千万不要看中文版,且不要看网上的一些文章),应该是理解的很是透彻,并辅以实践,我是看的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 !
连接:https://www.zhihu.com/question/20736151/answer/1553066228
来源:知乎做者triump
另外本人是一名CC++的程序员,若是你想更好的提高你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~
C语言C++编程学习交流圈子,QQ群1090842465【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比本身琢磨更快哦!
编程学习书籍:
编程学习视频: