程式語言
簡介
大學時程式語言課程的上課筆記
記憶體管理議題
ada
動態的他會收回去
c/c++
自己管,指標可以指向任何地方(通常拿來做記憶體管理) 指標可移動 須明確取參 參照像const pointer
c#
僅參照
堆積管理
可動或固定大小
收回方式
1.紀錄多少人參照到,沒就收回 有參照循環議題 2.直到沒記憶體才回收,回收時檢查是否有參照到
型態確定
assign or function or operator 檢查 需有相容的概念(可隱含轉換) 強型別:編譯期檢查全部型別 如ada(可以關)、jave、c#
運算式
運算子結合率(變數 > 常數 > 小括號)
如果函式會改變變數值,先後很重要 解1:不准改 解2:給定方向(如java)
結合方向
ruby
凡是多是方法
Overloading operator (重載運算子)
C++ 潛在問題
指標||乘法 (???) 無法檢查!!! 矩陣乘法,還是元素相乘
轉型
不能轉 ada 明確型態轉換 C: (int) angle python: int(angle) base 10 十進位轉換
overflow(太大超過) || underflow(太小無法表示)
exception : catch 解決
關聯運算式
強制轉換 c:明寫,算到知道答案就不算了 (a<b<c) != (a<b && b<c) rudy: 用== 跟=?分辨轉型
指派(assignment)
ada用(:=) if(a=b) //ERROR 語意錯誤(bug) c中 a+=d 同於 a=a+b