看板 PLT 關於我們 聯絡資訊
如同有人已經提到的,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. 似乎是說必須要有方法知道這個變數在某個時間點的型別是 什麼。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.25.158 ※ 文章網址: https://www.ptt.cc/bbs/PLT/M.1485438081.A.235.html