smalltalk - 早期绑定(bind)与后期绑定(bind) : what are the comparative benefits and disadvantages?

标签 smalltalk late-binding early-binding

在讨论计算机语言的演变时,Alan Kay 说他的 Smalltalk 的最重要的一个属性是后期绑定(bind);它赋予语言可塑性和可扩展性,并允许随着时间的推移重构不适当的耦合。你同意?早期绑定(bind)是否存在补偿优势,可以解释为什么它似乎是可以使用其中任何一个的领域的两种范式的主导?

我的个人经验(不够广泛或不够深入,不足以具有权威性),基于使用 javascript、jQuery、jsext、actionscript、php、java、RoR 和 asp.net 实现 Web 应用程序,似乎表明后期之间存在正相关性结合和减少膨胀。我确信早期绑定(bind)有助于检测和防止一些类型安全错误,但自动完成和良好的 IDE 以及一般良好的编程实践也能起到同样的作用。因此,在我的风险规避方面恢复我的理性观点之前,我倾向于发现自己支持后期约束方面。

但我真的不太清楚如何平衡这些权衡。

最佳答案

根据我对高性能软件(例如游戏、数字运算)和性能中性软件(网站、大多数其他软件)的经验,后期绑定(bind)有一个巨大优势:您提到的可延展性/可维护性/可扩展性。

早期绑定(bind)有两个主要好处。第一个:

  • 运行时性能

被普遍接受,但通常无关紧要,因为在大多数情况下,可以通过硬件来解决问题,而且成本更便宜。当然,也有异常(exception)(例如,如果您不拥有正在运行的硬件)。

早期绑定(bind)的第二个好处:

  • 易于开发

似乎被低估了。在开发人员使用其他人的组件的大型项目中,IDE 可以读取早期绑定(bind)并使用它们来通知开发人员(通过自动完成、文档等)。这对于后期绑定(bind)不太实用,因为绑定(bind)是在运行时创建的。如果 IDE 可以从代码推断结构定义,那么使用后期​​绑定(bind)语言仍然是可能的,但由于结构总是可以在运行时更改,因此它不太可靠。

易于开发是一件大事。它最大限度地减少了程序员昂贵的时间——并且您的开发团队越大,它就变得越重要。您需要平衡这一点与后期绑定(bind)语言所获得的灵 active 。

关于smalltalk - 早期绑定(bind)与后期绑定(bind) : what are the comparative benefits and disadvantages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367411/

相关文章:

smalltalk - 如何以编程方式将类变量添加到 Pharo 中的类中?

operator-overloading - Smalltalk 中的运算符可以重载吗?

c++ - 使用派生类构造函数初始化对象

excel - 如何使用 VBA 和后期绑定(bind)(无 ADO、无 DAO)将 Excel 数据移动到 Access - DoCmd.TransferSpreadsheet 运行时错误 424?

dynamic - 在 Django 中,如何后期绑定(bind)未绑定(bind)的表单?

excel - 在我的 VB6 项目中将 Excel 2003 的引用替换为 Excel 2010

c# - 在 CRM2011 插件中创建 OrganizationServiceProxy 以使用早期绑定(bind)

smalltalk - 如何在 pharo 或 squeak 中更改 CommandShell 窗口中的字体?

smalltalk - 在 Pharo 中绘制表格

python - Tkinter。使用 "different"命令函数创建多个按钮