程序员的资源宝库

网站首页 > gitee 正文

计算机科学 计算机科学专业

sanyeah 2024-03-29 17:49:34 gitee 14 ℃ 0 评论

目录
  • 1. 计算机早期历史
    • 计算机的实质:
    • 关于计算的历史:
  • 2. 电子计算机
    • 电子计算机元器件变化:
    • 计算机的出现背景:
    • 电子计算机的发展:
  • 3. 布尔逻辑和逻辑门
    • 计算机为什么使用二进制:
    • 布尔代数
  • 4. 二进制
    • 二进制的原理,存储单元 MB/GB/TB 解释
  • 5.算数逻辑单元 - ALU
    • 什么是算术逻辑单元
    • 算术单元
    • 溢出的概念
    • 逻辑单元
    • ALU 的抽象
  • 6. 寄存器和内存
  • 7. 中央处理器(CPU)
  • 8. 指令和程序
    • 指令的执行
  • 9. 高级 CPU 设计
    • 现代 CPU 如何提升性能:
    • 缓存:
    • 缓存同步:
    • 指令流水线:
    • 同时运行多个指令流(多核 CPU)
    • 超级计算机(多个 CPU)
  • 10. 早期的编程方式
    • 早期,程序如何进入计算机
    • 早期计算机的编程
    • 现代计算机基础结构——冯诺依曼计算机
  • 11. 编程语言发展史
    • 早期二进制写代码
    • 汇编器&助记符
    • 最早高级编程语言“A-0”
    • 开始广泛应用的高级编程语言 FORTRAN
    • 通用编程语言——COBOL
    • 现代编程语言:1960s-2000
  • 12. 编程基础 - 语句和函数
  • 13. 算法入门
  • 14. 数据结构
  • 15. 阿兰·图灵
    • 可判定性问题
    • 阿隆佐邱奇,Lambda算子
    • 图灵机
    • 停机问题
    • 图灵测试
  • 16. 软件工程
  • 17. 集成电路与摩尔定律
  • 18.操作系统
  • 19. 内存&储存介质
  • 20. 文件系统
  • 21. 压缩
  • 22. 命令行界面
  • 23. 屏幕与 2D 图形显示
  • 24. 冷战和消费主义
  • 25.个人计算机革命
  • 26. 图形用户界面 (GUI)
  • 27. 3D 图形
  • 28. 计算机网络
  • 29. 互联网
  • 30. 万维网
  • 31. 计算机安全
  • 32. 奇点,天网,计算机的未来

本文不涉及具体的编程,而是从远到今来看计算机的发展史及展望它的未来。

1. 计算机早期历史

计算机的实质:

极其简单的组件,通过一层层的抽象,来做出复杂的操作。

计算机中的很多东西,底层其实都很简单,让人难以理解的,是 一层层精妙的抽象。像一个越来越小的俄罗斯套娃。

关于计算的历史:

提到的设备:算盘 → 步进计算器 → 差分机 → 分析机 → 打孔卡片制表机

  1. 公元前 2500 年,算盘出现,为十进制,功能类似一个计数器。
  2. 公元前 2500 年-公元 1500 年:星盘、计算尺等依靠机械运动的计算设备出现
  3. 公元 1613 年:computer 的概念出现,当时指的是专门做计算的职业,
  4. 1694 年:步进计算器出现,是世界上第一台能自动完成加减乘除的计算器。
  5. 1694-1900 年:计算表兴起,类似于字典,可用于查找各种庞大的计算值,但每次改设计了就需要做一张新表。
  6. 1823 年:差分机的设想出现,可以做函数计算,但计划最后失败。
  7. 19 世纪中期:Charles Babbage 提出了 "差分机", 在构造差分机期间,想出了分析机,设想存在可计算一切的通用计算机。Lovelace 给分析机写了假想程序,因此成为了第一位程序员。
  8. 1890 年:打孔卡片制表机。原理:在纸上打孔→孔穿过针→针泡入汞→电路连通→齿轮使计数+1。人口普查 10 年一次. Herman Hollerith 的打孔卡片制表机大大提升了效率。

2. 电子计算机

