- 程式語言大概分三~四代
- Machine instructions
- 組合語言 Assembly
- 容易記的記憶體名字
- 容易記的OP-code<operation-code>
- C、C++、JAVA等
- 跨機器
- compiler and interpreter 分解譯與直譯
- compiler 效能較好
- interpreter 方便跨平台
- high-level primitives 一個primitive就能對應多個機械碼
- 自然語言與正規語言後者文法更嚴謹
- 程式分類
- 物件導向(OO)
- 隱藏資訊以減少程式設計師使用時犯錯
- 比如 封裝(encapsulation)、多型(pomorphism)
- 程序導向(Imperative)
- 找到演算法
- L-value = left-value
- 函式導向 functional 整個程式被視為一個函式
- declarative 定義清楚後他自己會去運算出結果
- 物件導向(OO)
- control structures
- for、if、while 這些幾乎都是用 goto 實作而來
- calling procedures
- function name 是一個指標
- 有些程式語言預設會給予procedure固定 size 記憶體(local stack), 需動態配置記憶體的話宣告需額外告知
return 後 local stack 記憶體會解放 - 術語
- local scope 、 global scope
- formal parameter 宣告函式中傳入的參數 、 actual parameter 實際使用函式時傳入的值
- function vs procedure
- function 會 return vallue
- procedure 不必 return
- procedure
- procedure header
- 要在function宣告前的程式碼使用時須加入
- ex.javascript function 宣告使用 funtion declaration 應該就是有做這個動作
- 參數傳遞方式
- call by value
- 替傳入的值建立一個新抽屜
- call by reference
- 傳入的是抽屜別名
- call by address
- 傳入的是抽屜號碼
- call by value
- procedure header
- compiler
- lexical analyzer
- 將stament切分出最小單位(token)
- parser
- 建立語法樹
- code generator
- 產生操作碼
- lexical analyzer
2017年9月10日 星期日
[公開課閒聊] 計算機概論第十二講 程式語言 - 台大 于天立
Ped隨手摘
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言