# 1 计算机早期历史

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

提到的人名:Charles Babbage,Ada Lovelace

  1. 最早的计算设备是算盘,举例如何使用
  2. Computer 从指代职业变成指代机器
  3. 机器里有名的是:步进计算器。第一个可以做加减乘除的机器
  4. 炮弹为了精准,要计算弹道,二战是查表来做。但每次改设计了就需要做一张新表
  5. Charles Babbage 提出了 “差分机”,在构造差分机期间,想出了分析机,分析机是通用计算机
  6. Lovelace 给分析机写了假想程序,因此成为了第一位程序员
  7. 人口普查 10 年一次,Herman Hollerith 的打孔卡片制表机大大提升了效率

# 2 电子计算机

提到的设备:继电器 -> 真空管 -> 晶体管

  1. 20 实际的发展要求更强的计算能力。柜子大小的计算机发展到房间大小
  2. 哈佛 Mark 1 号,IBM 1944 年做的
  3. 继电器,继电器一秒 50 次开关
  4. 继电器出 bug
  5. 1904 年,热电子管出现,第一个真空管。改进后变成和继电器的功能一样
  6. “巨人 1 号” 计算机在英国 布莱切利园 首次大规模使用真空管。但变成麻烦,还要配置
  7. 1946 年,宾夕法尼亚大学 的 ENIAC 是第一个通用可编程计算机
  8. 1947 年,贝尔实验室做出了晶体管,晶体管有诸多好处,IBM 很快全面转向晶体管
  9. 硅谷的典故:很多晶体管和半导体的开发都是这里做的。而生产半导体最常见的材料是硅
  10. 肖克利半导体 -> 仙童半导体 -> 英特尔

# 3 布尔逻辑和逻辑门

  1. 什么是二进制,为什么用二进制,布尔逻辑
  2. 3 个基本操作:NOT,AND,OR
  3. 解释 3 个基本操作
  4. XOR 异或

# 4 二进制

  1. 用十进制举例二进制的原理,演示二进制加法。存储单位 MB GB TB 等
  2. 正数,负数,整数,浮点数的表示
  3. 美国信息交换标准代码 - ASCII,用来表示字符
  4. UNICODE 1992 年诞生,是字符编码标准,解决 ASCII 不够表达所有语言的问题

# 5 算数逻辑单元 - ALU

  1. 简单介绍 ALU,英特尔 74181
  2. ALU 有 2 个单元,1 个算数单元和 1 个逻辑单元
  3. 算术单元
    • 半加器(处理 1 个 bit,2 个输入)
    • 全加器(处理 1 个 bit,3 个输入)
    • 8 bit 加法(1 个半加器,7 个全加器)
    • 溢出的概念,吃豆人的例子
    • 乘法除法
  4. 逻辑单元
    • 检测数字是否为 0 的电路(一堆 OR 门最后加个 NOT 门)
    • ALU 抽象成一个 V 符号
    • Flag 标志(是否相等,是否小于,是否溢出等等)

# 6 寄存器和内存

本集重点是 Memory(存储 / 内存 两种含义)

  1. 存 1 位(Gated Latch - 锁存器)
  2. 存 8 位(Register - 寄存器)
  3. 16 X 16 的矩阵存 256 位,数据选择器 / 多路复用器(Multiplexer)解码 8 位地址,定位到单个锁存器
  4. 4 位代表行,4 位代表列
  5. 组合 256 位内存 + 多路复用器
  6. 可寻址的 256 字节内存,一条 1980 年代的内存,1M 大小
  7. 8 个模块,每个模块有 32 个小方块,每个小方块有 4 个小块,每个小块是 128 位 x64 位

# 7 中央处理器(CPU)

拼个 CPU 出来

CPU 怎么执行命令

  1. RAM + 寄存器 + ALU 做个 CPU
  2. 解释 “取指令 -> 解释 -> 执行” 这个循环
  3. 时钟是什么,时钟速度和赫兹
  4. 超频提升性能,降频省电

# 8 指令和程序

