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