课程全名:Crash Course Computer Science
学习资料:
16 软件工程
Hint
传统的软件开发方法逐渐暴露出了一系列问题,尤其是在大规模和复杂的软件系统开发中。
软件危机(Software Crisis):传统开发项目质量差、进度延迟、成本超支、维护困难,难以控制复杂性。
对象,属性函数,层层向下的想法——==面向对象的编程,隐藏复杂度,选择性公布功能==
OO语言
:Object oriented
面向对象的编程语言,C#,C++,objective-C,python,Java
Note
之前我对面向对象的理解是错误的,面向对象是指面向程序的使用者,是用户思维的体现。
documentation
帮助文档,documenting
写注释
application programming interface (API)
:实现不同部门合作时候的成果调用
intergrated development environment (IDE)
:集成开发环境
- 写代码
- 高亮
- 合作
- 调试,占据70%的时间精力
- 出错定位
- 给出建议
- 源代码管理,版本控制
repo
,代码仓库check it out
,从仓库取出要改动的代码,被取出的代码别人不会再取,也称为拉取分支- 在自己的电脑上,加新功能,测试。
- 在测试通过之后,进行
commit
,提交回去,也称为推送分支 - 回滚,主分支在被发现产生错误的时候,可以回到旧版本。
QA
:质量检测,保证软件的正常运行
软件的alpha
版本:初步写完,内部测试,粗糙。
软件的beta
版本:几乎完成,公测版,挑出难以发现的问题
17 集成电路
Hint
如何解决数字暴政:为了提升性能会产生大量的电子元件,体积和连接方式如何简化是主要问题。
集成电路(IC):把电子元件全部集成到一个微型电路板上
集成电路的产生依赖仙童半导体,仙童公司所在地后来成为硅谷。
印刷电路板(PCB):实现电子元件中的连接部分,连接IC组件
光刻:重要的制作IC的方法。
摩尔定律(趋势):给定芯片上的晶体管数量大约每两年就会增加一倍
visi
软件:用于设计集成电路
逻辑综合:设计集成电路的思路,用软件自动生成IC构造
目前IC设计遇到的问题:
- 可用光已经用到极紫外光,精度几乎已经达到极限
- 量子隧道:晶体管距离过近就会产生电子贯穿,漏电
18 操作系统
Hint
早期计算机计算过程比较慢,可以手动放入卡纸再等带结果。但是随着计算机运行效率的指数增长,手动放入卡纸再提取卡纸手机结果过于缓慢,需要一种能让计算机自动运行的设计。
操作系统:是计算机第一个启动的软件,有着管理其他程序的权限。
批处理:用户一次性输入多个程序,操作系统自动连续执行,使得处理器无间歇运行。
外设(peripherals):键盘,打印机等
设备驱动程序(device drivers):操作系统提供的,来抽象硬件的API,便于程序员通过标准化机制与I/O
(输入输出硬件)交互
多任务处理:操作系统在一个程序需要等待结果时,先运行下一个,等得到结果时,再接续运行。实现多个程序的穿插执行。
虚拟内存,动态内存分配:操作系统提供物理内存到虚拟内存的映射,让程序可以不连续的分布储存(但是程序认为自己的内存是连续的)。
内存保护:当多个用户的时候,操作系统不让一个用户侵占别的用户的内存。
分时操作系统:当多个用户的时候,操作系统自动实现分给每个用户一部分计算机算力。
操作系统的内核:本概念最早出现在UNIX
中,小巧便于使用,只具有最基本的功能:内存管理,多任务,I/O
控制,没有内存保护这类,容易崩坏
内核恐慌:在UNIX
中,内核崩溃会输出连续的panic,要重启电脑才能实现