本集重点:一步步带你运行一遍程序

  1. 回顾上集的例子程序,一步步讲解。介绍 “指令集” 的概念。LOAD_A,LOAD_B,SUB,JUMP,ADD,HALT 等指令
  2. 带条件跳转,JUMP NEGATIVE 是负数才跳转,还有其他类型的 JUMP
  3. 真正现代 CPU 用更多指令集。位数更长。
  4. 1971 年的英特尔 4004 处理器,有 46 个指令
  5. 如今英特尔酷睿 i7,有上千条指令

# 9 高级 CPU 设计

  1. 早期是加快晶体管切换速度,来提升 CPU 速度
  2. 给 CPU 专门的除法电路 + 其他电路 来做复杂操作,比如游戏,视频解码
  3. 给 CPU 加缓存,提高数据存取速度,更快喂给 CPU,用计算餐馆销售额举例
  4. 脏位 - Dirty bit
  5. 流水线设计,用 1 个洗衣机和 1 个干燥机举例
  6. 并行处理 - parallelize
  7. 乱序执行 - out-of-order execution
  8. 推测执行 - speculative execution
  9. 分支预测 - branch prediction
  10. 多个 ALU
  11. 多核(Core)
  12. 多个独立 CPU
  13. 超级计算机,中国的 “神威 太湖之光”

# 10 早期的编程方式

本集重点:早期计算机如何编程。打孔纸卡 -> 插线板 -> 面板拨开关

  1. 开头说本集重点:程序如何进入计算机
  2. 拿纺织业举例,给机器编程的需求远在计算机出现前就有了
  3. 打孔纸卡 - Punched card
  4. 插线板 - Plugboard
  5. 冯诺依曼架构 - Von Neumann Architecture
  6. 面板编程 - Panel programming
  7. 第一款取得商业成功的家用计算机:Altair 8800
  8. 编程依然很困难,人们需要更友好更简单的方式编程
  9. 下周主题:编程语言

# 11 编程语言发展史

编程:二进制 -> 助记符(汇编器) -> A-0(编译器)-> FORTRAIN

  1. 二进制写程序,先纸上写伪代码,手工转二进制,很快就烦了
  2. 用 “助记符” 写代码(LOAD_A 14),为了把助记符转二进制,汇编器诞生(Assembler)
  3. 葛利斯。霍普(Grace Hopper) - 哈佛 1 号计算机首批程序员,海军军官
  4. Grace 设计了编程语言 A-0
  5. Grace 1952 年做了第一个编译器(Complier),实现 A-0
  6. 变量(Variables)
  7. FORTRAN
  8. COBOL
  9. 新语言
    • 1960 年代:ALGOL,LISP,BASIC
    • 1970 年代:Pascal,C,Smalltalk
    • 1980 年代:C++,Objective-C,Perl
    • 1990 年代:Python,Ruby,Java
    • 新千年:Swift,C#,Go

# 12 编程基础 - 语句与函数

  1. 变量,赋值语句
  2. Grace Hopper 拍虫子游戏
  3. if 判断
  4. while 循环
  5. for 循环
  6. 函数
  7. 下集介绍算法

# 13 算法入门

  1. 选择排序 - Selection sort
  2. 大 O 表示法 - Big O notation
  3. 归并排序 - Merge sort
  4. Dijkstra 算法

# 14 数据结构

  1. 数组 - Array
  2. 字符串 - String
  3. 矩阵 - Matrix
  4. 结构体 - Struct
  5. 指针 - Pointer
  6. 节点 - Node
  7. 链表 - Linked list
  8. 队列 - Queue
  9. 栈 - Stack
  10. 树 - Tree
  11. 二叉树 - Binary Tree
  12. 图 - Graph
  13. 没时间讲红黑树和堆,不同数据结构适用不同场景

# 15 阿兰・图灵

  1. 介绍图灵
  2. 可判定行问题
  3. 阿隆佐・丘奇,Lambda 算子
  4. 图灵机
  5. 停机问题
  6. 破解德军英格玛加密机
  7. 图灵测试
  8. 图灵的个人生活
  9. 图灵奖

