roo*_*kie 9 binding static programming-languages dynamic typed
每个人这4个术语有什么区别,你能举个例子吗?
WRe*_*ach 15
静态和动态是术语词,指的是解析某些编程元素的时间点. 静态表示在构造程序时进行解析. 动态表示解析在程序运行时发生.
键入是指由于数据值之间的差异导致的程序结构更改:整数,字符,浮点数,字符串,对象等.这些差异可能会产生很多影响,例如:
静态类型意味着在构建时生成的程序的可执行形式将根据程序中找到的数据值的类型而变化. 动态类型意味着生成的代码将始终相同,无论类型如何 - 执行时的任何差异都将在运行时确定.
请注意,很少有真正的系统是纯粹的一个或另一个,它只是一个问题,哪个是首选策略.
绑定是指程序文本中的名称与它们引用的存储位置的关联.在静态绑定中,此关联在构建时预先确定.使用动态绑定时,直到运行时才会确定此关联.
真正的静态绑定几乎绝迹.例如,早期的汇编程序和FORTRAN将完全预先计算所有变量和子程序位置的确切内存位置.这种情况并没有持续很长时间,引入了变量的堆栈和堆分配以及子程序的动态加载库.
因此,必须对定义采取一些自由.这里概念的精神是:静态绑定程序尽可能地预先计算存储布局,这在现代虚拟内存,垃圾收集,单独编译的应用程序中是实用的.动态绑定程序会尽可能晚地等待.
一个例子可能有帮助.如果我尝试调用一个方法MyClass.foo(),静态绑定系统将在构建时验证是否有一个被调用的类MyClass,并且该类有一个名为的方法foo.动态绑定系统将等到运行时才能查看是否存在.
静态策略的主要优点是程序翻译器更加了解程序员的意图.这使得它更容易:
在构建阶段早期捕获许多常见错误
构建重构工具
在构建时,仅产生一次确定程序的可执行形式所需的大量计算成本
动态策略的主要优点是它们更容易实现,这意味着:
可以创建一个工作的动态环境,其成本只是静态环境的一小部分
更容易添加静态检查可能非常具有挑战性的语言功能
处理需要自修改代码的情况更容易