計算機速成課-Crash Course Computer Science

目錄

1. 計算機早期歷史-Early Computing 11:53

2. 電子計算機-Electronic Computing 10:44

3. 布爾邏輯 和 邏輯門-Boolean Logic & Logic Gates 10:07

4. 二進制-Representing Numbers and Letters with Binary 10:46

5. 算術邏輯單元-How Computers Calculate-the ALU 11:10

6. 寄存器 & 內存-Registers and RAM 12:17

7. 中央處理器-The Central Processing Unit(CPU) 11:38

8. 指令和程序-Instructions & Programs 10:36

9. 高級CPU設計-Advanced CPU Designs 12:23

10. 早期的編程方式-Early Programming 09:27

11. 編程語言發展史-The First Programming Languages 11:53

12. 編程原理-語句和函數-Programming Basics - Statements & Functions 11:57

13. 算法入門 - Intro to Algorithms 11:44

14. 數據結構-Data Structures 10:07

15. 阿蘭·圖靈-Alan Turing 13:05

16. 軟件工程-Software Engineering 10:36

17. 集成電路&摩爾定律-Integrated Circuits & Moore’s Law 13:50

18. 操作系統-Operating Systems 13:36

19. 內存&儲存介質-Memory & Storage 12:18

20. 文件系統-Files & File Systems 12:04

21. 壓縮-Compression 12:48

22. 命令行界面-Keyboards & Command Line Interfaces 11:24

23. 屏幕&2D 圖形顯示-Screens&2D Graphics 11:32

24. 冷戰和消費主義-The Cold War and Consumerism 11:19

25. 個人計算機革命-The Personal Computer Revolution 10:15

26. 圖形用戶界面-Graphical User Interfaces 12:59

27. 3D 圖形-3D Graphics 12:41

28. 計算機網絡-Computer Networks 12:20

29. 互聯網-The Internet 11:59

30. 萬維網-The World Wide Web 11:37

31. 計算機安全-Cybersecurity 12:30

32. 黑客&攻擊-Hackers & Cyber Attacks 11:53

33. 加密-Cryptography 12:33

34. 機器學習&人工智能-Machine Learning & Artificial Intelligence 11:51

35. 計算機視覺-Computer Vision 11:10

36. 自然語言處理-Natural Language Processing 11:50

37. 機器人-Robots 12:26

38. 計算機心理學 - Psychology of Computing 12:39

39. 教育科技-Educational Technology 11:52

40.奇點,天網,計算機的未來-The Singularity, Skynet, and the Future of Computing12:30

YouTube -- CrashCourse頻道出品

Crash Course Computer Science,是趣味科普計算機相關知識的一門課程(由youtube——CrashCourse頻道出品,這個頻道兩歲了,創建此頻道的哥倆旨在創造一些對人們有用的教育內容)。這套視頻制作精良,里面的動畫和配色(原諒我只能看到表面)時刻吸引著我,生怕眨眼一秒都會錯過點細節,主講人飽滿的情緒讓我一個哈欠都不會打,由此可見整個團隊的心血,最后由衷感謝CrashCourse字幕組,讓我可以在語境中理解很多中英文對應不上的專業詞語(我才不會說我沒有字幕根本看不懂)。

1. 計算機早期歷史-Early Computing

計算機早期歷史

學習:Bits(位),Bytes(字節),晶體管,邏輯門,操作系統,虛擬現實,機器人。

如果關掉所有計算機:電網會關閉,車輛會相撞,飛機會墜毀,冷水廠會關閉,證券市場會停止運作,卡車不知道運向何方,員工得不到薪水,甚至很多和計算機沒有直接關系的東西,T恤,凳子都是在有計算機的廠房里生產的。

計算機推動全球發展的科技:

工業革命的動力,大幅提升了農業、工業、畜牧業的規模。機械化導致了更高的收成,更多的食物,商品可以大批量生產。旅行和通訊變得更加快捷和便宜,生活質量變得更好。

計算機和工業革命有相同的影響:從自動化農業和醫療設備,到全球通信和教育機會,還有虛擬現實和無人駕駛等新領域。這個時代很可能被后人總結為“信息時代”。

一個智能手機,有十億個晶體管,它是通過一層層抽象,來做出復雜的操作,這里就將會講解,0到1,邏輯門、CPU,操作系統,整個互聯網,以及更多~

計算機的出現:

雖然計算機才出現不久,但人類對計算機的需求早就有了。

隨著知識的增長和新工具的誕生,人工勞力會越來越少;

計算機的起源與發展簡介

