1、网友fastest286: C++ 的编译速度让我不敢使用一些大型的优质库, 例如 ACE, 非常郁闷. 现在我开始使用 D 来写程序了, 感觉不错. 目前还没有什么好的 IDE, debugger 也只有 windows 下面好点. 平时的 现在一点就不想用回 C++ 了. 这个编译器, 在 vmware 中编译自带的类库(带网络, container, 文件, io, 甚至还有一个 cluster 系统), 总共不到10秒钟, 编译我自己的程序, 1秒钟都不用.快速的编译, 加上方便的 unittest, 和用 python 写程序的快速写, 快速调的感觉相象. 2、网友benjiam: 语言不是宗教。 但语音是信仰。 linus 的水平 这里没人能比得上,他对c++ 的理解水平这里也没人能比得上。在越来越花哨的。编程面前,我们不要忘记我们只是操作 3、网友andy_show: 个人认为,这个世界上最好的 C+ +好比一种威力强大的武功心法,但是太容易走火入魔,坦白的说,我写了十多年的程序,但是在现实中很少见到C++写的好的程序员,一个很重要的原因是C+ +的丰富的特性会把人引入歧途,你会不自觉的选择复杂的设计,现实中的很多代码是许多人在学习过程中写成的,而很多人在使用这些C++的特性的时候并不明 确这么使用这种武功是否合适!这样的代码可能遍布很多以C++作为开发工具的产品中。 而如果让这些程序员从一开始就用C的方式去写,可能就不会范他们用C++时所犯的错误,从这个角度而言,C语言的简单性恰恰是一种优势。C++的复杂性会 使很多人误用。而C语言的简单性,一般情况下都会迫使你使用比较简单的设计,例如C语言不能在语言层次上提供类继承的方式,那么它会迫使你更多的使用组 合,而不是继承这样的重用方式,即使你可以用函数指针表的方式实现多态,也不可能象C++那样把类层次扩展了一层又一层。 在c语言中,函数指针表的在c语言中以更接近于定义接口的方式被使用。这些都是C语言的简单性迫使你做出的选择。而很多C++的程序员却在C++的丰富的特性前面忘了简单性原则的重要性。 4、网友middle: C用来实现封装性很简单。比较难以用C直接实现的是继承和多态。不过在现实中继承和多态真的是可以用的少之又少的。很多所谓的继承和多态的“设计”完全可以用基于策略的方式来完成。基于策略的方式在C里用函数指针或者表驱动完全可以做到。 很多不得不用C++高级特性的“设计”,其实从一开始就使用Java甚至script更容易做到。OO并不是模块化和可维护性的唯一可行方式,甚至不是最优的方式。而C++的OO实现也不是很好的实现。 5、网友junhao: C是精炼的,C++是灵活的,但也是让人头疼的,自己取舍吧。 6、网友lioqio: 个人编程感受: 1、在 2、在操作系统上层是可以用C++的,比如windows使用的Kernel streaming,个人感觉远比Linux的V4L2漂亮多了。以及在OS/X的IO/Kit(Object C)和window的KMDF等内核驱动开发框架,使得驱动开发非常简便。(顺便说一下,从这点来看,是linux在学windows,windows在 学apple:) 3、对于应用开发,如果规模大一些的本地 4、但说到底,我们一般用C++的特性,C完全都可以自己做。 7、网友psusong: 用C 设计接口,用C++来实现,例子就是Windows里使用的标准DLL,我们一般这样做:DLL里提供一个NewInstance的接口,返回一个实例句 柄,其他的接口函数的第一个参数都是一个实例句柄,另外还有一个DeleteInstance的接口函数,这样接口也能支持多实例。我也是这样做的,这样 自己代码写起来爽,别人用起来也爽。 网友反对观点论 1、网友pass86: C++机制很多,强大在于此。 面向对象 变相过程 基于对象 泛型编程 2、网友duyanning: 也太搞笑了吧,总拿全功能的std::string跟几乎啥也不能干的char*作比较,谁规定你只要用C++处理字符串就得用std::string了? 拜托,如果你的需求很单纯,如果你又很在意效率,你完全可以不用全能的std::string,std::string的存在并不能作为妨碍你创造适合你需要的your::string从而提升抽象层次的借口。 Torvalds理糙人更糙,我彻底失望了。 应当搞清楚,作为操作系统内核级的开发者,在不清楚自己所用的std::string实现都在背后做了些什么的情况下就敢用,这是他自己素质的问题,而不 是他所用std::string实现的问题。如果不清楚std::string是怎样实现的,而std::string的行为对于你的程序又很关键的话, 就请去调查,去弄清楚,然后选择要不要用,而不是抱怨std::string背着你如何如何。 假如他选择的不是C++的std::string而是某个用C写的字符串函数包,那他是不是也要因为不清楚这个字符串函数包的具体实现而要对“一切抽象及复用”进行否定呢? Torvalds仅仅是在敌视C++吗? 他已经把他自己放在一切计算最根本的“抽象”的对立面上了。Torvalds长期以来对于C++和C++用户的侮辱让他看起来更像是个小丑。 3、网友1073X: 做系统软件开发的时候,重要的是理解系统的运作方式,那些漂亮的抽象手法和高级特性是次要的。这是怎么说的?软件本来就是一层一层又一层的,要在何种层次上开发,就应该在何种层次上理解。因为没有理解下层而不放心上层是完美主义者的心理障碍。 OO又不是只有抽象,C++比C明显的优势就是更合理的数据封装。不如说Torvalds对OO还没有入门。 4、网友fish6344 大家不必在意别人对C++语言的敌意!听听java、Delphi及C#等语言的发明者们的声音,无一不是在大谈他们的东东的好处,而C++是这也不好那也不好。但他们在自诩自已的语言效率极佳的时候,无一不拿C++作为参照(声称等同甚至超过C++)! 他们总用自已偏爱的语言的优点(未必是优点)去攻击C ++的缺点(也未必就是缺点), 这其实说明他们在潜意识上已视C++为开发工具的标准,这点很象中国古时候那个卖矛和盾的人!即使是Linus Torvalds对C++的异议,我认为异议的实质也是他对OOP以及使用C++而滥用继承的人的不满,对C++语言的攻击反而略显苍白。 科学领域本身就是百家争鸣的世界,语言激烈点也未尝不可。但我觉得每一种语言都应该被我们所尊重。各种语言的存在,自然有其存在的理由。 C++在今天,的确今非昔比,但这并不是因为C++不够好、不如其它语言,主要原因是今天的电算环境和C++诞生时相比,发生了巨大的变化。互联网兴盛, 硬件性能提升而价格下降等等因素导至java应运而生。C++作为一个80年代诞生的静态语言,加上它赋预使用者太多的权力(权力可是双刃剑啊!)、标准 的约束性以及C++的教育状况,有今天的境况是完全自然的。 所以大家不必在意世人对C++的非议,我可以作这样的比喻:如果你想作一个原始社会的部落首领,请用汇编;如果你想当一个封建君主,请用C;如果你想作一 个开明伟大的国家元首(当然你必须有超凡的驾驭权力的能力!),可以使用C++,如果想当大臣,知府什么的,那会有更多的选择...... 我永远爱你-C++! |
|