电子计算机元器件变化:

继电器→真空管→晶体管

计算机的出现背景:

20 世纪人口暴增,科学与工程进步迅速,航天计划成形。以上导致数据的复杂度急剧上升、计算量暴增,对于计算的自动化、高速有迫切的需求。柜子大小的计算机发展到房间大小

电子计算机的发展:

哈佛 Mark 1 号:使用继电器,用电磁效应,控制机械开关,缺点为有磨损和延迟。(IBM 1944 年做的)

bug(故障:最早是因为有虫子飞进去导致故障)。

巨人 1 号:使用真空管(三极管),制造出世界上第一个可编程的计算机。但编程麻烦,还要配置

1946 年 宾夕法尼亚大学的ENIAC:第一个电子通用数值积分计算机。

1947 年 贝尔实验室做出了晶体管,使用的是固态的半导体材料,相对真空管更可靠。IBM 很快全面转向晶体管。

硅谷的典故:很多晶体管和半导体的开发都是这里做的。而生产半导体最常见的材料是硅

肖克利半导体 → 仙童半导体 → 英特尔

1950s 空军 ANFSQ-7: 真空管到达计算极限。

1957 年 IBM 608: 第一个消费者可购买的晶体管计算机出现。

3. 布尔逻辑和逻辑门

计算机为什么使用二进制:

  1. 计算机的元器件晶体管只有 2 种状态,通电(1)&断电(0),用二进制可直接根据元器件的状态来设计计算机。
  2. 而且,数学中的“布尔代数”分支,可以用 True 和 False(可用 1 代表 True,0 代表 False)进行逻辑运算,代替实数进行计算。
  3. 计算的状态越多,信号越容易混淆,影响计算。对于当时每秒运算百万次以上的晶体管,信号混淆是特别让人头疼的的。

布尔代数

  1. 变量:没有常数,仅 True 和 False 这两个变量。

  2. 三个基本操作:NOT(非门)/AND(与门)/OR(或门)

    特殊的逻辑运算——XOR (异或门)

  3. 为什么称之为“门”:控制电流流过的路径(开关)

4. 二进制

二进制的原理,存储单元 MB/GB/TB 解释

计算机中的二进制表示:单个数字 1 或 0,1 位二进制数字命名为位(bit),也称 1 比特

字节(byte)的概念

1byte=8bit,即 1byte 代表 8 位数字。最早期的电脑为八位的,即以八位为单位处理数据。为了方便,将八位数字命名为 1 字节(1byte)。

byte 在电脑中的单位换算:

1kb=2^10bit = 1024byte =1000b

1TB=1000GB

1GB=十亿字节=1000MB=10^6KB

32 位与 64 位电脑的区别

32 位的最大数为 43 亿左右 32 位能表示的数字:0——2的32次方-1,一共2的32次方个数

64 位的最大数为 9.2*10^18

正数,负数,整数,浮点数的表示
美国信息交换标准代码 - ASCII, 用来表示字符
UNICODE 1992 年诞生,是字符编码标准, 解决 ASCII 不够表达所有语言的问题

5.算数逻辑单元 - ALU

什么是算术逻辑单元

命名:简称 ALUArithmetic&Logic Unit

组成:ALU 有 2 个单元,1 个算术单元和 1 个逻辑单元(Arithmetic Unit 和 Logic Unit)

作用:计算机中负责运算的组件,处理数字/逻辑运算的最基本单元

英特尔 74181

算术单元

1)基本组件:

  • 由半加器、全加器组成

  • 半加器、全加器由 AND、OR、NOT、XOR 门组成

2)加法运算

1 组件:AND、OR、NOT、XOR 门

2 元素:输入 A,输入 B,输出(均为 1 个 bit,即 0 或 1)

3)半加器:

  • 作用:用于计算个位的数字加减。

  • 输入:A,B

  • 输出:总和,进位

抽象:

sum:总和 carry:进位

4 )全加器:

作用:用于计算超过 1 位的加法(ex:1+1+1),由于涉及进位,因此有 3 个输入(C 充当进位)。

还可以用半加器与全加器做 8 位数的加法

溢出的概念

