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

在工作快三年的时候,突然想到我需要凝练下自身的知识体系。从大一开始接触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,请勿用于商业用途,转载请注明原文地址。本人保留所有权利

时间: 2024-10-10 22:03:55

2015-06学习总结——c++的相关文章

2015.11.06 学习Ubuntu下常用命令

2015.11.06 学习Ubuntu下常用命令 1.关闭防火墙:ufw disable 2.开启防火墙:ufw enable 3.防火墙状态:ufw status 4.查看占用的端口:#lsof -i 5.查看某一个端口:#lsof -i:8080  或者是: #netstat -apn|grep 8080————接着:#ps -aux|grep 进程号 6.结束占用端口的进程:#killall 进程名 7.自己写一遍,记得牢!

我的2015技术学习流水账

我的2015技术学习流水账 2015年马上就要过去了,匆匆忙忙地又是一年.回头总结整理,发现这一年还挺充实的.在正常上班工作之余,学习到了不少新东西,不禁感到很欣慰!一个多月前就开始写,终于赶在2016年来临之前写完了这篇文章-- 关于本文,尽管叫做流水账,但是出于程序员条理性的"强迫症",还是进行系统分类,分类方法参照Thoughtworks技术雷达的Tecniques.Languages & Frameworks.Tools.Platforms,将其中的Tecniques改

2015.06.02,学习,读书笔记-《把你的英语用起来》学习笔记(2)

因为自己阅读英文原著也好,翻译也好,总感语法有些力不从心,自己以前总以为是句子结构的问题,可现在发现,可能还是语法这一关从高中之后,便遗忘殆尽,所以要想读懂复杂的长句难句,可能还是得从语法开始. 这次阅读学习的是<把你的英语用起来>的2.5 英文语法的学习. 他这里只推荐了一本语法书,台湾施元佑老师的<文法俱乐部>,简体版叫做<语法俱乐部>.自己有这本书的两种版本的pdf文件,有需要可以跟自己发邮件索取. 书里总结了学习语法的目的: 为了能看懂句式复杂的段落文章: 写作

2015.06.16,学习,学习笔记-《通过翻译学英语》学习笔记(1)

Ex1:按人口计算,中国是世界上最大的国家:按领土面积计算,是第三大国家,仅次于俄罗斯和加拿大. 个人翻译:Accounting on / According to the popularity, China is the largest country in the world; and on the area, it's the third largest country, only less than Russia and Canada. 讨论: “按..计算”,用according to

2015.06.15,学习,读书笔记-《语法俱乐部》学习笔记

第一篇先介绍简单句,从基本句型切入.第二篇探讨的是复句和合句.第三篇的简化从句又建立在第二篇复句.合句的基础上. 第一章:基本句型及补语 提出了五种基本句型: S+V,主语+动词 S+V+O,主语+动词+宾语 S+V+C,主语+动词+补语 S+V+O+O,主语+动词+宾语+宾语 S+V+O+C,主语+动词+宾语+补语 笔记: 像die这种可以独立发生.不牵涉别的人或物,这种动词叫做不及物动词:像kill这种动作,必须发生在另一个对象身上,叫做及物动词,后面通常必须跟着一个宾语来接受这个动作. 系

2015年学习目标

2015学习目标大纲: 1.移动终端手机APP测试 2.手机APP性能测试 3.手机APP自动化测试 4.计算机英语 2015学习目标细则: 3月份学习完Monkey,在项目中熟练使用,如果时间有余,就看完光荣之路整个移动测试课(9节课). 3月份-5月份看完Google测试之道

2015应该学习的前端语言与框架

前端语言与框架有很多种,你知道2015哪种前端语言是最值得学习的吗? 语言/平台 Node.js第一,PHP第二,JavaScript第三.因为Node.js的社区很多,所以这个结果你也不用太意外.如果你知道JavaScript,你已经一只脚踏进了用Node.js来构建Web APP的可能. 框架 AngularJS处于框架的领导地位.大量的公司和企业已经采用Angular,这就要求开发者更多的具备使用这个框架的技能.主要还是因为有Google里最好的工程师支持. 2015你应该学习的 很多的库

2015 IOS 学习笔记 面向对象 初始化方法 ——蓝懿教育

今天学习了面向对象以及初始化方法,这个在实际应用中比较重要,也比较抽象,所以要具体在实例中才能理解. ————————面向对象有三大特性—————— 一.封装 封装是对象和类概念的主要特性.它是隐藏内部实现,稳定外部接口,可以看作是“包装”.封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. 好处:使用更简单变量更安全可以隐藏内部实现细节开发速度加快 OC中一个类可以继承另一个类,被继承的类成为超类(superclass),继承的

蓝懿 2015 IOS 学习笔记 数字运算 随机值 图形关联

来蓝懿教育学习的第一天,由刘国斌老师独家授课教学,一天下来感觉很充实,并且在没有任何基础之上学到如何在Xcode中运用简单的数字运算与图形关联方法.刘老师教课方式比较有趣生动,班级很活跃,我们这一批学员人数较少,所以学习气氛浓郁,把今天的笔记整理一下. ————————————首先是简单数字运用计算——————————————— ? ? int c =1231233123; float a = 10; float b = 232.23; float d = a-b-c; NSLog(@"%f&q

蓝懿 2015 IOS 学习笔记 作用域 if判断 BOOL变量

我来自蓝懿教育 第二天学习了简单的计算器加减乘除的运算,变量,BOOL变量,以及if判断.掌握情况较为良好. 首先学习了简单计算器.在界面中输入两个添加数值的UITextview,在其中添加数字类型的数值,并且在下方有四个Button分别代表加减乘除,然后再放置两个Label作为符号显示与计算结果.图形是这样的: ————————随后学习的全局变量———————— 全局变量与局部变量的区别: 全局变量就是整个源程序都有效的变量:而局部变量会在其所属的函数或循环等结束后消亡.整个程序都要用的变量定