Skip to content

计算机科学入门

为了写大型程序,程序员用各种工具和方法,所有这些形成了 软件工程 学科。

这个词由工程师 Margaret Hamilton 创造

image-20231018153806117

她帮助 NASA 在阿波罗计划中避免了严重问题。

面向对象编程

把大项目 分解成小函数 可以让多人同时工作,不用关心整个项目,关心自己的函数就好了,如果你的任务是写排序算法,你只需要确保高效和正确就可以了。

然而把代码打包成函数 依然不够 ,如果只是这样,微软 Office 会有几十万个函数。

image-20231018154502125

解决办法是:把函数打包成层级,把相关代码都放在一起,打包成对象(objects)

image-20231018154514147

例如,汽车软件中可能有几个和定速巡航有关的函数,比如 设定速度逐渐加速减速停止定速巡航 ,因为这些函数都相关,可以包装成一个 定速巡航对象

定速巡航 只是引擎软件的一部分,可能还有 火花塞点火燃油泵散热器 ,我们可以做一个 引擎对象 来包括所有 对象,除了子对象, 引擎对象 可能有自己的函数,比如 开关引擎 ,它也会有自己的变量,比如汽车行驶了多少英里,总的来说,对象可以包其它对象,函数和变量。

image-20231018154429127

当然,引擎对象 只是"汽车对象"的一部分,还有传动装置,车轮,门,窗等。

编程语言经常用类似这样的语法,把函数打包成对象的思想叫 面向对象编程 ,这种思想和之前类似,通过封装组件,隐藏复杂度,之前把晶体管打包成了逻辑门,现在软件也这样做。

API

把大型软件(如汽车软件)拆成一个个更小单元,适合 团队合作

一个团队负责定速巡航系统,团队里的一位程序员负责其中一些函数,定速巡航 要用到引擎的 其它 函数,来保持车速,定速巡航团队不负责这些代码,另一个团队负责。

因为是其他团队的代码,定速巡航团队需要 文档 帮助理解代码都做什么,以及定义好的 程序编程接口 -简称 API

API 帮助不同程序员合作不用知道具体细节,只要知道怎么使用就行了。

权限

API 控制哪些函数和数据让 外部访问 哪些 仅供内部

面向对象 的编程语言 可以指定函数是 publicprivate ,来设置权限。

image-20231018162237822

如果函数标记成 private ,意味着 只有 同一个对象 内的其他函数能调用它。

面向对象编程 的核心是 隐藏复杂度 ,选择性的公布功能,因为做大型项目很有效,所以广受欢迎。

面向对象的编程语言

计算机上几乎所有软件,游戏机里几乎所有游戏,都是 面向对象 编程语言写的,比如 C++ , C# , Objective-C 等,你可能听过 Python Java

IDE

有一点很重要:代码在编译前就只是文字而已。

前面提过,你可以用记事本或任何文字处理器,有人确实这样做,但一般来说,现代软件开发者 会用专门的工具来写代码。

工具里集成了很多有用功能帮助写代码,整理,编译和测试代码,因为集成了所有东西,因此叫 集成开发环境 ,简称 IDE

image-20231018162145987

所有 IDE 都有写代码的界面,还带一些有用功能,比如 代码高亮 ,来提高可读性,许多 IDE 提供实时检查,比如拼写,检查语法。

大型项目有很多源代码文件,IDE 帮助开发者整理和看代码。

很多 IDE 还可以直接编译和运行代码,IDE 可以定位到出错代码,还会提供信息 帮你解决问题,这叫 调试(debug)。调试很重要,大多数程序员会花 70%~80% 时间调试,而不是在写代码。

编辑器和 IDE

编辑器和 IDE 不是一回事,你可以把编辑器当作高级的记事本,它只有一些基本功能,你可以通过加 插件 来让它拥有更多的功能,相对的编辑器也更加 轻量

常见的编辑器:vscode、vim、sublime……

常见的 IDE :IDEA、Pycharm、Clion……

README

除了写代码和调试,程序员工作的另一个重要部分是 给代码写文档

文档一般放在一个叫 README 的文件里,告诉其他程序员,看代码前先看这个文件。

在代码托管平台中, README 文件会被展示在首页,让其他程序员 初步 了解你的代码。

image-20231018160752389

注释

注释是标记过的一段文字,编译代码时注释会被 忽略 ,注释存在的唯一作用就是 帮助开发者理解代码

你可能第二天就忘记昨天写的代码是干什么的了。

对其他人也很重要,最糟糕的就是拿到一堆代码,没有任何注释和文档,结果得逐行读代码,理解到底干嘛的。

写代码最烦的有两种人:让我写注释的人和不写注释的人。

版本控制

除了 IDE,还有一个重要软件帮助团队协作,叫做源代码管理,也叫 版本控制 (version control)。

软件公司会把代码放到一个中心服务器上,叫 代码仓库 ,当一段代码写好后可以将它上传到代码仓库中,别人也可以从代码仓库把代码拉取下来,不需要用 U 盘。

常用的版本控制软件是 git ,你可能听过 github 或者 gitee ,这都是基于 git 的代码托管平台。

代码的主版本 (master),应该总是编译正常,尽可能少 bug,但有时 bug 还是会出现,幸运的是,源代码管理可以跟踪所有变化,如果发现 bug ,全部或部分代码,可以 回滚 到之前的稳定版。

测试

写代码和测试代码密不可分,测试一般由个人或小团队完成,测试可以统称 质量保证测试 ,简称 QA

严格测试软件的方方面面,模拟各种可能情况,看软件会不会出错,基本上就是 找 bug

解决大大小小的错误需要很多工作,但对确保软件质量至关重要,让软件在各种情况下按预期运行。

beta

你可能听过 beta 版 软件,意思是软件接近完成,但不是 100% 完全测试过,公司有时会向公众发布 beta 版,以帮助发现问题,用户就像免费的 QA 团队。

WARNING

作为用户,很多人喜欢尝试最新版本甚至是测试版本,但作为开发者,请不要使用最新版本,因为这意味着很多 bug 。

alpha

你听过比较少的是 beta 版之前的版本:alpha 版本。

alpha 版一般很粗糙,错误很多,经常只在公司内部测试

用心去做高质量的编程学习内容网站,欢迎star ⭐让更多人发现!