descent 大大在前面已經講的很清楚了,就當我這篇是幫他補充吧~
程式執行的時候會有好多種狀態 (state)
凡是可以被你“參數化”的東西都可以看成是 state
例如:值
有些 state 是一定得在 compile-time 決定的
例如:常數(像是編譯日期)
有些 state 則是在 runtime 才能夠決定的
例如:user input
大部分的 state 都是既能夠在 compile-time 決定,也能在 runtime 決定的
為了增進程式的效能,我們會把一些在 compile-time 就能夠決定的 state 紀錄在 type
裡面,成為「型別資訊」
為了讓程式更有彈性,我們會把一些 state 留到 runtime 才決定,當然,有時候型別資
訊也是 runtime 決定的
以 C 語言來說,變數在記憶體中的大小是 compile-time 決定的(大部分情形下)
而且被記錄在型別資訊裡頭,可以利用 sizeof 運算子來向編譯器取得
所以這個數字可能不會存在於已經編譯好的程式中,而只出現在編譯時期
推薦原 Po 可以去了解靜態型別和動態型別的不同,兩者的做法是不同的
要是還有興趣,推薦了解一下 type theory,可以讓你有更高一層的視野