公元前2500年

先看計算的起源,人們早早就對計算產生了需求,早在,人們就發明了算盤,為什么要發明算盤?因為當時的社會規模已經超出了人們心算的能力,算盤的作用其實是將大腦的算力解放(工具的發明要么是解放人的體力,要么是解放人的智力),隨后發明了度量各種別的可度量事物的計算設備,比如星盤算經緯度,時鐘算日出,算潮汐。

1822年

charles babbage研究出了差分機制造方法,由于硬件限制,沒有制造出來(后人依據草稿又造一臺而且好用),但是在研究過程中有了制造分析機的靈感,分析機可以做很多事,不只是一種特定運算,所以是首個通用計算機(之前的都是專用的),甚至可以輸入數據進行一系列的計算,這一些列的計算就是程序,程序是一個劃時代的概念,而Ada由于為分析機寫了第一個程序,被公認為第一個程序員,她還預言以后一定會有一門語言為分析而生。

1890年

人口越來越多,要進行人口普查費時費力費錢,而且往往普查時間太長,出來的結果與現實狀況不符,沒有意義了,這樣的情況催生了機器的產生,打孔卡片制表機,在紙上打孔,然后把紙放進機器里,機器會根據所打的孔,自己統計符合條件的人數,比如男女各有多少,之后再通過紙把統計結果輸出來。這就是后來計算機一開始采用的輸入和輸出模式。(后來制表機器公司與其他機械公司合并成立了IBM=international business machines)

1900

人口爆炸以及全球貿易(社會規模大幅度增長)導致數據大量增長,

1904-1906

發現真空管,二極管,三極管可代替繼電器,開閉速度更加快,但像燈泡一樣易碎,貴

1940

真空管成本開始降低,政府負擔得起了,就應用于計算機(計算機從機電轉向電子)

1941

阿蘭圖靈設計Bombo,用來破解納粹的英格瑪通訊加密設備(是一臺解密碼機不是計算機)

1943

巨人一號第一次用真空管制造的計算機,用于破解納粹通信

1944

Harverd mark I最大的計算機之一,IBM給二戰同盟國造的,是服務于曼哈頓計劃的(政府和軍方)。構件使用的是機械繼電器(作用就是開關,控制電路開閉),速度慢,齒輪會磨損,故障率很大,甚至一直小蟲都會因其故障(bug)。

1946

賓夕法尼亞大學發明了 世界上第一個真正通用的,可編程的,電子計算機,成本還是很高,而且很容易壞

1947

貝爾實驗室,發明了晶體管,固態,小,速度快,很多晶體管半導體的開發在加州位于舊金山和圣荷西之間,后來被稱為硅谷(因為材料大多是硅),晶體管創始人也搬過去了,創立了肖克利半導體,里面的員工后來創立了仙童半導體,里面的員工創立了Intel(最大計算機芯片制造商)。

計算機早期歷史

  • 算盤 → 步進計算器 → 差分機 → 分析機 → 打孔卡片制表機

  • 最早的計算設備是算盤

  • Computer 最初用于指代職業

  • 步進計算器是第一個可以做加減乘除的機器

  • 炮彈為了精準,要計算彈道,二戰是查表來做。但每次改設計了就需要做一張新表

  • Charles Babbage 提出了 “差分機”, 在構造差分機期間,想出了分析機, 分析機是通用計算機

  • Ada Lovelace 給分析機寫了假想程序,因此成為了第一位程序員

  • 人口普查 10 年一次. Herman Hollerith 的打孔卡片制表機大大提升了效率

2. 電子計算機-Electronic Computing

電子計算機

  • 繼電器 → 真空管 → 晶體管

  • 哈佛 Mark 1 號,由IBM 于1944 年制造

  • 繼電器,繼電器一秒最多 50 次開關

  • 繼電器出 bug

  • 1904 年,熱電子管出現,第一個真空管。改進后變成和繼電器的功能一樣

  • “巨人1號” 計算機在英國 布萊切利園 首次大規模使用真空管。但編程麻煩,還要配置

  • 1946 年,賓夕法尼亞大學的 ENIAC 是第一個通用可編程計算機

  • 1947 年,貝爾實驗室做出了晶體管,晶體管有諸多好處,IBM 很快全面轉向晶體管

  • 硅谷的典故:很多晶體管和半導體的開發都是這里做的。而生產半導體最常見的材料是硅

  • 肖克利半導體 → 仙童半導體 → 英特爾

3. 布爾邏輯 和 邏輯門-Boolean Logic & Logic Gates

