当前位置:  开发笔记 > 编程语言 > 正文

早期约束与晚期约束:比较利弊是什么?

如何解决《早期约束与晚期约束:比较利弊是什么?》经验,为你挑选了2个好方法。

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

基于使用javascript,jQuery,jsext,actionscript,php,java,RoR和asp.net实现Web应用程序的个人经验(不是广泛或深度不具有权威性)似乎暗示了后期绑定和膨胀之间的正相关减少.早期绑定我肯定有助于检测和防止某些类型的安全错误,但自动完成和良好的IDE以及一般的良好编程实践也是如此.因此,在我的风险规避方面恢复我的理性观点之前,我倾向于抓住自己为后期约束方而生根.

但我对如何平衡权衡并没有很好的理解.



1> Moss Collum..:

传统上,早期绑定的最大优点是性能:后期绑定语言必须在运行时携带有关其所有数据的类型信息,并且失去了在编译时进行一些优化的机会.然而,随着计算机变得越来越快,并且随着虚拟机在动态优化方面变得更加智能,这种差异变得不那么重要了.


并且JITter将允许一些方法调用/消息发送变成(几乎)早期绑定调用.

2> Travis Wilso..:

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

早期绑定有两个主要好处.首先:

运行时性能

通常被接受,但通常是不相关的,因为在大多数情况下,将硬件投入到更便宜的问题是可行的.当然,有例外(例如,如果您不拥有正在运行的硬件).

早期绑定的第二个好处:

易于开发

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

易于开发是一件大事.它最大限度地减少了昂贵的程序员时间 - 而且您的开发团队越大,它就越重要.你需要平衡这与后期绑定语言的灵活性.


我认为早期语言实际上更难开发.虽然它们确实从使用编译时信息的工具中获得优势,但它们也遭受诸如冗长和冗余之类的损失,以及大量的语言复杂性以适应偶尔的动态类型,同时仍然符合类型系统的约束.例如,泛型是一种很好的语言特征,但也是一个重要的复杂因素.动态语言不需要这样的功能,因为*所有*都是通用的,无论原始作者是否有意,都不需要任何额外的语法.
我曾写过一篇关于此的文章,呃......这是:http://tartley.com/?p = 456
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有