# 16 软件工程

  1. 对象 Object
  2. 面向对象编程 Object Oriented Programming
  3. API Application Programming Interface
  4. public,private
  5. 集成开发环境,IDE - Integrated Development Environments
  6. 调试 debugging
  7. 文档和注释 - readme,comment
  8. 版本控制 Version control
  9. 质量控制 Quality Assurance testing,QA
  10. Beta,Alpha

# 17 集成电路与摩尔定律

本集重点:晶圆的制作流程:光刻

  1. 分立元件 Discrete components
  2. 数字暴政 Tyranny of Numbers - 是 1960 年代工程师碰到的问题,意思是如果想加强电脑性能,就要更多部件,着导致更多线路,更复杂。所以很难做
  3. 光刻 Photolithography
  4. 晶圆 Wafer
  5. 光刻胶 Photoresist
  6. 光掩膜 Photomask
  7. 掺杂 Doping
  8. 摩尔定律 Moore's Law
  9. 英特尔 Intel
  10. 晶体管数量大幅度增长,1980 年三万个,1990 年一百万个,2000 年三千万个,2010 年十亿个
  11. 进一步小型化会碰到 2 个问题
    1. 光的波长不足以制作更精细的设计
    2. 量子隧穿效应

# 18 操作系统

  1. 操作系统 Operating Systems
  2. 批处理 Batch processing
  3. 计算机变便宜变多,有不同配置,写程序处理不同硬件细节很痛苦,因此操作系统负责抽象硬件
  4. 外部设备 Peripherals
  5. 设备驱动程序 Device drivers
  6. 多任务处理 Multitasking
  7. 虚拟内存 Virtual Memory
  8. 动态内存分配 Dynamic memory allocation
  9. 内存保护 Memory Protection
  10. 1970 年代,计算机足够便宜,大学买了让学生用,多个学生用多个 “终端” 连接到主机
  11. 多用户分时操作系统,Multics
  12. Unix
  13. MS-DOS
  14. 下集是内存 & 存储介质

# 19 内存 & 存储介质

本集重点:存储技术的发展

  1. 纸卡 Paper punch cards
  2. 延迟线存储器 Delay Line Memory
  3. 磁芯 Magnetic Core Memory
  4. 磁带 Magnetic Tape
  5. 磁鼓 Magnetic Drum Memory
  6. 硬盘 Hard Disk Drives
  7. 内存层次结构 Memory Hierarchy
  8. 软盘 Floppy Disk
  9. 光盘 Compact Disk
  10. 固态硬盘 Solid State Drives

# 20 文件系统

  1. 文件格式:可以随便存文件数据,但按格式存会更方便
  2. TXT 文本文件:ASCII
  3. WAV 音频文件:每秒上千次的音频采样数字
  4. BMP 图片文件:像素的红绿蓝 RGP 值
  5. 文件系统:很早期时空间小,整个存储器就像一整个文件,后来随着容量增长,多文件非常必要
  6. 目录文件:用来解决多文件问题,存其他文件的信息,比如开头,结尾,创建时间等
  7. 平面文件系统 - Flat File System:文件都在同一层次,早期空间小,只有十几个文件,平面系统够用
  8. 如果文件紧密的一个个前后排序会造成很多问题,所以文件系统会:
    1. 把空间划分成一块块
    2. 文件拆分存在多个块里
  9. 文件的增删改查会不可避免的造成文件散落在各个块里,如果是磁带这样的存储介质就会造成问题,所以做碎片整理
  10. 分层文件系统 - Hierarchical File System:有不同文件夹,文件夹可以层层嵌套

# 21 压缩

  1. 压缩的好处是能存更多文件,传输也更快
  2. 游程编码 Run-length Encoding
  3. 无损压缩 Lossless compression
  4. 霍夫曼树 Huffman tree
  5. “消除冗余” 和 “用更紧凑的表示方法”,这两种方法通常会组合使用
  6. 字典编码 Dictionary coders,游程编码 和字典编码都是无损压缩
  7. 感知编码 Perceptual coding
  8. 有损压缩 jpeg 格式
  9. 时间冗余 Temporal redundancy
  10. MPEG-4 视频编码

# 22 命令行界面

