作者noctem (noctem)
看板PLT
标题Re: [问题] 关於强型态语言定义的问题
时间Thu Jan 26 21:41:19 2017
如同有人已经提到的,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://webptt.com/cn.aspx?n=bbs/PLT/M.1485438081.A.235.html