象C++这样的古老语言可以和现代时髦的先进的语言竞争吗?
c++吧
全部回复
仅看楼主
level 1
brightsun 楼主
象C++这样的古老语言可以和现代时髦的先进的语言竞争吗?
2006年05月22日 11点05分 1
level 1
brightsun 楼主
显然,你把C++称为古老语言说明你有偏见(请看遗留代码)。把这先放一边,人们问这个问题时通常脑子里想的是Java或C#。我虽然不会把C++和那些语言作比较,但是我还是指出“时髦”不代表“更好”。Java和C#的根源都是80年代风格的OOP,这种渊源甚至比早期的C++更深。自从1987年前后开始,C++语言的发展焦点和相关的编程风格开始转向使用模板、静态多态性、泛型编程和多范型编程。这远远超出那些被大量炒作的专有语言的范畴。另一个重要差别是C++对用户自定义类型的支持达到了和内建类型同样的程度,再结合使用模板、构造函数、析构函数,C++程序员可以运用(我认为的)更高级的编程和设计技术,这是那些经常拿来和C++作比较的语言支持不了的。标准C++和它所支持的设计编程技术欠了函数型语言(functional language)很多情,特别是ML语言。ML早期变种的类型推导机制(以及其他很多东西)是创造C++模板的灵感的一部分来源。函数型编程(functional programming)中一些更有效的技术启发了STL和C++函数对象的使用。而另一方面,函数型编程的社团错过了面向对象编程的浪潮,他们的语言和工具很少受益于大规模业界实践的成熟经验。显然,我也不认为编程语言里,有没有垃圾收集是判定“先进”与否的唯一决定性特征。特别是C++提供了有效而高效的内存管理技术,你不需要使用垃圾收集器也可以消除资源泄漏。如果你不同意,那也有很多不错的C++垃圾收集器可以使用。
2006年05月22日 11点05分 2
level 1
brightsun 楼主
Q: 如果你不必考虑和C兼容,那么你设计的语言会不会就是Java? A: 不,甚至不会接近Java。如果有人坚持要把C++与Java作比较,我建议他们读一下The Design and Evolution of C++(D&E),他们可以看到为什么C++会是现在这个样子,然后按照我对C++设立的设计标准来衡量两个语言。这些标准显然和Sun的Java小组设立的标准不同。尽管语法上很相象,C++和Java是截然不同的两个语言。在很多方面,Java更接近Smalltalk,而不是C++。像大多数新语言一样,Java的很多相对简单性部分来源于错觉,部分来源于功能的不完备性。随着时间流逝,Java会明显变得更大更复杂,它的大小会增加二到三倍,和实现相关的扩展功能和库也会有很大增长。这是每一个商业上成功的语言的发展方式。不信你可以看看任何一个你认为取得广泛成功的语言。我没有看到过任何例外,这种现象自然是有原因的。Java不是平台无关的,它就是平台。就象Windows,它是一个专有的商业平台。也就是说,如果你为Windows/Intel平台或者Java/JVM平台写程序,你的程序都是为属于某个单独的公司的平台而写,从而被这个公司的利益所左右。 虽然有人指出你可以用任何语言为JVM以及相关的操作系统写程序,但是JVM是强烈的偏向于Java的,它甚至还不如一般的对语言中立的VM/OS。就个人而言,我还是坚持用具有相当可移植性的C++来完成大部分工作,而用不同的语言做其余的。 Q: 你怎么看C
#? A: 我对C#
没有什么评论。你很难说服我为什么世界上需要另一个专有语言,更难说服我为什么还需要一个和特定的专有操作系统结合得那么紧的语言。显然,我不是专有语言的爱好者,而是开放的正式的标准的爱好者。 Q: 对于大型项目,你真的更推荐Ada吗? A: 不。我不知道这个谣言是谁放出来的,我想一定是一个过于狂热的或者存心不良的Ada信徒。
2006年05月22日 11点05分 3
level 1
brightsun 楼主
尽管语法上很相象,C++和Java是截然不同的两个语言。在很多方面,Java更接近Smalltalk,而不是C++。像大多数新语言一样,Java的很多相对简单性部分来源于错觉,部分来源于功能的不完备性。随着时间流逝,Java会明显变得更大更复杂,它的大小会增加二到三倍,和实现相关的扩展功能和库也会有很大增长。这是每一个商业上成功的语言的发展方式。不信你可以看看任何一个你认为取得广泛成功的语言。我没有看到过任何例外,这种现象自然是有原因的。Java不是平台无关的,它就是平台。就象Windows,它是一个专有的商业平台。也就是说,如果你为Windows/Intel平台或者Java/JVM平台写程序,你的程序都是为属于某个单独的公司的平台而写,从而被这个公司的利益所左右。 虽然有人指出你可以用任何语言为JVM以及相关的操作系统写程序,但是JVM是强烈的偏向于Java的,它甚至还不如一般的对语言中立的VM/OS。就个人而言,我还是坚持用具有相当可移植性的C++来完成大部分工作,而用不同的语言做其余的。
2006年05月26日 01点05分 4
level 0
OKC++的优美不是人人都体会得到的.
2006年05月26日 04点05分 5
level 1
brightsun 楼主
Java is not platform independent, it is a platform!
2006年05月27日 11点05分 6
level 0
……像unix这么古老的操作系统可以和时髦先进的windows竞争吗?结果是显而易见的。他们用在不同的领域。在必须用c++,c,汇编是就必须要用。
2006年06月04日 05点06分 7
level 0
学过编译的人都知道,java和从c是同源的。所谓不同的程序有不同的特点,何必花费时间在比较上面。
2006年06月04日 07点06分 8
1