本集重点:计算机早期同时输入程序和数据(用纸卡 / 纸带)。运行开始直到结束,中间没有人类操作,原因是计算机很贵,不能等人类慢慢输入,执行完结果打印到纸上,到 1950 年代,计算机足够便宜 + 快,人类和计算机交互式操作变得可行,为了让人类输入到计算机,改造之前就有的打字机,编程电传打字机。到 1970 年代末,屏幕成本足够低,屏幕代替电传打字机,屏幕成为标配

  1. 人机交互 Human-Computer Interaction
  2. 早期输出数据是打印到纸上,而输入是用纸卡 / 纸带一次性把程序和数据都给进去
  3. QWERTY 打字机的发展,克里斯托弗・莱瑟姆・肖尔斯 发明于 1868 年
  4. 电传打字机 Teletype machine
  5. 命令行界面 Command line interface
  6. ls 命令
  7. 早期文字游戏 Zork (1977 年)
  8. cd 命令

# 23 屏幕与 2D 图形显示

  1. PDP-1 计算机。键盘和显示器分开,屏幕显示临时值
  2. 阴极射线管 Cathode Ray Tube (CRT)
  3. CRT 有两种绘图方式
    • 矢量扫描 Vector Scanning
    • 光栅扫描 Raster Scanning
  4. 液晶显示器 Liquid Crystal Displays (LCD),像素(Pixel)
  5. 字符生成器 Character generator
  6. 屏幕缓冲区 Screen buffer
  7. 矢量命令画图
  8. Sketchpad,光笔(Light pen)
  9. 函数画线,矩形

# 24 冷战和消费主义

  1. 本集重点:冷战导致美国往计算机领域投入大量资源
  2. 范内瓦・布什 预见了计算机的潜力,提出假想机器 Memex,帮助建立国家科学基金会,给科学研究提供资金
  3. 1950 年代消费者开始买晶体管设备,收音机大卖,日本取得晶体管授权后,索尼做了晶体管收音机,为日本半导体行业崛起埋下种子
  4. 苏联 1961 年把宇航员加加林送入太空,导致美国提出登月,NASA 预算大增,用集成电路来制作登月计算机
  5. 集成电路的发展实际上是由军事应用大大推进的,阿波罗登月计划毕竟只有 17 次,美国造超级计算机进一步推进集成电路
  6. 美国半导体行业一开始靠政府高利润合同活着,忽略消费者市场,1970 年代冷战渐消,行业开始衰败,很多公司倒闭,英特尔转型处理器
  7. 末尾总结:政府和消费者推动了计算机的发展,早期靠政府资金,让技术发展到足够商用,然后消费者购买商用产品继续推动产品发展

# 25 个人计算机革命

本集:全是历史故事

  1. 1970 年代初成本下降,个人计算机变得可行
  2. Altair 8800
  3. 比尔・盖茨 和 保罗・艾伦 写 Basic 解释器
  4. 乔布斯提议卖组装好的计算机,Apple-I 诞生
  5. 1977 年出现 3 款开箱即用的计算机:“Apple-II”,“TRS-80 Model I”,“Commodore PET 2001”
  6. IBM 意识到个人计算机市场,IBM PC 发布,采用开放架构,兼容的机器都叫 IBM Compatible(IBM 兼容),生态系统产生雪球效应
    • 因为用户多,软硬件开发人员更愿意花精力在这个平台
    • 因为软硬件多,用户也更乐意买 “IBM 兼容” 的计算机
  7. 苹果选择封闭架构,一切都自己买,只有苹果在非 “IBM 兼容” 下保持了足够市场份额

# 26 图形用户界面(GUI)

  1. 图形界面先驱:道格拉斯・恩格尔巴特(Douglas Engelbart)
  2. 1970 年成立 帕洛阿尔托研究中心 (Palo Alto Research Center)
  3. 1973 年完成 Xerox Alto(施乐奥托)计算机
  4. 举例:写一个简单的 GUI 程序
  5. 1981 年的 Xerox Star system(施乐之星系统)
  6. 史蒂夫・乔布斯去施乐参观
  7. 所见即所得 WYSIWYG
  8. 1983 年推出 Apple Lisa
  9. 1984 年推出 Macintosh
  10. 1985 年推出 Windows1.0,之后出到 3.1
  11. 1995 年推出 Windows95,提供图形界面
  12. 1995 年微软做失败的 Microsoft Bob

