On Nov 28, 2007 12:54 PM, pongba <pon...@gmail.com> wrote:
但是concept化的runtime unbound并未达到runtime unbound同等的特性。
通过动多态,向v插入类型归一化(符合plugable的抽象接口)的对象,可以保证永远是可靠的。但是,向v插入一个"被要求"符合plugable concept的对象,可能会在运行时引发concept失配的异常。在这个程度上两者不等价,也就无法认为concept化的runtime unbound可以作为一个超集覆盖动多态。
ok,我明白了。
就是说,我们对于编译期能够确定的,我们应当使用static,而运行期决断的采用runtime,但如论如何都必须是unbound。而应当抛弃bound这种折中的做法。
我觉得这里起决定作用的也并非是简单的性能问题。我认为真正能够打破这层坚冰的,还应当是编程技术的提升。这里的关键是runtime unbound同runtime bound付出的性能损失相比较是否进入人们能够接受的程度。如果哪位牛人使unbound可以达到bound非常接近的性能,甚至同等或超越,那么也不会存在这个问题了。
这里还要考虑心理因素。面对这个常数倍,不少程序员很自然的会选择小的那个。(包括我在内:))。尽管性能大幅提高,但是相比之下,使用bound不是能够更快吗?
这样的程序员过去很多,所以c++对性能那么敏感。今后当然会越来越少。但除非这类程序员不再把持基础系统的开发,否则无法让人们真正地接受unbound形式。而要让他们屈服,也只有让这个常数倍足够小。
此外,为了获得这个性能就必须有所牺牲,用static bound毕竟有麻烦的地方,
我有两个问题:
1、能不能简单地解释一下什么是"接口的侵入性"?
2、"实际上,接口整个儿就是向效率妥协的产物。"这个不对吧,抛开效率不谈,接口本身也具备明确的语意。
在 07-11-29,莫华枫<longsh...@gmail.com> 写道:
在 2007-11-29四的 14:37 +0800,莫华枫写道:
--
"Live Long and Prosper"
- oldrev
这个当然算是向性能妥协了:-) 而且就是一个抽象漏洞。
我感觉不是这样的。
什么是抽象?为什么这叫抽象漏洞?
这很明显只是C++不进行运行时检查导致的问题而已。所有的运算是否溢出都必须在运行时进行检查才知道,而C++[包括C]的特点就是尽可能小的运行时,甚至很多人都说C不需要运行时[当然其实是需要的,不过确实很小罢了]。
说是性能妥协勉强可以接受,但是显然C/C++的骨子里就是这样的体质,就是希望寄托于程序员,就是用这样的不安全性换取性能最大化。
那也没有看到现在的主流语言采用数学上的Integer概念而不是short int long这类有漏洞的抽象啊。你能说出来几个没有抽象漏洞的语言?
当然,如果你用XSD来顶缸,我没有办法,但对我来说,语言[计算机程序设计语言]一定要是可实现的。