文档章节

Java程序员如何高效而优雅地入门C++

小欣妹妹
 小欣妹妹
发布于 2018/04/23 11:46
字数 1282
阅读 110
收藏 8

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Java程序员如何高效而优雅地入门Cpp,由于工作需要,需要用C++写一些模块。关于C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 我也算是老手,但也还需要心生敬畏,本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ 。Java是为了就业,C++ 是信仰。(C++ 是教学、信仰、商业这三个原本互斥的概念(这三个概念也是三个阶段,正好可以陪我们一起成长)的偏偏集合体)。

关于C类语言的基本思想,可以为学习C++ 定下基调。下面通过斯特鲁普(C++发明者)对Java程序员的字字珠玑的建议,再加上我的理解和总结,列出几点“中心思想”。不要试图用C++ 来编写Java程序。不能依赖垃圾收集器了。同为面向对象语言,但要采用C++ 自己的抽象机制【类和模板】。
要理解C++ 与C语言是各个方面都不同的程序设计语言(虽然最早C++ 是作为“带类的C”出现的),不要因为虚假的熟悉感而将代码写成C。
C++ 标准库很重要很高效,要非常熟悉。
C++ 程序设计强调富类型、轻量级抽象,希望能细细体会。
C++ 特别适合资源受限的应用,也是为数不多可以开发出高质量软件的程序设计语言。
C++ 的成长速度很快,要与时俱进。
一定要有单元测试和错误处理模型。
C++ 将内置操作和内置类型都直接映射到硬件,从而提供高效内存使用和底层操作。
C++ 有着灵活且低开销的抽象机制【核心掌握】(可能的话以库的形式呈现),而不是简单的如Java一样上来就给所有类创造一个唯一的基类。
尽量不使用引用和指针变量,作为替代,使用局部变量和成员变量。
使用限定作用域的资源管理。
对象释放时使用析构函数,而不是模仿finally:避免使用单纯的new和delete,应该使用容器(例如vector,string和map)以及句柄类,(例如lock和unique_ptr)使用独立函数来最小化耦合,使用命名空间来限制独立函数的作用域。
不要使用异常规范。
C++ 嵌套类对外围类没有访问权限。C++ 提供最小化的运行时反射:dynamic_cast和type_id,应更多依靠编译时特性。零开销原则,必须不浪费哪怕一个字节或是一个处理器时钟周期(C++ 是信仰)。
C++ 是系统程序设计语言(例如驱动程序、通信协议栈、虚拟机、操作系统、标准库、编程环境等高大上有技术深度的系统),而Java是业务开发语言(例如XXX管理系统,电商网站,微信服务号等基于B/S架构的上层UED相关的应用),高下立判(鄙视链是有道理的)。

学习C++ 最重要的就是重视基本概念(例如类型安全、资源管理以及不变式)和程序设计技术(例如使用限定作用域的对象进行资源管理以及在算法中使用迭代器),但要注意不要迷失在语言技术性细节中。
学习C++ 一定要避免深入到细节特性中去浪费掉大量时间,了解最生僻的语言特性或是使用到更多数量的特性并不是什么值得炫耀的事情,尚学堂•百战程序员陈老师指出学习C++ 细节知识的真正目的是:在良好设计所提供的语境中,有能力组合使用语言特性和库特性来支持好的程序设计风格。

所以,使用库来简化程序设计任务,提高系统质量是非常必要的,学习标准库是学习C++ 不可分割的一部分。(遇到问题先找库,这一点我想每个Java程序员骨子里都是这么想的,不会钻到细节中去。)领悟编程和设计技术比了解所有细节重要的多。而细节问题不要过分担心,通过时间的积累,不断的练习自然就会掌握。

Java程序员如何高效而优雅地入门Cpp,C++ 除了标准库以外,有大量的标准库和工具集,现在有数以千计的C++ 库,跟上所有这些库的变化是不可能的,因此还是上面那些话,要通过组合使用个语言特性以及库特性来支持好的程序设计风格,所以熟悉这些库的领域(不必钻进去一一研究)以及领悟编程设计技术才是核心点。
 

© 著作权归作者所有

小欣妹妹
粉丝 19
博文 131
码字总数 159953
作品 0
太原
私信 提问
加载中

评论(1)

魔仙剑痴
JAVA是为了就业,C/C++才是信仰! 遇到问题先找库。
Java程序员如何高效而优雅地入门Cpp?

java切入到cpp的学习,首先会具备以下几个优势点 1.没有初学编程语言的恐惧感 毕竟作为过来人切入新的编程语言的学习,驾轻就熟学习的套路上都已经很熟悉了,如果是中级的java程序员切入进来...

启示录是真的
2018/05/27
0
0
cxxJava -- 像Java一样开发C++

cxxJava -- 像Java一样开发C++ 当你同时有过java和c++两个语言的开发经历后,你会喜欢上java语言开发效率的高效但又深深的被c++语言运行效率的高效所吸引。 java类库的丰富性、通用性、易用性...

cxxjava
2016/12/12
186
0
几种计算机语言的评价

今天在阮一峰博客上看到的文章,觉得很有意思特地发到OSC上,可能已经有人转发过类似的文章,重复请见谅,以下是正文 ------------------------------------------------------------------...

wysjri
2011/12/02
1K
16
开源领袖谈UNIX下的编程语言

C语言 虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是很好的选择。 ...

kouxunli1
2015/01/07
279
0
做软件工程师, 而不是一个C++牛, PHP牛 或者 Python 牛

很多人说宏哥喜欢争论语言, 大多时候, 是宏哥争论的不是语言, 而是如何选择正确的工具, 最快, 最好质量去达到既定目标. 很多人觉得宏哥争论语言, 实际上, 是因为他们自己变成某种语言的附属品...

宏哥
2012/11/06
315
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 我的视频网站vip账号和我厚脸皮的朋友们

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @Cobbage :分享小海的单曲《衡山路(2016现场版)》: 《衡山路(2016现场版)》- 小海 手机党少年们想听歌,请使劲儿戳(这里) @FalconChe...

小小编辑
今天
6
0
Spring Cloud Alibaba 实战(十二) - Nacos配置管理

> 本章主要内容是:使用Nacos管理配置以及实现配置管理的原因,配置如何管理以及动态刷新和最佳实现总结,最后是Nacos配置刷新原理解读 该技术类似于Spring Cloud Config 1 配置管理的意义 项目...

JavaEdge
今天
9
0
面试官问你编码相关的面试题,把这篇甩给他就完事!

前情回顾:Java中一个字符占两字节 但为什么new String("字").getBytes().length 返回3个字节 今天主要聊一聊: 字节 字符 字符集 编码 字符编码 Java 内码和外码 Unicode 字节 例如 :00001...

gzc426
今天
10
0
写的简单sh脚本2

#!/bin/bashexport LANG="en_US.UTF-8"#chmod +x filename 记得给文件加可执行权限#./vsimstart.sh#启动vsim项目echo "start vism"#207------------------------------assets=vsim-a......

hexiaoming123
昨天
8
0
java基础(1)变量和常量

概要和总结: 数据类型图: 基本数据类型:只有基本功能-----保存数据 (4类8种)byte-short-int-long-float-double-char-boolean 引用数据类型:有更多功能,保存数据,处理数据...

煌sir
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部