Dynamic 静态类型绑定与动态类型绑定

Dynamic 静态类型绑定与动态类型绑定,dynamic,binding,types,Dynamic,Binding,Types,我理解什么是类型绑定。如果我错了,请纠正我- 类型绑定是将声明的变量与特定类型“关联”的过程 (由编译器完成) 类型绑定可以分类为- 静态类型绑定 动态类型绑定 静态类型绑定可以通过两种类型的声明来实现: 直到这里都是晴朗的。 但现在,什么是动态类型绑定?(不是定义)我知道这意味着变量在运行时与“类型”关联 有更多的信息吗- 为什么是动态类型绑定 在哪种编程语言中,它作为一种功能可用 与静态类型绑定相比,它有哪些优点和缺点 通过赋值语句指定 你能提供更多的信息吗。是否应该仅在作业声明中指定?

我理解什么是类型绑定。如果我错了,请纠正我-

类型绑定是将声明的变量与特定类型“关联”的过程
(由编译器完成)

类型绑定可以分类为-
静态类型绑定
动态类型绑定

静态类型绑定可以通过两种类型的声明来实现:

直到这里都是晴朗的。
但现在,什么是动态类型绑定?(不是定义)我知道这意味着变量在运行时与“类型”关联

有更多的信息吗-

  • 为什么是动态类型绑定
  • 在哪种编程语言中,它作为一种功能可用
  • 与静态类型绑定相比,它有哪些优点和缺点
  • 通过赋值语句指定


    你能提供更多的信息吗。是否应该仅在作业声明中指定?

    我将尝试回答您的问题:

    首先,最简单的是哪种编程语言提供的功能?

    Php,Python,Ruby,Perl,JavaScript

    “什么是动态类型绑定?”

    使用这种方法绑定变量类型的编程语言,如PHP、Python、Ruby等,都是通用的解释语言。因此,他们没有编译器。在这些语言中,您没有指定变量类型,也没有隐式规则,因此“不可能”在运行类型之前发现变量类型

    为什么使用动态类型绑定?

    为了回答这个问题,我必须谈谈这种方法的一些优点。选择使用动态类型绑定取决于您的语言设计。所以,这取决于你想要你的语言是什么,以及在什么情况下使用它

    优势

    • 编写通用代码更容易。
    例如:考虑构建一个通用的数据结构,例如堆栈。您希望使用它来使用不同的堆栈保存所有类型的变量,例如,一个堆栈用于int,另一个堆栈用于string等等。在**具有静态类型绑定的编程语言**上执行此操作更为困难

    例如,在C语言中,您有两个选项:

    • 为要使用的每种类型编写一个堆栈保持堆栈
    • 构建一个堆栈,以保持(void*),换句话说,任何东西都有一个点
    如果您试图用Python来实现这一点,那么您只能一次编写代码。语言为你做了艰苦的工作

    您可以对Java和其他语言进行争论,但必须记住,动态类型绑定的概念比面向对象编程更古老,所以在那个时候,不存在多态性

    缺点

    • 检查类型和解释的高成本
    使用编译生成的二进制文件执行程序要比在解释器上运行的同一程序快得多。第二件事是,当您使用静态类型绑定时,“基本上,绑定过程只在执行之前执行一次。另一方面,在使用动态类型绑定的语言中,绑定过程是针对每个变量的每个赋值操作执行的

    其他最小的缺点是编译器可以找到一些错误,但是使用动态类型绑定解释器无法找到

    例如:由于您可以在执行期间根据需要多次更改变量的类型,因此很可能会造成混淆,例如将int变量更改为string,然后尝试调用接收int的函数,然后使用现在为string的变量调用此函数

    这是一个很小的问题,因为experient开发人员永远不会这样做,但仍然是可能的,而在使用静态类型绑定的语言中则不然


    您必须记住,我们讨论的是概念,这些概念的实现随着计算机科学的发展而不断发展,因此,现在可能可以将一些优点/缺点最小化。

    这些幻灯片太糟糕了。它们将隐式/显式声明与隐式/显式类型混淆。您可以使用显式声明与隐式(静态)类型的定量——例如,大多数类型化函数语言都具有完整的类型推断。此外,静态类型将类型分配给表达式,而不仅仅是变量。(术语“类型绑定”也是非常不标准的。)@AndreasRossberg这些幻灯片是“编程语言概念”的辅助说明罗伯特·塞贝斯塔(Robert Sebesta)。只是补充一句,这对我很有帮助!