内容:在有限的空间内,无法存储位数过大的数,则称为溢出。

说明:第 8 位的进位如果为 1,则无法存储,此时容易引发错误,所以应该尽量避免溢出。

逻辑单元

作用:执行逻辑操作,如 NOT、AND、OR 等操作,以及做简单的数值测试。(检测数字是否为 0 的电路)

ALU 的抽象

作用:ALU 的抽象让工程师不再考虑逻辑门层面的组成,简化工作。

ALU 抽象成一个 “V” 符号

Flag 标志(是否相等,是否小于,是否溢出等等)

6. 寄存器和内存

当玩游戏、写文档时如果断电,进度会丢失,这是为什么?

原因是这是电脑使用的是 RAM(随机存取存储器),俗称内存,内存只能在通电情况下存储数据

Gated Latch - 锁存器:利用 AND、OR、NOT 逻辑门,实现存储 1 位数字的器件。(门锁)

Register - 寄存器:1 组并排的锁存器(存8位)

矩阵:以矩阵的方式来存放锁存器的组合件,n * n 门锁矩阵可存放 n^2 个锁存器,但同一时间只能写入/读取 1 个数字。(早期为 16*16 矩阵)

数据选择器/多路复用器 (Multiplexer):一组电线,解码 8 位地址,输入 2 进制的行址&列址,定位到单个锁存器

内存(RAM):随机存取存储器,由一系列矩阵以及电路组成的器件,可根据地址来写入、读取数据。类似于人类的短期记忆,记录当前在做什么事情。

7. 中央处理器(CPU)

  • CPU(Central Processing Unit):中央处理单元,负责执行程序。通常由寄存器/控制单元/ALU/时钟组成。与 RAM 配合,执行计算机程序。CPU 和 RAM 之间用“地址线”、“数据线”和“允许读/写线”进行通信。

  • 指令:指示计算机要做什么,多条指令共同组成程序。如数学指令,内存指令

  • 时钟:负责管理 CPU 运行的节奏,以精确地间隔,触发电信号,控制单元用这个信号,推动 CPU 的内部操作。

    • 时钟速度:CPU 执行“取指令→解码→执行”中每一步的速度叫做“时钟速度”,单位赫兹Hz,表示频率。

    • 超频/降频

      • 超频,修改时钟速度,加快 CPU 的速度,超频过多会让 CPU 过热或产生乱码。

      • 降频,降低时钟速度,达到省电的效果,对笔记本/手机很重要。

  • 微体系框架:以高层次视角看计算机,如当我们用一条线链接 2 个组件时,这条线只是所有必须线路的抽象。

8. 指令和程序

  • 指令:指示计算机要做什么的代码(机器码),多条指令共同组成程序。如数学指令,内存指令。
    • 注:指令和数据都是存在同一个内存里的。
  • 指令集:记录指令名称、用法、操作码以及所需 RAM 地址位数的表格。

指令的执行

  • 原则:

    • RAM 每一个地址中,都存放 0 或 1 个数据。

    • 特定的数字组合,就表示为一个指令,否则表示一个值。

  • LOAD 指令:

    • 计算机会按地址的顺序,读取 RAM 中所记录的指令/数据。

    • 计算机接受到指令后,如 LOAD_A,则通过数据线将数据传至寄存器 A。

  • ADD 指令:

    • ADD B A 指令告诉 ALU,把寄存器 B 和寄存器中的数字加起来,存到寄存器 A 中。
  • JUMP 指令:

    • 遇到 JUMP 指令,程序会跳转至对应的 RAM 地址读取数据。

    • JUMP 指令可以有条件跳转(如 JUMP-negative,是负数才跳转),也可以无条件跳转。

真正现代 CPU 用更多指令集。位数更长。
1971年的英特尔 4004 处理器,有 46 个指令
如今英特尔酷睿 i7, 有上千条指令

9. 高级 CPU 设计

  • 缓存:在 CPU 中的小块 RAM,用于存储批量指令。

    • ? 缓存命中:想要的数据已经在缓存里

    • ? 缓存未命中:想要的数据不在缓存里

    • ? 脏位:缓存里每块空间,有个特殊标记,叫脏位,用于检测缓存内的数据是否与 RAM 一致。

  • 多核处理器:一个 CPU 芯片中,有多个独立处理单元