布爾邏輯 和 邏輯門

  • 二進制, 布爾邏輯(真假), George Boole,Boolean Algebra

  • 3個基本操作:NOT,AND,OR

  • XOR 異或

4. 二進制-Representing Numbers and Letters with Binary

為啥采用二進制

二進制的本質是電路開關的兩種狀態(真和假,通路或斷路),一開始其實有三進制或者五進制的(多種狀態表示),但是進制越多,信號越不容易被區分,而且有一整個數學分支存在,叫布爾代數(George Boole,19世紀自學成才的英國 數學家,是布爾Boolean名字的由來),專門處理真和假的問題,法則和運算都給你處理好了,拿過來直接就能用。

Boolean代數里面常用的操作:邏輯與的本質是物理上的串聯,邏輯或的本質是物理上的并聯,這些操作在計算機里面由最底層的電路(組合晶體管,物理層面)來實現,操作只是電路的高一層次抽象。(抽象允許我們在高層思考而不必在意底層細節,抽象的本質是把復雜包裝起來,只留一個簡答的接口)

ASCLL讀/asgi/

二進制

  • 用十進制與二進制的原理,二進制加法

  • 存儲單位 MB(Megabyte)GB(Gigabyte)TB(Terabyte)

  • 正數,負數,整數,浮點數

  • 美國信息交換標準代碼 - ASCII, 用來表示字符

  • UNICODE 1992 年誕生,16位,是字符編碼標準,解決 ASCII 不夠表達所有語言的問題

5. 算術邏輯單元-How Computers Calculate-the ALU

算術邏輯單元-How Computers Calculate-the ALU

算術邏輯單元(ALU)計算機的計算大腦。是計算機里負責運算的組件,包括一個算數單元(加減法,增量計算)和一個邏輯單元(邏輯與或非,判斷正負)。

ALU的表示法

img

1970 第一個被封裝在單個芯片內的完整ALU,Intel 74181

算術邏輯單元

  • ALU(Arithmetic and Logic Unit),英特爾 74181

  • ALU 有 2 個單元,1 個算術單元和 1 個邏輯單元

  • 算術單元

    • 半加器 (處理1個 bit,2個輸入)

    • 全加器 (處理1個 bit,3個輸入)

    • 8 bit 加法 (1個半加器,7個全加器)

    • 溢出Overflow

    • 乘法除法

  • 邏輯單元

    • 檢測數字是否為 0 的電路(一堆 OR 門最后加個 NOT 門)
  • 8位ALU 抽象成一個 V 符號

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

6. 寄存器 & 內存-Registers and RAM

寄存器 & 內存

  1. 存儲的作用:因為算出來扔掉就沒意義了,也許要做連續的操作,所以要存起來。

  2. 寄存器的本質:現在你這存一小下下,我馬上就拿走

  3. 鎖存器的結構如下,一組鎖存器構成一個寄存器

img

(當允許寫入線打開時,數據可以輸入,當允許寫入線被關閉時候,數據即可存在data out 里面不允許被改變了,每個寄存器只能存一個數,這個數是多少位,寄存器的位寬就是多少,比如16位的寄存器本質是由16個二進制單元位構成的)

  1. 內存結構(太喜歡他們做的圖了,又好看又明了)
img
img
img
img

內存的地址是由位數決定的,位數越大,能表示的門牌號(地址)越多,內存數量也就越大,所謂的內存大。

內存的重要特性是可以隨時訪問任何位置,RAM

寄存器 & 內存

  • Memory (存儲 / 內存 兩種含義)

  • 存 1 位 (Gated Latch - 鎖存器)

  • 存 8 位 (Register - 寄存器)

  • 16x16 的矩陣存 256 位

  • Opcode

  • 數據選擇器/多路復用器 (Multiplexer) 解碼 8 位地址,定位到單個鎖存器

  • 4 位代表行, 4 位代表列

  • 組合 256 位內存 + 多路復用器Multiplexer

  • 可尋址的 256 字節 內存

  • 一條1980年代的內存,1M 大小

  • 8個模塊,每個模塊有32個小方塊,每個小方塊有 4 個小塊,每個小塊是 128 位 x 64 位

7. 中央處理器-The Central Processing Unit(CPU)

CPU

  1. CPU的工作是負責處理程序,程序是由一條條操作構成的,操作就是指令(因為它們指示計算機要做什么)

  2. 構建一個CPU

img

寄存器:臨時存儲和操作數據

指令地址寄存器:追蹤程序運行到哪條指令了(存下指令的地址)

