文档章节

2015-06学习总结——c++

Tocy
 Tocy
发布于 2015/09/09 22:15
字数 1456
阅读 30
收藏 2

在工作快三年的时候,突然想到我需要凝练下自身的知识体系。从大一开始接触c++,差不多快8年了。想想过去走过的学习之路,很简单,也很曲折。

经历了从一无所知——入门——应用——修修补补的过程,到现在可以说我可以用c++完成我能想到的任何功能,或者说编程语言上没有任何障碍。

所以,抽出一个月的下班时间重新读了一下几本书:

《Thinking in C++ 2nd》(中译名《c++编程思想》,分两卷)

Effective c++和More Effective c++

The C++ Programming Languages(特别版)

 

其中看到一句话很有感触,“c++是一门可以伴随你成长的语言”。

c++相对而言,是一个多泛型的编程语言,包括过程式、基于对象、面向对象、通用编程几个分类,或者换种说法,c++可以认为是以下几个内容的复合:

  •  better c
  • ADT(Abstract Data Type,抽象数据类型)
  • OOP(面向对象编程)
  • GP(Generic Programming & Template)

工作中用的最多的还是前三个,至于GP,可能需要了解的就是STL的各种容器和算法。

从这一个月的书籍阅读情况来看,我对c++基础语法、自定义类型、继承和多态都是相对比较了解的。但对异常处理机制、输入输出流、STL的算法及迭代器了解不是很多。后续可以从这方面入手,提升下我对GP的理解。

实际学习的过程中,主要是学习解决及处理问题的能力,我们需要把需求满足或者bug解决,这个过程需要大量的软件工程设计和软件调试的知识。因此,学习及应用c++的过程不可避免的涉及到操作系统相关的内容(尤其是c++标准不包含并发机制、界面的情况下)。以Windows为例,我们需要了解Visual Studio的使用、Windows基础编程、Win32运行机制、MFC界面及内部处理机制、内核运行机制、网络通信机制,这都需要很多的努力去了解深入,需要适量的练习编码,以加深我们对相关概念的理解。就拿最简单的命令行程序而言都有大量的函数及接口,保证程序的可视化效果,不对相关资料做深入学习,是不可能有更全面的认识的。

另一个方面就是bug跟踪及解决的能力,这涉及到windows调试技巧、Visual Studio调试方法,也涉及部分编码规范的内容,如何在代码中尽可能少的引入bug。比如说我们可能需要学习windbg的使用、异常崩溃的堆栈分析,也可能需要学习一些代码静态分析工具的应用。

为了提升我们代码的质量,我们还需要阅读各种软件工程实践的书籍,学习前人的知识、经验,了解设计模式、软件开发规范、数据结构、算法等。

所以说这个过程断断续续,修修补补,在这个过程中不断地成长,经历各种洗礼,这样方能把自己的知识体系推向更高的水平。

 

这一个月的深入总结,个人感觉我可以从以下几个方面,继续深入的学习:

  • 异常处理机制

应用的不多,可以尝试使用下,对比下传统的c的错误处理机制到底有何不同。

  • GP&STL

STL目前基本会用,可以试着了解下boost库,学习GP那本最经典的数据。

  • 数据结构&算法

关注数据结构和算法是因为程序设计是与数学分不开的,可能多数情况下我们都是可以直接使用成熟的算法和套路,但是全部放下终究会沦为过时的境地。

  • c++ 0x/c++ 14

了解c++新的标准,目前了解不多,这方面可以深入学习下。

  • 编译原理及汇编

其实就是为了回答编译器是如何将c++源代码转化为可执行程序的,中间做了什么,如何把汇编语言嵌入到现有代码中,以提高程序性能。

  • 性能优化及分析

这方面主要是回答如何提升指定功能的执行效率,可能需要改进算法,也可能跟代码组织有关。

 

当然这些是我目前能想到的,不会全部了解,一点点的来,选取几个主题,深入下去就好了。

写这么多,只是为了提醒自己,不管做什么,做到精通这是最终目标追求。

 

附:c++分级

初入江湖——惨不忍睹
---任何一版c++入门教程(c++ primer)

小有名气——将就着用
Thinking in C++ 2nd edition Bruce Eckel
c++编程思想 第二版, Volume 1、Volume 2

名动一方——在大是大非的问题上立场坚定
Effective C++(第二版) 和 More Effective C++ Scott Meyers (Lostmouse、候捷 等 译)

天下闻名——正确的使用C++的每个特性
C++程序设计语言——特别版 Bjarne Stroustrup (裘宗燕 译)

一代宗师——掌握通用程序设计思想
范型编程与STL Matthew H. Austem (候捷 译)

超凡入圣——清楚C++的每个细节
ISO/IEC 14882: Programming Languages-C++ ISO/IEC


天外飞仙——透过C++的军大衣,看到赤裸裸的汇编码
GCC的源码烂熟于胸,有事没事的随便写个编译器玩玩

-------------------------------------------------------------------

本文作者:Tocy

版权所有@2015 ,请勿用于商业用途,转载请注明原文地址。本人保留所有权利

© 著作权归作者所有

共有 人打赏支持
Tocy
粉丝 27
博文 50
码字总数 59635
作品 0
海淀
程序员
私信 提问
学习C++的50条,谨以送给C++的粉丝们

1.把C++当成一门新的语言学习(和C没啥关系!真的);   2.看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差);   3.看《The C++ Programming Language》(这...

地瓜儿
2013/01/11
1K
7
如何学习一门新的语言二——方法与步骤

之前发表过一篇文章,也是谈如何学习一门新的语言《如何学习一门新的语言》,这篇文章主要的关注点是心态。 今天这篇文章主要的关注点是具体的方法和步骤,是我学习C++和python的一些经验,整...

晨曦之光
2012/06/06
121
0
错误 LINK : fatal error LNK1158: 无法运行“rc.exe”

问题软件环境:Windows 10 Pro + Visual Studio 2015 然后安装了 Windows 10 SDKWindows 10 SDK 是用这个 ISO 文件安装的:17134.12.180419-0858.rs4releasesvcprod2WindowsSDK.iso 在 Visu......

大圣39
02/14
0
0
高性能服务器开发 2018 年原创汇总

版权声明:欢迎关注我的微信公众号:「easyserverdev」,中文名:『高性能服务器开发』。 https://blog.csdn.net/analogous_love/article/details/86483266 2018 年就这样过去了,总结一下 ...

analogous_love
01/14
0
0
OSChina 技术周刊第二十期 —— 使用 Docker 搭建 Java Web 运行环境

每周技术抢先看,总有你想要的! 移动开发 【软件】移动端web框架 Frozen UI 【博客】Android各种Adapter的用法 服务端开发/管理 【翻译】2014 Docker 的竞争随即而来 【翻译】Docker 和 PI...

OSC编辑部
2015/02/01
2.6K
2

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
1
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
1
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
10
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
3
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部