现代 CPU 如何提升性能:

早期通过加快晶体管速度,来提升 CPU 速度。但很快该方法到达了极限。

后来给 CPU 设计了专门除法电路+其他电路来做复杂操作:如游戏,视频解码

缓存:

为了不让 CPU 空等数据,在 CPU 内部设置了一小块内存,称为缓存,让 RAM 可以一次传输一批数据到 CPU 中。(不加缓存,CPU 没位置放大量数据)

缓存也可以当临时空间,存一些中间值,适合长/复杂的运算。

脏位(Dirty bit):储存在缓存中与 RAM 不一致的数据

空等原因:从 RAM 到 CPU 的数据传输有延迟(要通过总线,RAM 还要时间找地址、取数据、配置、输出数据)。

缓存同步:

缓存同步一般发生在 CPU 缓存已满,但 CPU 仍需往缓存内输入数据。此时,被标记为脏位的数据会优先传输回 RAM,腾出位置以防被覆盖,导致计算结果有误。

指令流水线:

作用:让取址→解码→执行三个步骤同时进行。并行执行指令,提升CPU性能。

原本需要 3 个时钟周期执行 1 个指令,现在只需要 1 个时钟周期。

设计难点:数据具有依赖性 跳转程序

数据依赖性解决方法:乱序运行、预测分支(高端 CPU)

并行处理 - parallelize,乱序执行 - out-of-order execution,推测执行 - speculative execution, 分支预测 - branch prediction

同时运行多个指令流(多核 CPU)

多核处理器:一个 CPU 芯片中,有多个独立处理单元。但因为它们整合紧密,可以共享一些资源。

超级计算机(多个 CPU)

在一台计算机中,用无数个 CPU,做怪兽级的复杂运算,如模拟宇宙形成。09:34 多个 ALU

超级计算机,中国的"神威 太湖之光"

10. 早期的编程方式

早期,程序如何进入计算机

程序必须人为地输入计算机。早期,电脑无内存的概念,人们通过打孔纸卡等物理手段,输入数据(数字),进入计算机。

早期计算机的编程

  • 打孔纸卡/纸带:在纸卡上打孔,用读卡器读取连通电路,进行编程。原因,穿孔纸卡便宜、可靠也易懂。62500 张纸卡=5MB 数据

  • 插线板:通过插拔线路的方式,改变器件之间的连接方式,进行编程。

  • 面板****开关(1980s 前):通过拨动面板上的开关,进行编程。输入二进制操作码,按存储按钮,推进至下一个内存位,直至操作完内存,按运行键执行程序。(内存式电脑)

现代计算机基础结构——冯诺依曼计算机

冯诺依曼架构 - Von Neumann Architecture:冯诺依曼计算机的标志是,一个处理器(有算术逻辑单元)+数据寄存器+指令寄存器+指令地址寄存器+内存

第一款取得商业成功的家用计算机: Altair 8800

11. 编程语言发展史

伪代码:用自然语言(中文、英语等)对程序的高层次描述,称为“伪代码”

汇编器:用于将汇编语言装换成机器语言。一条汇编语句对应一条机器指令。

助记符(汇编器)

软件

早期二进制写代码

早期,人们先在纸上写伪代码,用"操作码表"把伪代码转成二进制机器码,翻译完成后,程序可以进入计算机并运行。(手工转二进制,很快就烦了)

汇编器&助记符

用 "助记符” 写代码(LOAD_A 14)为了把助记符转二进制,汇编器诞生 (Assembler)

作用:汇编器读取用"汇编语言"写的程序,然后转成"机器码"

最早高级编程语言“A-0”

葛丽丝·霍普 (Grace Hopper) - 哈佛1号计算机首批程序员, 海军军官, 设计了编程语言 A-0。Grace 1952 年做了第一个编译器 (Compiler),实现 A-0。

开始广泛应用的高级编程语言 FORTRAN

