25

静态类型语言和动态类型语言的关于类型的思考

 4 years ago
source link: https://studygolang.com/articles/20355?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

类别:符合条件的对象集。

动态语言不关心对象形成的过程,满足条件即认为是同一类别的对象。

静态语言认为同一类别的对象必须是靠继承得到的类创建的。

静态语言可以靠接口来部分实现上述动态语言的特性,但是一个已经被创建了的对象,即便符合接口定义,但是类因为没有显示声明也无法传入一个以该接口为参数的函数中。因此你要在类那里再加一个实现某接口,于是便有了

class A 继承B 实现接口C{

}

这样的类了。(不过golang的接口则不需要这样的显式声明,我想他们可能意识到了这点)

这里有一个很重要的点就是,你是后发现原来这个对象就属于那个类别的。这个对象可能是后面慢慢形成的。但是当你发现这个事实后再去补上这个类实现了某接口。有点违背当初的设计,因为当初是设计有目的的实现接口的,不是后发现原来符合条件了

我理解类型系统有点像一种记录。只能帮助我们审查历史(类型检查),不能预判未来。

传统的静态类型语言要求每一个对象都对应一个类,每一个对象都由这个类创建。对象间的关系完全由他们从属的类确定。这些类要显式地声明与其他类和接口之间的关系。

类型系统需要程序员在描述程序运行时不断地记录两样东西:

1.数据结构

2.类别之间的关系


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK