Re: [問題] 關於強型態語言定義的問題

作者: noctem (noctem)   2017-01-26 21:41:19
如同有人已經提到的,strong typing 並不是一個有精確定義的詞。
不同圈的人說 strong typing 的意思可能不太相同。要精確的話,
用範圍比較小的詞彙(如 type safety, static typing 等等)可
能比較好。
說到 strong typing 我會想到的意思是「能確保在 runtime 時不
出現 type error」。Type error 在這邊指的是:有些操作只能對
某些型別的值作用。如果試圖對一個值做它無法做的操作(例如把
整數當函數用)就是 type error. 一個 strong typing 的語言能
確定 runtime 時不會有這種 error 發生。因此有一句口號:
well-typed programs don't go wrong.
不過這個定義比較接近 type safety. 其他圈圈應該有其他說法。
※ 引述《cat99961 (阿湯)》之銘言:
: 請問我唸書時念到有關於強型態語言的定義,擷取部分內容如下:
: 強勢型態程式語言符合下列要求:
: 1. 每一個變數都靜態地繫結到單一資料型態
: 2. 變數資料型繫結後,在程式執行過程不能修改其資料型態
: 3. 當允許一個變數儲存不同資料型態之值時,其值的型態可以靜態地或動態地檢查出來
如有人提到的,嚴格說來 1 & 2 都可以找到反例(一般被認為
是 "strong typing" 的語言,卻違反 1 or 2 的例子)。
關於 3. 我看字面上想到的倒是有 side effect 的語言,一個
變數可以先 assign 成一個 Int, 不久又 assign 成一個 Bool.
3. 似乎是說必須要有方法知道這個變數在某個時間點的型別是
什麼。

Links booklink

Contact Us: admin [ a t ] ucptt.com