Programming languages 静态/动态类型与静态/动态绑定
各位,这4个术语之间有什么区别,你们能举个例子吗?类型-指变量类型,以及在程序执行期间是否允许变量更改类型 绑定—正如您在下面所读到的,它可以指变量绑定或库绑定 静态和动态是术语,指解析某些编程元素的时间点。静态表示在构造程序时发生解析。动态表示在程序运行时进行解析 静态和动态类型 类型是指由于数据值(整数、字符、浮点数、字符串、对象等)之间的差异而导致的程序结构的更改。这些差异可能产生许多影响,例如:Programming languages 静态/动态类型与静态/动态绑定,programming-languages,dynamic,binding,static,typed,Programming Languages,Dynamic,Binding,Static,Typed,各位,这4个术语之间有什么区别,你们能举个例子吗?类型-指变量类型,以及在程序执行期间是否允许变量更改类型 绑定—正如您在下面所读到的,它可以指变量绑定或库绑定 静态和动态是术语,指解析某些编程元素的时间点。静态表示在构造程序时发生解析。动态表示在程序运行时进行解析 静态和动态类型 类型是指由于数据值(整数、字符、浮点数、字符串、对象等)之间的差异而导致的程序结构的更改。这些差异可能产生许多影响,例如: 内存布局(例如,int为4字节,double为8字节,object为更多) 执行的指令(
- 内存布局(例如,int为4字节,double为8字节,object为更多)
- 执行的指令(例如,添加小整数的基本操作,添加大整数的库调用)
- 程序流(简单子程序调用约定与多方法哈希分派)
MyClass.foo()
,静态绑定系统将在构建时验证是否有一个名为MyClass
的类,以及该类是否有一个名为foo
的方法。动态绑定系统将等待运行时,以查看其中一个是否存在
对比
静态策略的主要优点是程序翻译器更加了解程序员的意图。这使得:
- 在构建阶段早期捕获许多常见错误
- 构建重构工具
- 在构建时,只需确定一次程序的可执行形式,就会产生大量计算成本
- 创建动态工作环境的成本仅为静态环境的一小部分
- 添加可能很难进行静态检查的语言特性更容易
- 更容易处理需要自修改代码的情况