6.00 是MIT CS的入門課程,面向沒有多少編程基礎的人。從前學過一次,現在再學一遍,主要是為了學習Python。
第一課主要介紹電腦的一些基礎知識,內容雖淺但邏輯清晰,涵蓋了很多重要的問題。
1. Declarative Knowledge vs Imperative Knowledge
Declarative風格:首先聲明一些規則,類似於啟發學習法程式,這個可以從Lisp - AI上找到此程式風格的分支,90年代曾經紅極一時,當初日本成為AI的中心,雄偉的五代機計劃似乎要將美帝踩到腳下。隨Google等公司大量使用函數式編程風格解決並行計算並投入巨大資源研究AI,相信我們未來能從Declarative風格中挖掘出更多寶藏。
Imperative風格:發出一系列指令,這個目前應用最廣。Shell、C、Java等都是這個風格。由於其可控,因此其主導地位在這個時代是不可動搖的。
2. Stored Program Computer
簡單說,就是指令和資料摻在一起的體繫結構。(Treat instructions and data as the same thing)
過去曾有過指令流和資料流分開的機器,但目前幾乎所有的機器都是Stored Program Computer. 將兩者混合的好處我記不清了,我自己能想到的是降低控制難度,提升速度和使遞迴成為體繫結構的一個特色。課程上講這種方式更為靈活,可以處理使用者自訂的程式,看來我沒有想到點子上。
\
3. Syntax, Static Semantics, Semantics
瞭解過編譯原理的人可能很容易分清Syntax和Semantics,可Static Semantics是什麼可能就需要學過那們課程才知道。
Syntax: 文法,例如:指令可以操作資料,因此1/'a'在文法上是對的,1和'a'都是資料,可以被/處理
Static Semantic: 那段字串具有語義,例如1/'a'就不能通過static Semantic檢查,因為這是沒有語義的。
Semantic: 語義
4. Compiled vs Interpreted
自然這個是少不了的,這個話題可大可小,這裡就不多說了。