为了写大型程序,程序员们使用了各种工具和方法,形成了软件工程
这门学科。
软件工程这个词由NASA工程师Margaret Hamilton创造。她帮助NASA在阿波罗计划中避免出现严重问题。她的经典名言:
这有点像牙齿的根管治疗:你总是拖到最后才做,但有些事情可以事先做好。有点像预防性体检,只不过是预防软件出错。
尽管可以将大项目分解为小函数,每个人同时工作,不用关心整个项目,只关心自己的函数高效和正确就好啦,然而把代码打包成函数还是远远不够的。
比如微软Office软件有近4000万行代码,打包成函数也还有几十万个,也还是也有点多。
解决办法是,把函数再次打包成为层级,把相关的代码都放到一起,打包成对象(objects)
。
把函数打包成为对象的思想叫做“面向对象编程”
。
对象可以包含对象,函数,变量。子对象也是同样的,所以会出现沿着对象层级一层层找执行函数的做法。
软件工程的比喻
:
就像建造摩天大一样,有管道工配置管道,电工装电线,油漆工涂油漆,还有成败上千人做其他的事情。
所以一个大团队中有许多小团队,不同小团队之间负责不同的功能,所以不同团队之间需要文档,才能帮助理解代码都在做什么,还需要定义好的程序编程接口(API)
API帮助不同程序员合作,不需要直到细节,只要直到怎么使用就好了。
然后private与public
提供不同的权限,哪些不让外部访问,哪些仅供内部访问。
面向对象的核心
:
代码在编译之前只是文字,可以用任何文本处理程序写代码,但是一般来时,还是会用专门的工具来写比较好。
IDE提供了许多有用功能,因为集成了所有的东西,所以叫IDE。
程序员另一项重要工作是给代码写文档
文档一般放在readme中
文档也可以写成注释,放在源代码中
好的文档的作用:
源代码管理,帮助团队协作,也叫版本控制。弄懂git原理即可。
写代码与测试代码密不可分。
测试也称为质量保证测试(QA,quality assurance testing)
。
严格测试软件的方方面面,看软件会不会出错,也就是找Bug。
beta版软件(beta software)
:意思是软件接近完成,但不是百分之一百通过测试过,公司有时会向公众发布beta版本,以帮助发现问题。alpha版软件(alpha version software)
:一般很粗糙,错误多,只在公司内部测试。
Crash Course Computer Science
Update your browser to view this website correctly. Update my browser now