# 27 3D 图形

  1. 线框渲染 Wireframe Rendering
  2. 正交投影 Orthographic Projection
  3. 透视投射 Perspective Projection
  4. 网格 Mesh
  5. 三角形更常用因为能定义唯一的平面
  6. 扫描线渲染 Scanline Rendering
  7. 遮挡 Occlusion
  8. 画家算法 Painter's Algorithm
  9. 深度缓冲 Z Buffering
  10. Z fighting 错误
  11. 背面剔除 Back face Culling
  12. 表面法线 Surface Normal
  13. 平面着色 Flat Shading
  14. 高洛德着色 Gouraud shading,冯氏着色 Phong shading
  15. 纹理映射 Texture Mapping
  16. 图形处理单元 GPU,Graphics Processing Unit

# 28 计算机网络

  1. 局域网 Local Area Networks - LAN
  2. 媒体访问控制地址 Media Access Control Address - MAC
  3. 载波侦听多路访问 Carrier Sense Multiple Access - CSMA
  4. 指数退避 Exponential Backoff
  5. 冲突域 Collsion Domain
  6. 电路交换 Circuit Switching
  7. 报文交换 Message Switching
  8. 分组交换 Packet Switching

# 29 互联网

  1. IP - 互联网协议 - Internet Protocol
  2. UDP - 用户数据包协议 - User Datagram Protocal
  3. 校验和 - Checksum
  4. TCP - 传输控制协议 - Transmission Control Protocol
  5. DNS - 域名系统 - Domain Name System
  6. OSI - 开放式系统互联通信参考模型 - Open System Interconnection

# 30 万维网

  1. 超链接 Hyperlinks
  2. URL - 统一资源定位符 - Uniform Resource Locator
  3. HTTP - 超文本传输协议 - HyperText Tranfer Protocol
  4. HTML - 超文本标记语言 - HyperText Markup Language
  5. 写一个简单网页,用到 <h1><a><h2><ol><li > 等标签
  6. 第一个浏览器和服务器是 Tim Berners - Lee 花了两个月在 CERN 写的
  7. 1991 年正式发布,万维网就此诞生
  8. 开始讲搜索引擎的故事
  9. Jerry 和 David 的万维网指南,后来改名叫 Yahoo
  10. 搜索引擎 JumpStation
  11. 搜索引擎 Google
  12. 网络中立性

# 31 计算机安全

  1. Secrecy,Integrity,Availability 保密性,完整性,可用性
  2. Threat Model 威胁模型
  3. 身份验证(Authorization)的三种方式:
    • what you know, 你知道什么
    • what you have, 你有什么
    • what you are, 你是什么
  4. 访问控制 Access Control
  5. Bell LaPadula model 不能向上读取,不能向下写入
  6. 隔离 Isolation,沙盒 Sandbox

# 32 黑客与攻击

  1. 社会工程学 Social Engineering
  2. 钓鱼 Phishing
  3. 假托 Pretexting
  4. 木马 Trojan Horses
  5. NAND 镜像 NAND Mirrors
  6. 漏洞利用 Exploit
  7. 缓冲区溢出 Buffer Overflow
  8. 边界检查 Bounds Checking
  9. 代码注入 Code Injection
  10. 零日漏洞 Zero Day Vulnerability
  11. 计算机蠕虫 Worms
  12. 僵尸网络 Botnet
  13. 拒绝服务攻击 DDOS

# 33 加密

  1. 多层防御 Defence in depth
  2. 加密 - Encryption,解密 - Decryption
  3. 凯撒加密 Caesar cipher
  4. 替换加密 Substitution cipher
  5. 移位加密 Permutation cipher
  6. 列移位加密 Columnar transposition cipher
  7. 德国 Enigma 加密机
  8. 1977 年 “数据加密标准” - Data Encryption Standard (DES)
  9. 2001 年 “高级加密标准” - Advanced Encryption Standard (AES)
  10. 密钥交换 - Key exchange
  11. 用颜色来举例 “单向函数” 和 “密钥加密” 的原理
  12. 迪菲 - 赫尔曼密钥交换 - Diffie-Hellman key exchange
  13. 非对称加密 - Asymmetric encryption
  14. 非对称加密算法 RSA