指令寄存器:存當前是什么指令(指令的內容)

時鐘:以精準的節奏釋放電信號,控制單元會用這個信號推進CPU的內部操作

(取指令-解碼-執行,這三個操作算一個步驟,步驟的執行速度叫做時鐘速度,就是需要多長時間才可以執行完這一步,)

ALU:用來計算

CLU:用來控制

3.運行程序

第一階段:取址階段(fetch phase)

第二階段:解碼階段(decode):對照指令表,把01串翻譯成要做的實際操作,并找到被操作數,這個階段由控制單元完成,控制單元底層也是電路

img

第三階段:執行階段:去操作數的地址處取出操作數放到寄存器里(寄存器是由操作所指定的Load_A就是寄存到寄存器a里)

執行過后,把指令地址寄存器加一,就完成了這條指令的執行,準備去執行下一條了

CPU

  • Instruction Register、Instruction Address Register

  • RAM + 寄存器 + ALU 做個 CPU

  • 解釋 “取指令→解釋→執行” 這個循環

  • 時鐘clock, 時鐘速度和赫茲

  • 超頻提升性能, 降頻省電

8. 指令和程序-Instructions & Programs

指令和程序

  • ”指令集”的概念

  • LOAD_A,LOAD_B,SUB,JUMP,ADD,HALT 等指令

  • 帶條件跳轉,JUMP NEGATIVE 是負數才跳轉,還有其他類型的 JUMP

  • 真正現代 CPU 用更多指令集。位數更長

  • 1971年的英特爾 4004 處理器,有 46 個指令

  • 如今英特爾酷睿 i7, 有上千條指令

9. 高級CPU設計-Advanced CPU Designs

高級 CPU 設計

  • 早期是加快晶體管切換速度,來提升 CPU 速度

  • 給 CPU 專門的除法電路 + 其他電路來做復雜操作,比如游戲,視頻解碼

  • 給 CPU 加緩存,提高數據存取速度,更快喂給 CPU

  • 臟位 - Dirty bit

  • 流水線設計-pipeline

  • 并行處理 - parallelize

  • 亂序執行 - out-of-order execution

  • 推測執行 - speculative execution

  • 分支預測 - branch prediction

  • 多個 ALU

  • 多核 (Core)

  • 多個獨立 CPU

  • 超級計算機,中國的"神威 太湖之光"

10. 早期的編程方式-Early Programming

早期的編程方式

  • 打孔紙卡 → 插線板 → 面板撥開關

  • 紡織業,給機器編程的需求遠在計算機出現前就有了

  • 打孔紙卡 - Punched card

  • 插線板 - Plugboard

  • 馮諾依曼架構 - Von Neumann Architecture

  • 面板編程 - Panel programming

  • 第一款取得商業成功的家用計算機: Altair 8800

  • 編程依然很困難,人們需要更友好更簡單的方式編程

11. 編程語言發展史-The First Programming Languages

編程語言發展史

  • 編程:二進制 → 助記符mnemonic(匯編器assembler)→ A-0(編譯器)→ FORTRAIN

  • 二進制寫程序,先紙上寫偽代碼,手工轉二進制,很快就煩了

  • 用 "助記符” 寫代碼(LOAD_A 14)為了把助記符轉二進制,匯編器誕生 (Assembler)

  • 葛麗絲·霍普 (Grace Hopper) - 哈佛1號計算機首批程序員, 海軍軍官

  • Grace 設計了編程語言 A-0

  • Grace 1952 年做了第一個編譯器 (Compiler),實現 A-0

  • 變量 (Variables)

  • FORTRAN(1957,IBM)

  • COBOL(Common Business-Oriented Language)

  • 新語言

    • 1960 年代:ALGOL,LISP,BASIC

    • 1970 年代:Pascal,C,Smalltalk

    • 1980 年代:C++,Objective-C,Perl

    • 1990 年代:Python,Ruby,Java

    • New millennium: Swift,C#,Go

12. 編程原理-語句和函數-Programming Basics - Statements & Functions

編程基礎 - 語句和函數

  • 變量, 賦值語句

  • Grace Hopper 拍蟲子游戲

  • if 判斷

  • while 循環

  • for 循環

  • 函數

13. 算法入門 - Intro to Algorithms

算法入門

  • 選擇排序 - Selection sort O(n^2)

  • 大 O 表示法 - Big O notation (算法復雜度)

  • 歸并排序 - Merge sort O(n log n)

  • Dijkstra 算法(graph search algorithms) O(n log n +1)

14. 數據結構-Data Structures