1957 年由 IBM1957 年发布,平均来说,FORTRAN 写的程序,比等同的手写汇编代码短 20 倍,FORTRAN 编译器会把代码转成机器码。但它只能运行于一种电脑中。

通用编程语言——COBOL

1959 年,研发可以在不同机器上通用编程语言。"普通面向商业语言",简称 COBOL

每个计算架构需要一个 COBOL 编译器,不管是什么电脑都可以运行相同的代码,得到相同结果。

现代编程语言:1960s-2000

1960s 起,编程语言设计进入黄金时代。

1960:LGOL, LISP 和 BASIC 等语言

70 年代有:Pascal,C 和 Smalltalk

80 年代有:C++,Objective-C 和 Perl

90 年代有:Python,Ruby 和 Java

12. 编程基础 - 语句和函数

变量, 赋值语句:

如:a=5,a是变量,把数字 5 放a里面.这叫"赋值语句"。

if 判断,while 循环,for 循环(比较基础就不细说了)
函数:当一个代码很常用的时候,我们把它包装成一个函数(也叫方法或者子程序),其他地方想用这个代码,只需要写函数名即可。

13. 算法入门

算法:解决问题的基本步骤

大O表示法-Big O notation(算法)的复杂度:算法的输入大小和运行步骤之间的关系,来表示运行速度的量级

归并排序 - Merge sort:算法复杂度为O(n*log n),n是需要比较+合并的次数,和数组大小成正比,log n是合并步骤所需要的的次数,归并排序比选择排序更有效率

Dijkstra 算法:一开始复杂度为O(n2),后来复杂度为O(nlog n +I)

14. 数据结构

数组 - Array
字符串 - String:注——字符串在内存里以0结尾
矩阵 - Matrix
结构体 - Struct
指针 - Pointer
节点 - Node
链表 - Linked List:链表可以是循环的也可以是非循环的,非循环的最后一个指针是0
队列 - Queue:先进先出(FIFO——first in first out)
栈 - Stack:后进先出(LIFO)
树 - Tree
二叉树 - Binary Tree
图 - Graph

注:不同数据结构适用不同场景

15. 阿兰·图灵

可判定性问题

是否存在一种算法,输入正式逻辑语句 输出准确的"是"或"否"答案?

阿隆佐邱奇,Lambda算子

美国数学家 阿隆佐·丘奇,开发了一个叫"Lambda 算子"的数学表达系统,证明其不存在。

图灵机

只要有足够的规则,状态和纸带,图灵机可以解决一切计算问题。和图灵机一样完备,叫做图灵完备。

停机问题

证明图灵机不能解决所有问题。

图灵测试

向人和机器同时发信息,收到的回答无法判断哪个是人,哪个是计算机,则计算机达到了智能程度。

16. 软件工程

对象 Object:对象可以包括其他对象,函数和变量。

面向对象编程 (Object Oriented Programming):把函数打包成对象的思想叫做“面向对象编程”,面向对象的核心是隐藏复杂度,选择性的公布功能。

API (Application Programming Interface):API控制哪些函数和数据让外部访问,哪些仅供内部。

集成开发环境, IDE (Integrated Development Environments)
调试 (debug)

文档和注释 (readme, comment):文档一般放在一个叫readme的文件里,文档也可以直接写成“注释”,放在源代码里,注释是标记过的一段文字,编译代码时,注释会被忽略。注释的唯一作用是帮助开发者理解代码。

版本控制 (Version control):又称源代码管理
质量控制 (Quality Assurance testing,QA):测试可以统称“质量保证测试”,作用是找bug

Beta, Alpha:beta版软件,即是软件接近完成,但没有完全被测试过,公司有时会向公众发布beta版,以帮助发现问题。alpha是beta前的版本,一般很粗糙,只在内部测试

17. 集成电路与摩尔定律

本集重点:晶圆的制作流程:光刻 (04:21~07:42)

分立元件( Discrete components)与数字暴政(Tyranny of Numbers)

一开始,计算机都有独立组件构成,叫"分立元件" , 然后不同组件再用线连在一起,这会导致计算机的构成很复杂,这个问题叫做数字暴政

