2017年9月10日 星期日

[公開課閒聊] 計算機概論第十二講 程式語言 - 台大 于天立

Ped隨手摘


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

沒有留言:

張貼留言