强类型


强类型 (正體)

Free Web Hosting with Website Builder

计算机科学以及程式设计中,术语强类型用以描述编程语言对于混入不同资料类型的值,这方面的运算限制中所处的地位。它的反义词是弱类型。然而,这些术语在短短的电脑历史中,早已含括了更多的意义,而且时常很难知道写的人究竟要表达哪个意思。

目录

解释

编程语言专家 Benjamin C. Pierce,《Types and Programming Languages》和《Advanced Types and Programming Languages》的作者,曾说:

“我花了几个星期…试着弄清楚“强类型”、“静态类型”、“安全”等术语,但我发现这异常的困难…这些术语的用法不尽相同,所以也就近乎无用。”[1]

大致而言,“强类型”隐含着编程语言对容许混合情况出现加上了严格的限制,以避免程式码以无效的资料使用方式编译或执行。例如,整数除法运算不可用于字串;链表上的运算步骤不可用于数字。然而,这些限制的本质和效力是极易改变的。

强类型在文献中的含义

已经被写作者认定为“强类型”的一些要素包括:

  • 静态类型不同于动态类型。在静态类型系统中,类型是与变量相连系的名称(通常是在宣告时),而不是值(通常是在建立时)。类型也可借由编译器来推断。
  • 通过语言定义,对类型约束违规的编译时间检查的托管要求。就是说,编译器确保操作只发生在对这个运算有效的操作数上。
  • 类型安全;就是说,拒绝(在要么编译时间要么运行时间)尝试忽视数据类型的操作或函数调用。在更严格的设置下,通过证明进行性和藏存性来证明关于形式语言的类型安全
  • 禁止类型转换。某个类型的值,不论是不是以显式或隐式的方式,都不可转换为另一个类型。
  • 但是某些作者,把“强类型语言”称呼保留给省略隐式类型转换(就是说编译器为了利益编程者而插入的转换)的语言。对于这些作者,编程语言是强类型的,如果类型必须通过通常叫做“强制”的显式符号来转换。
  • 无法规避类型系统。某些语言允许程式员取得值的表示法之下的东西(即位元模式),这有可能规避类型系统。
  • 有复合类型的复杂而细致的类型系统
  • 资料物件中固定且不变的类型。给定数据对象的类型在这个对象的生命期内不改变。例如,类实例不可以改变它们的类。
  • 在执行程式之前,强类型就保证了执行时期的程式行为,其以静态分析或其它的机制提供。

编程语言中的含义变异

参阅

注解

  1. ^ “强类型”指的是什么






Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History