语言类型的相关总结--类型的动静以类型的绑定时间来划分(类型行为),类型的强弱以类型的约束强度来划分

“再来看看静态类型语言的好处:由于在运行之前进行了类型检查,一方面代码的可靠性增强,符合‘发现错误要尽早’的原则;另一方面编译器有可能藉此优化机器代码以提高运行效率,同时相比前者节省了运行期的耗费在类型检查上的时间和空间。此外,变量类型的声明彰显了编程者的意图,有辅助文档的功效。”冒号有条有理地解释着,“两种类型的体制可以用两种法律原则来类比:静态类型检查类似‘疑罪从有’的有罪推定制——在被证明合法之前是非法的,动态类型检查类似‘疑罪从无’的无罪推定制——在被证明非法之前是合法的。至于如何取舍,套用一句话:‘Static Typing Where Possible, Dynamic Typing When Needed’。不妨理解为:尽可能守规则,必要时求变通。”

 

与此相对地,强类型语言(strongly-typed language)着意贯彻类型控制,为保障数据的完整性和代码的安全有效性,一般不允许隐性类型转换[6]。如果一定需要类型转换,必须是显性转换,一般通过我们熟知的铸型(cast)来完成。”

 

  • 尽管动态语言大多数是动态类型语言,但二者并不是一回事。
  • 数据类型包含两个要素:允许取值的集合和允许参与的运算。
  • 数据类型既有针对机器的物理意义,又有针对人的逻辑意义,提高了代码的安全性和抽象性。
  • 动态类型的类型检查发生在运行期间,静态类型的类型检查发生在编译期间(运行之前)。
  • 动态类型的变量不需要显式声明,静态类型的变量需要通过显式声明或类型推断。
  • 鸭子类型是动态类型的一种风格,允许非继承性多态,即一个对象的类型可以由其接口集合来确定,不需要通过显式继承。它有利于代码重用,但也可能造成误用和滥用。
  • 动态类型语言的优点:代码简明灵活、易于重用,适合泛型编程和快速原型开发。
  • 静态类型语言的优点:运行之前的类型检查增强了代码的可靠性,使编译器有可能进行优化处理从而提高运行效率,节省了运行期的类型检查所占用的时间和空间,同时类型声明有辅助文档的功效。
  • 静态类型检查实行“疑罪从有”的有罪推定制,动态类型检查实行“疑罪从无”的无罪推定制。取舍的原则是:Static Typing Where Possible, Dynamic Typing When Needed。即尽可能守规则,必要时求变通。
  • 类型的动静以类型的绑定时间来划分,类型的强弱以类型的约束强度来划分,它们之间没有必然联系。弱类型语言允许类型的隐性转化,被认为是类型不安全的;而强类型语言则一般不允许这种转化,被认为是类型安全的。

https://www.cnblogs.com/xyz98/archive/2009/04/27/1444394.html

posted @ 2018-12-27 17:36  zzfx  阅读(203)  评论(0编辑  收藏  举报