数字暴政:意思是如果想加强电脑性能,就要更多部件,这导致更多线路,更复杂,所以很难做。(是 1960 年代工程师碰到的问题)

集成电路与仙童半导体

封装复杂性:与其把多个独立部件用电线连起来,拼装出计算机,不如把多个组件包在一起,变成一个新的独立组件。这种新的独立组件就叫集成电路(IC)

仙童半导体(用硅做成)让集成电路变成了现实。为了不用焊接或用一大堆线,发明了印刷电路板(PCB),他通过蚀刻金属线的方式把零件连接到一起

光刻0421(Photolithography)

用光把复杂图案印到材料上。我们把一片薄片状的硅叫做晶圆( Wafer),通过一系列生产步骤,将晶圆表面薄膜的特定部分除去的工艺叫做光刻

光刻胶 Photoresist、光掩膜 Photomask

摩尔定律 (Moore’s Law):每两年左右,得益于材料和制造技术的发展 ,同样大小的空间,能塞进两倍数量的晶体管

进一步小型化会碰到的问题

1、由于光的波长限制,精度已到极限。

2、量子隧穿效应:当晶体管非常小,电极之间可能只距离几个原子,电子会跳过间隙,会产生漏电问题

18.操作系统

操作系统 (Operating systems)

操作系统也是一种程序,不过它有操作硬件的特殊权限,可以运行和管理其他程序。

批处理 (Batch processing):一个程序运行后会自动运行下一个程序。
外部设备 (Peripherals)
设备驱动程序(Device drivers)
多任务处理 (Multitasking):操作系统能使多个程序在单个CPU上同时进行的能力,叫做“多任务处理”
虚拟内存 (Virtual Memory):多程序处理带来了一个程序所占用内存可能不连续的问题,导致程序员难以追踪一个程序,为了解决这个问题操作系统会把内存地址虚拟化,这叫“虚拟内存”。
动态内存分配 (Dynamic memory allocation):虚拟内存的机制使程序的内存大小可以灵活增减,叫做“动态内存分配”,对程序来说,内存看上去是连续的。
内存保护(Memory Protection):给每个程序分配单独的内存,那当这个程序出现混乱时,它不会影响到其他程序的内存,同时也能有效地防止恶意程序篡改其他程序,这叫做内存保护。

1970年代,计算机足够便宜,大学买了让学生用,多个学生用多个 "终端" 连接到主机

多用户分时操作系统(Multics):用来处理多用户同时使用一台计算机的情况,即每个用户只能用一小部分处理器,内存等,
Unix

19. 内存&储存介质

纸卡 (Paper punch cards)

问题:读取慢 难修改 难存临时值

延迟线存储器 (Delay Line Memory)

利用线的延迟在线里存储数据,又叫顺序存储器或者循环存储器。

存在问题:1 不能随意调出数据

? 2 难以增加内存密度

磁芯 (Magnetic Core Memory)

利用电磁感应原理;成本高

磁带 (Magnetic Tape)

访问速度慢

磁鼓 (Magnetic Drum Memory)
硬盘 (Hard Disk Drives)
内存层次结构 (Memory Hierarchy)

在计算机中,高速昂贵和低速便宜的内存混合使用以取得一个平衡

软盘 (Floppy Disk)
光盘 (Compact Disk)

原理:光盘表面有很多小坑,造成光的不同反射,光学传感器会捕获到,并解码为 1 和 0

固态硬盘(Solid State Drives):里面是集成电路

20. 文件系统

为什么要采用文件格式?

可以随便存文件数据,但按格式存会更方便

TXT 文本文件:ASCII

WAV 音频文件:每秒上千次的音频采样数字
BMP 图片文件:像素的红绿蓝 RGB 值
文件系统:很早期时空间小,整个存储器就像一整个文件。后来随容量增长,多文件非常必要
目录文件:用来解决多文件问题,存其他文件的信息,比如开头,结尾,创建时间等

平面文件系统 - Flat File System:文件都在同一个层次,早期空间小,只有十几个文件,平面系统够用

解决文件紧密的排序造成的问题

  1. 把空间划分成一块块

  2. 文件拆分存在多个块里

碎片整理

