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,可以让你有更高一层的视野