數據結構

  • 數組 - Array

  • 下標 - Index (Begins at 0)

  • 字符串 - String

  • 矩陣 - Matrix

  • 結構體 - Struct

  • 指針 - Pointer

  • 節點 - Node

  • 鏈表 - Linked List

  • 隊列 - Queue ---- FIFO(First in first out)

  • 棧 - Stack ---- LIFO(Last in first out) ----push、pop

  • 樹 - Tree ----root/ leaf nodes

  • 二叉樹 - Binary Tree

  • 圖 - Graph

  • 紅黑樹和堆, 不同數據結構適用不同場景

15. 阿蘭·圖靈-Alan Turing

阿蘭·圖靈

  • 計算機之父 Born in 1912

  • 可判定性問題 Entscheidungs problem

  • 阿隆佐·丘奇,Lambda 算子

  • 圖靈機 Turing machine、Turing complete

  • 停機問題 (it‘s a paradox)

  • Bombe破解德軍英格瑪加密機

  • 圖靈測試

  • 圖靈獎

16. 軟件工程-Software Engineering

軟件工程

  • 對象 Object

  • 面向對象編程 Object Oriented Programming

  • API Application Programming Interface

  • public, private

  • 集成開發環境, IDE - Integrated Development Environments

  • 調試 debugging

  • 文檔和注釋 - readme, comment

  • 版本控制 Version control

  • 質量控制 Quality Assurance testing,QA

  • Beta, Alpha

17. 集成電路&摩爾定律-Integrated Circuits & Moore’s Law

集成電路與摩爾定律

  • 晶圓的制作流程:光刻

  • 分立元件 Discrete components

  • 數字暴政 Tyranny of Numbers - 是 1960 年代工程師碰到的問題(如果想加強電腦性能,就要更多部件,這導致更多線路,更復雜。所以很難做)

  • 光刻 Photolithography

  • 晶圓 Wafer

  • 光刻膠 Photoresist

  • 光掩膜 Photomask

  • 摻雜 Doping

  • 摩爾定律 Moore’s Law.

  • 英特爾 Intel

  • 晶體管數量大幅度增長, 1980年三萬個,1990年一百萬個,2000年三千萬個,2010年十億個

  • 進一步小型化會碰到 2 個問題

    1. 光的波長不足以制作更精細的設計

    2. 量子隧穿效應

18. 操作系統-Operating Systems

操作系統

  • 操作系統 Operating systems

  • 批處理 Batch processing

  • 計算機變便宜變多,有不同配置,寫程序處理不同硬件細節很痛苦,因此操作系統負責抽象硬件

  • 外部設備 Peripherals

  • 設備驅動程序 Device drivers

  • 多任務處理 Multitasking

  • 虛擬內存 Virtual Memory

  • 動態內存分配 Dynamic memory allocation

  • 內存保護 Memory Protection

  • 1970年代,計算機足夠便宜,大學買了讓學生用,多個學生用多個 “終端” 連接到主機

  • 多用戶分時操作系統,Multics

  • Unix

  • MS-DOS

19. 內存&儲存介質-Memory & Storage

內存&儲存介質

  • 存儲技術的發展

  • 紙卡 Paper punch cards

  • 延遲線存儲器 Delay Line Memory

  • 磁芯 Magnetic Core Memory

  • 磁帶 Magnetic Tape

  • 磁鼓 Magnetic Drum Memory

  • 硬盤 Hard Disk Drives

  • 內存層次結構 Memory Hierarchy

  • 軟盤 Floppy Disk

  • 光盤 Compact Disk

  • 固態硬盤 Solid State Drives

20. 文件系統-Files & File Systems

文件系統

  • 文件格式:可以隨便存文件數據,但按格式存會更方便

  • TXT 文本文件:ASCII

  • WAV 音頻文件:每秒上千次的音頻采樣數字

  • BMP 圖片文件:像素的紅綠藍 RGB 值

  • 文件系統:很早期時空間小,整個存儲器就像一整個文件。后來隨容量增長,多文件非常必要

  • 目錄文件:用來解決多文件問題,存其他文件的信息,比如開頭,結尾,創建時間等

  • 平面文件系統 - Flat File System:文件都在同一個層次,早期空間小,只有十幾個文件,平面系統夠用

  • 如果文件緊密的一個個前后排序會造成問題,所以文件系統會: 1. 把空間劃分成一塊塊 2. 文件拆分存在多個塊里

  • 文件的增刪改查會不可避免的造成文件散落在各個塊里,

  • 如果是磁帶這樣的存儲介質就會造成問題,所以做碎片整理

  • 分層文件系統 - Hierarchical File System:有不同文件夾,文件夾可以層層嵌套

