1 c++开发环境搭建
- 操作系统(OS):Linux ,这里使用ubuntu20.04。推荐购买云服务器,然后xshell远程链接学习。推荐配置免密登陆。
- Tools: Vscode
- 插件:https://zhuanlan.zhihu.com/p/113222681
2 简单回顾
2.1 编程语言的演化
初期:二进制编程,面向机器的01操作。
缺点:不具可读性,编写难。
发展:汇编语言,面向硬件,即指令直接操作硬件的机器语言。
操作:助记符代替机器指令码01,增强了程序的可读性和编写难度,汇编也称符号语 言。语言的第一次进化----符号化。
缺点:不可移植。
过渡:b-语言
进化: c-语言,面向过程,结构化语言。强调算法的整个过程。提高了编程的可靠性,可移植性。
缺点:大型程序设计不友好。
成熟: c++, 面向对象,c-语言增强版,强调数据或者功能。增强了代码的复用与扩展性
2.2 谈谈面向过程与面向对象(OOP)的区别?
面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现。面向对象是以功能来划分问题,而不是步骤。如设计五子棋,面向过程的设计思路就是分析问题的步骤:(自顶向下)
1-开始游戏,2-黑子先走,3-绘制画面,4-判断输赢,5-轮到白子,6-绘制画面,7-判断输赢,8-返回步骤2,9-输出最后结果。
面向对象的设计思想来解决以上问题。面向对象的设计则是从另外的思路来解决问题:
1、黑白双方:这两方的行为是一模一样的(可以下棋) 2、棋盘系统:负责绘制画面(棋盘) 3、规则系统:负责判定如犯规、输赢等。 4、组合对象行为即可。
面向过程的优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发。
面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
2.3 在学习编程之前需要了解一下何为程序?
-
程序是一个指令序列。
-
程序 = 数据结构+算法
-
计算机处理的两个核心概念是数据与算法。数据可理解为存储计算机的可用资源,算法则表示资源的使用方法。需要注意的是受制于计算机物理结构以及便于算法设计,出现了中间概念数据结构。
-
如果有人提前了解过进程的概念,这里需要和程序区别一下。简单的说,进程(动态)是指一个运行的程序(静态)。
3 c++的编译过程
# 准备简单测试源程序:test.cpp(内容可以为:Hello World!)
# 1 预处理:宏替换与库代码加载,代码体量变大,test.i。
gcc -E test.cpp -o test.i
# 2 编译:将预处理代码转换为汇编码,test.s(汇编文件)
gcc -S test.i -o test.s
# 3 汇编:将汇编码转换为二进制机器码,test.o(模板文件)
gcc -c test.s -o test.o
#4 链接:将多个目标文件及库文件链接成最终可执行文件
gcc test.o -o test
至此,对c++有了大致的认识,但是许多深入概念需要进一步学习。下一节学习c++ 静态库/动态库制作。