`
zhouyrt
  • 浏览: 1162604 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

绑定/约束

阅读更多

绑定/约束 (binding)指两个东西之间的关联。如 名字 与它所代表的事物。又如属性与实体之间的关联,又或者符号与操作之间的关联。

早期的书翻译成约束,后期的多数称绑定。后续都称绑定。

绑定发生的时间称为 绑定时间 (binding time)。

绑定 和 绑定时间 是程序设计语言中了个非常重要的概念。

绑定可以发生在语言设计时、语言实现时、编译时、连接时、载入时和运行时。

 

一、语言设计时

多数语言中运算符、流程控制结构、内部类型、对象的构造形式等都是在语言设计时决定的。

如星号(*)在语言设计时与乘法操作绑定。

 

二、语言实现时

多数语言手册都留下了许多问题,要求语言的实现者去仔细考虑和决定如何实现?

如基本类型的精度(取值范围),c中的int在实现时与取值范围绑定。

又如 栈和堆得阻止方式和最大规模。

 

三、编译时

编译器选择了如何将高级的结构映射到机器代码,包括静态定义的数据在内存里的布局方式。

如java中的 变量 是在编译时绑定于某特定的数据类型。

 

四、连接时

大部分编译器支持“分别编译”,连接器根据各模块的情况选择整体布局,并解决跨模块的相互引用关系。需要由连接器把不同的模块集合一起。

 

五、载入时

指操作系统将程序载入内存,使之能够执行的那个时刻。

如java程序载入后变量与一个存储单元绑定。

 

六、运行时

这是个广义的概念,它覆盖了从程序执行开始到结束的这个时间跨度。

如变量与值的绑定发生运行时。但许多其它决策事项的情况则根据语言的不同而不同。


绑定又分为 静态绑定 与 动态绑定 。

静态绑定/早绑定 指在运行之前建立的绑定,且在整个程序执行过程期间保持不变。

动态绑定/晚绑定 指在运行期间建立的绑定,且在执行过程中可被改变。

当然,静态与动态都是很粗略的说法。因为运行时的概念本身就很广泛,并不严格。


纯编译型语言 (静态语言),自然是早绑定的。它们效率更高,因为它们更早的做出了决策。

编译器只对全局变量的语法语义做一次分析,即程序未运行之前完成。在那时就已确定这些变量的在内存中的布局,并生成出发问它们的高效代码。

纯解释型语言 (动态语言),自然是晚绑定的。它们更灵活,因为它们把许多决策推迟到运行时才做。相应的其效率较低。

它可能在每次运行时分析一些声明,甚至子程序每次调用时解释器都要去分析局部变量。

6
0
分享到:
评论

相关推荐

    绑定/约束 (binding)指两个东西之间的关联

    绑定和约束是程序设计语言中一个重要的概念,它们指的是一种两个实体之间的关联。例如,一个名字与它所代表的事物之间的关联,属性与实体之间的关联,或者符号与操作之间的关联。在程序设计语言中,绑定可以用来描述...

    dynareOBC:一种用于在Dynare中实现偶尔绑定约束的工具包

    OBC,即偶尔绑定约束(occasionally binding constraints),是经济模型中的一种关键概念,它描述了在某些时期,经济主体会受到约束的影响,而在其他时期则不受这些约束的限制。在DSGE模型中,理解OBC对于捕捉现实世界...

    Allegro中的约束规则设置V1.2.pdf

    ##### 2)“Attach property”绑定约束 在设置完约束的具体数值后,下一步是将这些约束与具体的网络或对象绑定。这一步骤确保了只有符合约束条件的对象才能应用这些规则。例如,对于DDR2设计,需要将DDR2_50OHM约束...

    Allegro中的约束规则设置1.2[整理].pdf

    * “Attach property”绑定约束:在这里可以绑定约束到特定的线宽和过孔上。 * “Assignment table”约束规则分配:在这里可以将约束规则分配到特定的线宽和过孔上。 Spacing rule间距约束设置 Spacing rule是指对...

    spring MVC数据绑定大全

    如果Spring MVC的默认行为不能满足需求,可以通过实现`org.springframework.web.bind.WebDataBinder`的初始化方法`initBinder()`来自定义数据绑定的行为,例如设置特定属性的约束或自定义转换器。 ```java @...

    3dmax点约束到轴插件

    点约束是3ds Max中的一个关键概念,它允许我们将对象的一个或多个点绑定或“约束”到另一个对象的特定位置,如轴心。这样,当被约束的对象移动时,约束点会跟随其移动,从而实现复杂运动的同步。这个插件将这一功能...

    Quartus中约束脚本及用法汇总

    set_location_assignment PIN_L1 -to clk // clk 管脚绑定 set_instance_assignment -name IO_STANDARD “3.3-V LVTTL” -to clk // clk 电平 set_instance_assignment -name CURRENT_STRENGTH_NEW “MAXIMUM ...

    动态绑定+cell自适应高度

    在iOS开发中,"动态绑定+cell自适应高度"是一个重要的技术点,它涉及到UITableView的高效使用和用户体验的提升。动态绑定是指在程序运行时,根据数据模型动态地设置UITableViewCell的内容,而cell自适应高度则是指让...

    约束默认和规则

    ### 约束在数据库中的应用 #### 1.1 查看约束 使用系统存储过程`sp_helpconstraint`可以查看数据库表中所定义的所有约束。例如,在`student`表中,执行以下SQL语句: ```sql EXEC sp_helpconstraint student; ```...

    maya游戏角色绑定

    Maya游戏角色绑定是游戏开发中的一个重要环节,它涉及到角色在三维空间中的运动模拟和控制。在Maya中,角色绑定通常使用骨骼系统、IK(Inverse Kinematics)和控制器来实现,以便于动画师进行角色动作的设定和调整。...

    说说MVC中的模型绑定问题

    3. **数据验证**:在绑定过程中,可以进行数据验证,确保传入的数据符合预期的格式和约束。例如,验证必填字段、检查邮箱格式等。 4. **异常处理**:如果类型转换失败或验证未通过,模型绑定机制会抛出异常,开发者...

    Cadence Allegro中的约束规则设置 v1.2

    **2)“Attach property”绑定约束** - **选择对象**: 需要将约束规则应用到具体的对象上,比如特定的网络、层或者整个设计。 - **绑定属性**: 在“Attach property”功能中,可以选择特定的对象并绑定之前定义的...

    钢框架结构中的绑定约束力分析 (2010年)

    为探讨钢框架结构中柱子移除后,框架节点对梁的绑定约束力计算方法,分析了英国结构设计规范(BR2000 和BSI2000)中的钢结构抗连续倒塌设计要求及名义值,并对若干 H-型柱以及钢管柱节点的计算绑定约束力和实测节 点断裂...

    Java绑定XML架构的技术内涵

    - 在使用Java绑定XML技术时,首先需要定义XML Schema(XSD),该Schema描述了XML文档的结构和约束条件。 - 接下来,使用工具如XJC(XSD to Java Compiler)自动生成对应的Java类,这些Java类与XML Schema中的元素...

    论文研究 - 线性编程中的非约束约束:工业应用

    在线性编程(LP)应用程序中,意外的非绑定约束是“为什么”问题之一,可能引起大量争论。 也就是说,基于价格信号,市场驱动因素或经理的经验,预期那些约束一直很活跃。 在这种情况下,用户必须解决许多辅助LP问题...

    数据库默认值约束默认值对象检查约束规则完整性实现PPT学习教案.pptx

    本文将详细介绍数据库默认值约束的定义、使用和删除,以及默认值对象的定义、绑定和使用。 1. 默认值约束的定义 默认值约束是指在表结构定义时指定的默认值约束,用于确保数据的完整性和一致性。语法格式为: ```...

    论文研究-基于局部刚性约束的微分网格变形算法.pdf

    在本算法中,首先采用距离场方法求取模型的骨架关节点,然后在关节点上插入刚性约束架,再用均值坐标将刚性约束架和模型绑定到一起,最后通过求解包含微分约束和局部刚性约束的能量方程得到变形结果。实验表明,本...

Global site tag (gtag.js) - Google Analytics