c++的模板,其实应该说是inline,是可以作出无开销函数的。
不过就是编译器做了一个inline expansion这样的常见的优化而已。

java的jvm理论上也是可以做到的,这也是为什么stack trace不能完全依赖的原因,因为一旦jvm选择inline了,就没有那个stack frame了。

c++在inline这点上,比java低级一些(低级不是不好,就象不能说asm就不如c++一样),inline本来是编译器优化的概念,它却暴露给了程序员,c++的哲学是相信程序员,而不是相信编译器。


关于boolean vs int。其实,java的不灵活更多来自缺乏指针运算。仅仅是局部变量,把boolean当int或者把int当boolean没有一点正经的意义。或者说,如果你觉得这个限制影响了你程序的灵活性,那是假象,只能证明你的c++水平还不到。
只有面对一个buffer的时候,把int和boolean统一使用才有效率上的意义。但即使如此,允许int和boolean不经cast就直接混用也是原始的。你完全可以(boolean)i,或者(int)b, reinterpret_cast<bool*>(pi),reinterpret_cast<int*>(pb)等等。也不损害灵活性啊。
这点上,c做得就好得多

无聊的争论-_-

有了java ,再也不需要 Inside XXX, XXX 内幕, 未公开的XXX,
这一点已经足够了。

人类需要自由和开放, not open ,then go hell !

to: ajoo

我对c++不熟悉。不过就我看的那两篇文章,以及汇编结果,好像应该说,模板结和enum之类的技巧,做到的是编译期决定流程本身,有些方面可以代替macro。这里的“无开销”是指函数本身,而不是调用过程;而inline则是省掉call这个调用过程。当然,两者虽是出发点不同,但用的是同一个思维方式。

关于Int和boolean,已经不仅仅是灵活性问题。我提出这个,是想说明人在竞争的情况下,会完全放弃理智,找些不相干的、或者和对方一样不熟悉理由。从上面的争论已经很清楚地看到了 :P

人的惯性很难讲的。显式的cast对于很多人,仍然不可接受。运算符重载的滥用就是例子。

喜欢看热闹

我是新手。。。我对技术不是很懂,但看了banq的“微软思维”,我也忍不住要问问:
banq,你把世界上比java程序员多得多的MS程序员说成什么了???
另,我的思维是:合适自己的,就是最好的。

长时间没有来这里了,今天却看到这样的一个“论点”。

一直以来,对banq的精神很是钦佩,一直在做一个传道的人。 但是现在,我还是看到了我不希望看到的情形。

我认为,来这里的人应该说层次都比较高,至少写代码也应该写了好多年了,为什么还要在语言上争论不休呢?

至于语言的好坏,我觉得java和C# 甚至VB、dephi都不错,无所谓孰好孰差,什么环境下选择什么工具应该是一个智者的选择。

另外,还有一个感觉,文章作者应该没有用C做过项目

只说一句

请问banq的代码是open的吗?

大家注意了,发言对事不对人,请发表自己专业观点,倡导理性专业思维。

这里一贴因为违背jdon论坛规则被删除:

http://www.jdon.com/jive/thread.jsp?forum=106&thread=14607

“程序员表现是:懒、等、靠”
“程序员最终症状是:固执,思维奴役化,麻木,丧失自我”
“最后,请注意,上述情节纯属虚构,请勿对号入座”
我实在分不清楚这是对事还是对人,也许对“很多人”不算对“人”。。。

显然不能同意企业必须用开发系统的观点。多少企业在使用IBM的大系统?是店大还是客大的问题。

为什么要在这个问题上争论不休呢?不可理解.

把时髦的技术放在嘴边,还不如把过时的技术记在心里。。。

还好两个东东都用过一段时间。C上很多东西的确有创意,而且,这些创意是为了程序开发者。比如前面提到的using,foreach。语言为了开发人员而存在,从Tiger的变化就能看到。

关于名称上的抄袭,我很赞成。比如java抄袭c++,c抄袭java,这样开发者能找到熟悉的名字熟悉的概念。如果你要学一些稀奇古怪的名词,却发现里面包装了同一个鸟东西,会不会很气氛?

开发工具上,vs2003应该就可以媲美eclipse, eclispse的基本框架连web开发都很麻烦,可视化设计工具几乎没有。如果没有众多插件简直没法用。vs2003也有很多缺点,比如refector,但是同样可以找到很多AddIn。

vs2005的改进就不用说了,作为java爱好者只能说,狼来了!