# 34 机器学习与人工智能

  1. 分类 Classification
  2. 分类器 Classifier
  3. 特征 Feature
  4. 标记数据 Labeled data
  5. 决策边界 Decision bounaries
  6. 混淆矩阵 Confusion matrix
  7. 未标签数据 Unlabeled data
  8. 决策树 Decision tree
  9. 支持向量机 Support Vector Machines
  10. 人工神经网络 Artificial Neural Network
  11. 深度学习 Deep learning
  12. 弱 AI,窄 AI Weak AI, Narrow AI
  13. 强 AI Strong AI
  14. 强化学习 Reinforcement Learning

# 35 计算机视觉

  1. 检测垂直边缘的算法
  2. 核 / 过滤器 kernel or filter
  3. 卷积 convolution
  4. Prewitt 算子 - Prewitt Operators
  5. 维奥拉・琼斯 人脸检测 Viola-Jones Face Detection
  6. 卷积神经网络 Convolutional Neural Networks
  7. 识别出脸之后,可以进一步用其他算法定位面部标志,如眼睛和眉毛具体位置,从而判断心情等信息
  8. 跟踪全身的标记点,如肩部,手臂等

# 36 自然语言处理

  1. 词性 Parts of speech
  2. 短语结构规则 Phrase structure rules
  3. 分析树 Parse tree
  4. 语音识别 Speech recognition
  5. 谱图 Spectrogram
  6. 快速傅里叶变换 Fast Fourier Transform
  7. 音素 Phonemes
  8. 语音合成 Speech Synthesis

# 37 机器人

  1. 法国吃饭鸭 - Digesting Duck, Canard Digerateur
  2. 土耳其行棋傀儡,下国际象棋
  3. 第一台计算机控制的机器出现在 1940 年代晚期,叫数控机器,Computer Numerical Control(CNC)
  4. 1960 年 Unimate,第一个商业贩卖的可编程工业机器人
  5. 简单控制电路 simple control loop
  6. 负反馈回路 negative feedback loop
  7. 比例 - 积分 - 微分控制器 Proportional - Integral - Derivative controller PID 控制器
  8. 机器人三定律 Three Laws of Robots

# 38 计算机心理学

  1. 我们需要了解人类心理学,做出更好的计算机
  2. 易用度 - Usability
  3. 颜色强度排序 和 颜色排序
  4. 分组更好记,电话号码 317-555-3897 比 3175553897 好记
  5. 直观功能 - Affordances
  6. 认出 vs 回想 Recognition vs Recall
  7. 让机器有一定的情商 yi'jiFacebook 的研究
  8. 用软件修正注释位置。让视频通话看起来像盯着对方,而不是盯着下方
  9. 把机器人做的像人,恐怖谷理论
  10. 有很多开放式的问题,心理学帮助我们明白不同选择可能带来的影响

# 39 教育科技

  1. 通过调整,暂停等技巧,增强学习效率
  2. 大型开放式在线课程 - Massive Open Online Courses (MOOC)
  3. 智能辅导系统 - Intelligent Tutoring Systems
  4. 判断规则 - Prodection rule
  5. 域模型 - Domain Model
  6. 贝叶斯知识追踪 Bayesian knowledge tracing
    • 学生已经学会的概率
    • 瞎猜的概率
    • 失误的概率
    • 做题过程中学会的概率
  7. 教育数据挖掘 Educational Data mining

# 40 奇点,天网,计算机的未来

  1. 普适计算 Ubiquitous Computing
  2. 奇点 Singularity
  3. 把工作分为四个象限,讨论自动化带来的影响
  4. 机器人的存在时间可能长过人类,可以长时间探索宇宙

视频教程参考: https://www.bilibili.com/video/BV1EW411u7th

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Jalen Chu 微信支付

微信支付

Jalen Chu 支付宝

支付宝

Jalen Chu 公众号

公众号