21. 壓縮-Compression

壓縮

  • 壓縮的好處是能存更多文件,傳輸也更快

  • 游程編碼 Run-Length Encoding

  • 無損壓縮 Lossless compression

  • 霍夫曼樹 Huffman Tree

  • “消除冗余"和"用更緊湊的表示方法”,這兩種方法通常會組合使用

  • 字典編碼 Dictionary coders, 游程編碼 和 字典編碼 都是無損壓縮

  • 感知編碼 Perceptual coding

  • 有損壓縮 jpeg 格式

  • 時間冗余 Temporal redundancy

  • MPEG-4 視頻編碼

22. 命令行界面-Keyboards & Command Line Interfaces

命令行界面

  • 運行開始直到結束,中間沒有人類進行操作,原因是計算機很貴,不能等人類慢慢輸入,執行完結果打印到紙上

  • 到1950年代,計算機足夠便宜+快,人類和計算機交互式操作變得可行

  • 為了讓人類輸入到計算機,改造之前就有的打字機,變成電傳打字機

  • 到1970年代末,屏幕成本足夠低,屏幕代替電傳打字機,屏幕成為標配

  • 人機交互 Human-Computer Interaction

  • 早期輸出數據是打印到紙上,而輸入是用紙卡/紙帶一次性把程序和數據都給進去

  • QWERTY 打字機的發展,克里斯托弗·萊瑟姆·肖爾斯 發明于 1868 年

  • 電傳打字機 Teletype machine

  • 命令行界面 Command line interface

  • ls 命令

  • 早期文字游戲 Zork (1977年)

  • cd 命令

23. 屏幕&2D 圖形顯示-Screens&2D Graphics

屏幕與 2D 圖形顯示

  • PDP-1 計算機。鍵盤和顯示器分開,屏幕顯示臨時值

  • 陰極射線管 Cathode Ray Tube (CRT)

  • CRT 有兩種繪圖方式:

    1. 矢量掃描 Vector Scanning

    2. 光柵掃描 Raster Scanning

  • 液晶顯示器 Liquid Crystal Displays (LCD),像素 (Pixel)

  • 字符生成器 Character generator

  • 屏幕緩沖區 Screen buffer

  • 矢量命令畫圖

  • Sketchpad, 光筆 (Light pen)

  • 函數畫線,矩形

24. 冷戰和消費主義-The Cold War and Consumerism

冷戰和消費主義

  • 范內瓦·布什 預見了計算機的潛力,提出假想機器 Memex,幫助建立 國家科學基金會,給科學研究提供資金

  • 1950 年代消費者開始買晶體管設備,收音機大賣

  • 日本取得晶體管授權后,索尼做了晶體管收音機,為日本半導體行業崛起埋下種子

  • 蘇聯 1961 年把宇航員加加林送上太空,導致美國提出登月

  • NASA 預算大大增加,用集成電路來制作登月計算機

  • 集成電路的發展實際上是由軍事應用大大推進的,阿波羅登月畢竟只有 17 次

  • 美國造超級計算機進一步推進集成電路

  • 美國半導體行業一開始靠政府高利潤合同活著,忽略消費者市場,1970年代冷戰漸消,行業開始衰敗 很多公司倒閉,英特爾轉型處理器

  • 政府和消費者推動了計算機的發展,早期靠政府資金,讓技術發展到足夠商用,然后消費者購買商用產品繼續推動產品發展

25. 個人計算機革命-The Personal Computer Revolution

個人計算機革命

  • 1970年代初成本下降,個人計算機變得可行

  • Altair 8800

  • 比爾·蓋茨 和 保羅·艾倫寫 BASIC 解釋器

  • 喬布斯提議賣組裝好的計算機,Apple-I 誕生

  • 1977年出現3款開箱即用計算機:“Apple-II”,“TRS-80 Model I”,“Commodore PET 2001”

  • IBM 意識到個人計算機市場

  • IBM PC 發布,采用開放架構,兼容的機器都叫 IBM Compatible (IBM 兼容)

  • 生態系統產生雪球效應:因為用戶多,軟硬件開發人員更愿意花精力在這個平臺,因為軟硬件多,用戶也更樂意買 “IBM 兼容” 的計算機

  • 蘋果選封閉架構,一切都自己來,只有蘋果在非 “IBM 兼容” 下保持了足夠市場份額