文件的增删改查会不可避免的造成文件散落在各个块里,
如果是磁带这样的存储介质就会造成问题,所以做碎片整理

分层文件系统 - Hierarchical File System:有不同文件夹,文件夹可以层层嵌套

21. 压缩

压缩的好处:能存更多文件,传输也更快
游程编码 (Run-Length Encoding)
无损压缩 Lossless compression
霍夫曼树 Huffman Tree

字典编码 Dictionary coders, 游程编码 和 字典编码 都是无损压缩
感知编码 Perceptual coding
有损压缩 jpeg 格式
时间冗余 Temporal redundancy
MPEG-4 视频编码

22. 命令行界面

本集重点:计算机早期同时输入程序和数据(用纸卡/纸带)
运行开始直到结束,中间没有人类进行操作,
原因是计算机很贵,不能等人类慢慢输入,执行完结果打印到纸上 (02:34)

到1950年代,计算机足够便宜+快,人类和计算机交互式操作变得可行
为了让人类输入到计算机,改造之前就有的打字机,变成电传打字机 (02:44~05:38)

到1970年代末,屏幕成本足够低,屏幕代替电传打字机,屏幕成为标配 (07:24)

00:32 人机交互 Human-Computer Interaction
00:50 早期输出数据是打印到纸上,而输入是用纸卡/纸带一次性把程序和数据都给进去
03:00 QWERTY 打字机的发展,克里斯托弗·莱瑟姆·肖尔斯 发明于 1868 年
05:38 电传打字机 Teletype machine
06:32 命令行界面 Command line interface
06:38 ls 命令
08:22 早期文字游戏 Zork (1977年)
08:47 cd 命令

23. 屏幕与 2D 图形显示

00:05 PDP-1 计算机。键盘和显示器分开,屏幕显示临时值
01:14 阴极射线管 Cathode Ray Tube (CRT)
01:38 CRT 有两种绘图方式:
矢量扫描 Vector Scanning
光栅扫描 Raster Scanning

02:14 液晶显示器 Liquid Crystal Displays (LCD),像素 (Pixel)
03:32 字符生成器 Character generator
03:45 屏幕缓冲区 Screen buffer
05:09 矢量命令画图
06:34 Sketchpad, 光笔 (Light pen)
09:00 函数画线,矩形

24. 冷战和消费主义

本集重点:冷战导致美国往计算机领域投入大量资源 (00:00~01:43)

范内瓦·布什 预见了计算机的潜力,提出假想机器 Memex
帮助建立 国家科学基金会,给科学研究提供资金 (01:43~03:43)

1950 年代消费者开始买晶体管设备,收音机大卖
日本取得晶体管授权后,索尼做了晶体管收音机,为日本半导体行业崛起埋下种子 (03:43~04:29)

苏联 1961 年把宇航员加加林送上太空,导致美国提出登月
NASA 预算大大增加,用集成电路来制作登月计算机 (04:29~06:27)

集成电路的发展实际上是由军事应用大大推进的,阿波罗登月毕竟只有 17 次
美国造超级计算机进一步推进集成电路 (04:29~07:11)

美国半导体行业一开始靠政府高利润合同活着,忽略消费者市场,1970年代冷战渐消,行业开始衰败
很多公司倒闭,英特尔转型处理器 (07:11~08:23)

末尾总结:政府和消费者推动了计算机的发展
早期靠政府资金,让技术发展到足够商用,然后消费者购买商用产品继续推动产品发展 (08:23~10:41)

25.个人计算机革命

本集:全是历史故事
00:18 1970年代初成本下降,个人计算机变得可行
01:51 Altair 8800
02:32 比尔·盖茨 和 保罗·艾伦写 BASIC 解释器
03:45 乔布斯提议卖组装好的计算机,Apple-I 诞生
04:40 1977年出现3款开箱即用计算机:
"Apple-II","TRS-80 Model I","Commodore PET 2001"

06:26 IBM 意识到个人计算机市场
IBM PC 发布,采用开放架构,兼容的机器都叫 IBM Compatible (IBM 兼容)
生态系统产生雪球效应:
因为用户多,软硬件开发人员更愿意花精力在这个平台
因为软硬件多,用户也更乐意买 "IBM 兼容" 的计算机

