C++编程
为什么要学习C++
●C++是当代计算机领域最重要的编程语言
●可以学习计算机程序设计的核心思想和编程范式(Paradigm) :
面向对象(00),
高性能,
函数式,
泛式编程
C++全都有!
●是学一门语言,更是学习抽象思维方式和逻辑方法论
●C++拥有极其广泛的应用和无可匹敌的生态
C++的历史
●B语言(Basic Comb ined Progr amming Language)
●type less以内存字(word)为基础
●recursive,non-numer ic,mach i ne- i ndependent
●主要为了Multics (Unix前身) 而开发
●B语言实例
/*from Users Reference to B by K. Thompson*/
printn(n, b) {extrn putchar;auto a;if(a= n/ b) /*assignment indeed!*/printn(a, b); /*recursive*/putchar(n %b + '0');
}
实线:功能继承
段线:主要功能借鉴(major)
虚线:次要功能借鉴(minor)
当我们谈C++,谈些什么?
●第一个阶段(1979 - 1995) :储备
●CwithClasses
●面对对象(OO)思想
●第二个阶段(1996 - 2000) :完善
●标准模板库(STL)
●Boost
●第三个阶段(2000 -今天) :腾飞
●模板元编程
●MPL库
●Modern C++: Lambda, type deduct ion...
C++常见问题
●跨平台.
●内存
●库
●缺少什么功能
C++学习路径
本文的目标?
●有信心的C++程序员
●了解C++的核心设计思想
●掌握C++面向对象的设计思想
●能够看懂,调试,甚至贡献C++开源项目
●为成为C++后端和核心开发人员作准备
●引领你来到C+ +程序设计这条康庄大道上,给你必备的工具和方法,
还有燃起你心中对编程,对计算机,对漂亮、优雅、安全、高效代
码的熊熊烈火!
课程结构
●编程的本质
●面对对象设计思想
●课程结构
●课程思想与特色
编程的本质
寻找算法对应的最基础的代数结构
-------Alexander Stepanov (STL之父)
●编程->计算(comput ing)
●计算->建模(modeling)
●建模->抽象(abstraction)
●抽象->设定范围(context)
在给定的范围内,通过抽象和建模的方式来解决计算问题,就是编程
编程的步骤
●IPO 算法模式: Input/Process/ Output
●分析
要解决什么问题
先决条件,边界条件,
已知元素等
例子:飞机起 飞时最大安全重量
●设计
算法和必要步骤
●实现
编写,运行代码
测试、调试、优化代码等
面向对象的设计思想
●抽象层次的提出
●抽象数据类型(ADT)
封装
数据
操作
●接口和重用
例子:灯泡,开关,账户等等
主要课程教材
● 主要教材: C++编程思想(Thinking in C++)
● 辅助教材: C++程序设计语言(C++)
● 辅助教材:软件调试的艺术 (GDB调试简要手册)
如何学好C++?
●实践是检验真理的唯一标准。.
●不断的实践是检验并且掌握真理的唯一标准。
熟悉我们的开发环境
必备的软件:
●Virtual Box
●MobaXTerm (Win),Terminal (Mac/Linux)
●我们的VM (虚拟机)里有啥:
●操作系统: Debian 10
●编译器: GCC,GI ibc,GDB ,CI ang,LLDB
●编辑器: Emacs: He |m,TabN i ne等。
●其他: Git,Fish Shell,等
●开源的力量!
恭喜你,你已经准备好踏入C++之旅了。在开始学习C++编程以前,要明白:工欲善其事,必先利其器。所以:你需要先熟悉我们在这门课中要使用的编辑器: Emacs!
熟悉Emacs基本操作:
启动emacs:
wanmen@debian” ~ > emacs&
你会看到这样-一个界面: .
Bscreen Shot 2019- 08- 09 at 1.36.41 PM
现在你需要按下: Control + h t (同时按下Control和h,然后松开再按下t。注意松开和按下间隔不要太长。)
你会进入如下Emacs快速指南: D-Screen Shot 2019-08-09 at 11.38.45 PM