26. 圖形用戶界面-Graphical User Interfaces

圖形用戶界面 (GUI)

  • 圖形界面先驅:道格拉斯·恩格爾巴特(Douglas Engelbart)

  • 1970年成立 帕洛阿爾托研究中心(Palo Alto Research Center)

  • 1973年完成 Xerox Alto(施樂奧托) 計算機

  • 舉例:寫一個簡單的 GUI 程序

  • 1981年的 Xerox Star system(施樂之星系統)

  • 史蒂夫·喬布斯去施樂參觀,所見即所得 WYSIWYG

  • 1983年推出 Apple Lisa

  • 1984年推出 Macintosh

  • 1985年推出 Windows 1.0,之后出到 3.1

  • 1995年推出 Windows 95 提供圖形界面

  • 1995年微軟做失敗的 Microsoft Bob

27. 3D 圖形-3D Graphics

3D 圖形

  • 線框渲染 Wireframe Rendering

  • 正交投影 Orthographic Projection

  • 透視投射 Perspective Projection

  • 網格 Mesh

  • 三角形更常用因為能定義唯一的平面

  • 掃描線渲染 Scanline Rendering

  • 遮擋 Occlusion

  • 畫家算法 Painter’s Algorithm

  • 深度緩沖 Z Buffering

  • Z Fighting 錯誤

  • 背面剔除 Back Face Culling

  • 表面法線 Surface Normal

  • 平面著色 Flat Shading

  • 高洛德著色 Gouraud shading, 馮氏著色 Phong Shading

  • 紋理映射 Texture Mapping

  • 圖形處理單元 GPU, Graphics Processing Unit

28. 計算機網絡-Computer Networks

計算機網絡

  • 局域網 Local Area Networks - LAN

  • 媒體訪問控制地址 Media Access Control address - MAC

  • 載波偵聽多路訪問 Carrier Sense Multiple Access - CSMA

  • 指數退避 Exponential Backoff

  • 沖突域 Collision Domain

  • 電路交換 Circuit Switching

  • 報文交換 Message Switching

  • 分組交換 Packet Switching

29. 互聯網-The Internet

互聯網

  • IP - 互聯網協議 - Internet Protocol

  • UDP - 用戶數據報協議 - User Datagram Protocol

  • 校驗和 - Checksum

  • TCP - 傳輸控制協議 - Transmission Control Protocol

  • DNS - 域名系統 - Domain Name System

  • OSI - 開放式系統互聯通信參考模型 - Open System Interconnection

30. 萬維網-The World Wide Web

萬維網

  • 超鏈接 Hyperlinks

  • URL - 統一資源定位器 - Uniform Resource Locator

  • HTTP - 超文本傳輸協議 - HyperText Transfer Protocol

  • HTML - 超文本標記語言 - HyperText Markup Language

  • 寫一個簡單網頁,用到了 《h1》《 a》《h2》《 ol》《 li》 標簽

  • 第一個瀏覽器和服務器是 Tim Berners-Lee 花了 2 個月在 CERN 寫的

  • 1991年正式發布,萬維網就此誕生

  • 開始講搜索引擎的故事

  • Jerry 和 David 的萬維網指南 后來改名成 Yahoo

  • 搜索引擎 JumpStation

  • 搜索引擎 Google

  • 網絡中立性

31. 計算機安全-Cybersecurity

計算機安全

  • Secrecy, Integrity, Availability 保密性, 完整性, 可用性

  • Threat Model 威脅模型

  • 身份驗證 (Authentication) 的三種方式:

    1. What you know, 你知道什么

    2. What you have, 你有什么

    3. What you are, 你是什么

  • 訪問控制 Access Control

  • Bell LaPadula model 不能向上讀取,不能向下寫入

  • 隔離 Isolation, 沙盒 Sandbox

32. 黑客&攻擊-Hackers & Cyber Attacks

黑客與攻擊

  • 社會工程學 Social Engineering

  • 釣魚 Phishing

  • 假托 Pretexting

  • 木馬 Trojan Horses

  • NAND鏡像 NAND Mirroring

  • 漏洞利用 Exploit

  • 緩沖區溢出 Buffer Overflow

  • 邊界檢查 Bounds Checking

  • 代碼注入 Code Injection

  • 零日漏洞 Zero Day Vulnerability

  • 計算機蠕蟲 Worms

  • 僵尸網絡 Botnet

  • 拒絕服務攻擊 DDoS

33. 加密-Cryptography