08:44 苹果选封闭架构,一切都自己来,只有苹果在非 "IBM 兼容" 下保持了足够市场份额

26. 图形用户界面 (GUI)

01:10 图形界面先驱:道格拉斯·恩格尔巴特(Douglas Engelbart)
03:20 1970年成立 帕洛阿尔托研究中心(Palo Alto Research Center)
03:29 1973年完成 Xerox Alto(施乐奥托) 计算机
04:42 举例:写一个简单的 GUI 程序
06:38 1981年的 Xerox Star system(施乐之星系统)
08:18 史蒂夫·乔布斯去施乐参观
07:45 所见即所得 WYSIWYG
09:15 1983年推出 Apple Lisa
09:31 1984年推出 Macintosh
10:12 1985年推出 Windows 1.0,之后出到 3.1
10:43 1995年推出 Windows 95 提供图形界面
11:08 1995年微软做失败的 Microsoft Bob

27. 3D 图形

01:15 线框渲染 Wireframe Rendering
01:39 正交投影 Orthographic Projection
01:50 透视投射 Perspective Projection
02:14 网格 Mesh
02:37 三角形更常用因为能定义唯一的平面
03:09 扫描线渲染 Scanline Rendering
05:04 遮挡 Occlusion
05:19 画家算法 Painter's Algorithm
06:09 深度缓冲 Z Buffering
07:45 Z Fighting 错误
07:51 背面剔除 Back Face Culling
08:53 表面法线 Surface Normal
09:33 平面着色 Flat Shading
09:43 高洛德着色 Gouraud shading, 冯氏着色 Phong Shading
10:06 纹理映射 Texture Mapping
11:24 图形处理单元 GPU, Graphics Processing Unit

28. 计算机网络

02:05 局域网 Local Area Networks - LAN
02:36 媒体访问控制地址 Media Access Control address - MAC
02:55 载波侦听多路访问 Carrier Sense Multiple Access - CSMA
05:18 指数退避 Exponential Backoff
05:36 冲突域 Collision Domain
07:08 电路交换 Circuit Switching
07:36 报文交换 Message Switching
10:20 分组交换 Packet Switching

29. 互联网

02:23 IP - 互联网协议 - Internet Protocol
03:00 UDP - 用户数据报协议 - User Datagram Protocol
03:41 校验和 - Checksum
05:26 TCP - 传输控制协议 - Transmission Control Protocol
08:21 DNS - 域名系统 - Domain Name System
10:47 OSI - 开放式系统互联通信参考模型 - Open System Interconnection

30. 万维网

01:01 超链接 Hyperlinks
02:20 URL - 统一资源定位器 - Uniform Resource Locator
03:01 HTTP - 超文本传输协议 - HyperText Transfer Protocol
04:13 HTML - 超文本标记语言 - HyperText Markup Language
04:24 写一个简单网页,用到了 <h1> <a> <h2> <ol> <li> 标签
06:04 第一个浏览器和服务器是 Tim Berners-Lee 花了 2 个月在 CERN 写的
06:32 1991年正式发布,万维网就此诞生
07:19 开始讲搜索引擎的故事
07:40 Jerry 和 David 的万维网指南 后来改名成 Yahoo
07:52 搜索引擎 JumpStation
09:07 搜索引擎 Google
09:20 网络中立性

31. 计算机安全

01:00 Secrecy, Integrity, Availability
保密性, 完整性, 可用性
01:49 Threat Model 威胁模型
03:14 身份验证 (Authentication) 的三种方式:
What you know, 你知道什么
What you have, 你有什么
What you are, 你是什么****
07:34 访问控制 Access Control
08:48 Bell LaPadula model 不能向上读取,不能向下写入
11:00 隔离 Isolation, 沙盒 Sandbox

32. 奇点,天网,计算机的未来

01:21 普适计算 Ubiquitous Computing
04:55 奇点 Singularity
06:51 把工作分为4个象限,讨论自动化带来的影响
10:15 机器人的存在时间可能长过人类,可以长时间探索宇宙

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表