CrashCourseComputerScience

课程全名:Crash Course Computer Science

学习资料:

  1. Youtube 原视频
  2. b站搬运中字视频

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设计遇到的问题:

  1. 可用光已经用到极紫外光,精度几乎已经达到极限
  2. 量子隧道:晶体管距离过近就会产生电子贯穿,漏电

18 操作系统

Hint

早期计算机计算过程比较慢,可以手动放入卡纸再等带结果。但是随着计算机运行效率的指数增长,手动放入卡纸再提取卡纸手机结果过于缓慢,需要一种能让计算机自动运行的设计

操作系统:是计算机第一个启动的软件,有着管理其他程序的权限。

批处理:用户一次性输入多个程序,操作系统自动连续执行,使得处理器无间歇运行。

外设(peripherals):键盘,打印机等

设备驱动程序(device drivers):操作系统提供的,来抽象硬件的API,便于程序员通过标准化机制与I/O(输入输出硬件)交互

多任务处理:操作系统在一个程序需要等待结果时,先运行下一个,等得到结果时,再接续运行。实现多个程序的穿插执行。

虚拟内存,动态内存分配:操作系统提供物理内存到虚拟内存的映射,让程序可以不连续的分布储存(但是程序认为自己的内存是连续的)。

内存保护:当多个用户的时候,操作系统不让一个用户侵占别的用户的内存。

分时操作系统:当多个用户的时候,操作系统自动实现分给每个用户一部分计算机算力。

操作系统的内核:本概念最早出现在UNIX中,小巧便于使用,只具有最基本的功能:内存管理,多任务,I/O控制,没有内存保护这类,容易崩坏

内核恐慌:在UNIX中,内核崩溃会输出连续的panic,要重启电脑才能实现