加密

  • 多層防御 Defence in depth

  • 加密 - Encryption,解密 - Decryption

  • 凱撒加密 Caesar cipher

  • 替換加密 Substitution cipher

  • 移位加密 Permutation cipher

  • 列移位加密 Columnar transposition cipher

  • 德國 Enigma 加密機

  • 1977年"數據加密標準" - Data Encryption Standard (DES)

  • 2001年"高級加密標準" - Advanced Encryption Standard (AES)

  • 密鑰交換 - Key exchange

  • “單向函數"和"密鑰加密”

  • 迪菲-赫爾曼密鑰交換 - Diffie-Hellman Key Exchange

  • 非對稱加密 - Asymmetric encryption

  • 非對稱加密算法 RSA

34. 機器學習&人工智能-Machine Learning & Artificial Intelligence

機器學習與人工智能

  • 分類 Classification

  • 分類器 Classifier

  • 特征 Feature

  • 標記數據 Labeled data

  • 決策邊界 Decision boundaries

  • 混淆矩陣 Confusion matrix

  • 未標簽數據 Unlabeled data

  • 決策樹 Decision tree

  • 支持向量機 Support Vector Machines

  • 人工神經網絡 Artificial Neural Network

  • 深度學習 Deep learning

  • 弱AI, 窄AI Weak AI, Narrow AI

  • 強AI Strong AI

  • 強化學習 Reinforcement Learning

35. 計算機視覺-Computer Vision

計算機視覺

  • 檢測垂直邊緣的算法

  • 核/過濾器 kernel or filter

  • 卷積 convolution

  • Prewitt 算子 Prewitt Operators

  • 維奧拉·瓊斯 人臉檢測 Viola-Jones Face Detection

  • 卷積神經網絡 Convolutional Neural Networks

  • 識別出臉之后,可以進一步用其他算法定位面部標志,如眼睛和眉毛具體位置,從而判斷心情等信息

  • 跟蹤全身的標記點,如肩部,手臂等

36. 自然語言處理-Natural Language Processing

自然語言處理

  • 詞性 Parts of speech

  • 短語結構規則 Phrase structure rules

  • 分析樹 Parse tree

  • 語音識別 Speech recognition

  • 譜圖 Spectrogram

  • 快速傅立葉變換 Fast Fourier Transform

  • 音素 Phonemes

  • 語音合成 Speech Synthesis

37. 機器人-Robots

機器人

  • 法國吃飯鴨 - Digesting Duck, Canard Digerateur

  • 土耳其行棋傀儡, 下國際象棋

  • 第一臺計算機控制的機器出現在1940年代晚期,叫數控機器, Computer Numerical Control(CNC)

  • 1960年 Unimate,第一個商業販賣的 可編程工業機器人

  • 簡單控制回路 simple control loop

  • 負反饋回路 negative feedback loop

  • 比例-積分-微分控制器 Proportional–Integral–Derivative controller PID 控制器

  • 機器人三定律 Three Laws of Robotics

38. 計算機心理學 - Psychology of Computing

計算機心理學

  • 我們需要了解人類心理學,做出更好的計算機

  • 易用度 - Usability

  • 顏色強度排序 和 顏色排序

  • 分組更好記,電話號碼 317-555-3897 比 3175553897 好記

  • 直觀功能 - Affordances

  • 認出 vs 回想 Recognition vs Recall

  • 讓機器有一定情商以及 Facebook 的研究

  • 用軟件修正注視位置。讓視頻通話時看起來像盯著對方,而不是盯著下方

  • 把機器人做的像人,恐怖谷理論

  • 有很多開放式的問題,心理學幫助我們明白不同選擇可能帶來的影響

39. 教育科技-Educational Technology

教育科技

  • 通過調速,暫停等技巧,加強學習效率

  • 大型開放式在線課程 - Massive Open Online Courses (MOOC)

  • 智能輔導系統 - Intelligent Tutoring Systems

  • 判斷規則 - Production rule

  • 域模型 - Domain Model

  • 貝葉斯知識追蹤 Bayesian knowledge tracing

    1. 學生已經學會的概率

    2. 瞎猜的概率

    3. 失誤的概率

    4. 做題過程中學會的概率

  • 教育數據挖掘 Educational Data Mining

40.奇點,天網,計算機的未來-The Singularity, Skynet, and the Future of Computing

奇點,天網,計算機的未來

  • 普適計算 Ubiquitous Computing

  • 奇點 Singularity

  • 把工作分為4個象限,討論自動化帶來的影響

  • 機器人的存在時間可能長過人類,可以長時間探索宇宙

學無止境,謙虛上行

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容