- 论坛徽章:
- 2
|
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
C++的创始人根本就不怎么关心OO,所以才成为你说的四不像.
赤裸裸的污蔑!!! 你有任何证据吗? 否则就别在这里放屁!!!
C++的前身就是C with class。 他在C上增加的唯一东西就是对OO的支持。
看看Bjarne Stroustrup是如何引导C++开发者做更好的OO设计:
现代C++风格, http://www.royaloo.com/bjarne/interviews/bs_artima2.htm
里面就提到了如何在C++中使用interface, 以及interface的重要性。
template机制是在OO之后才加入C++的。
是否对范型的支持是不必要的???? 是否因为有单根, 一切都是object, 就不再需要范型了????
绝对的错误观点。 否则java干嘛要加generic???
因为纯oo的开发范式,并不能很好的满足需要。
是不是因为java加入了generic, 他也是四不像???
而后人关于template的成就, 大大超过Bjarne Stroustrup的预期。
functional,是因为STL之父的工作。
template metaprogramming, 也是后人利用template 实例化机制, 将其作为一种子语言使用。
这些都不足以说明 “C++的创始人根本就不怎么关心OO”。
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
纯技术爱好者的末路可以参考孔乙己.
闭关, 固步自封者的末路可以参考清政府。
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
既然承认自己愤,就别打太极.你要么纯粹就是一个技术爱好者,不靠编程来养家糊口,要么就是在麻醉自己.
小样, 懒得理你还得意起来了。
同样, 你说话有证据吗? 满口胡言。
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
OO的本质是思想而不是某种语言提供的特性
OO是思想, 不是语言提供的特性。
函数也是子过程的思想, 不是语言提供给你的特性。
操作特定cpu,也是思想, 不是语言提供给你的特性。
C提供给操作不同cpu的特性, 你是否使用C?
C提供给你函数的特性, 你是否使用函数?
语言是工具, 是表达思想的工具。
某种思想如果语言不提供支持, 表达起来就是憋足的。
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
GNU项目中用C来实现面向对象的代码很多,就从这点看,你对技术的爱好恐怕还真是有限度的。
我们就来看看谁是有限度的。
也请你拿出具体的证据来。 哪个gnu项目中, 用c实现了面向对象。
实现到了何种程度???
不要张口闭口就说oo,c也行, 误人子弟。
试试把下面的c++代码翻译成c only???
struct I1 {
virtual ~I1();
virtual void f1() = 0;
virtual void f2() = 0;
};
struct I2 : I1 {
virtual ~I2();
virtual void f3() = 0;
};
class C11 : public I1 { };
class C12 : public I1 { };
class C21 : public I2 { };
注意, 这里仅仅使用c++的一个受限子集。 并没有出现实现继承, 和多继承。
C11* c11 = new C11; // 为简单, 省略工厂类
I1* i1 = c11; // 编译时检查, 正确的行为。
i1->f1(); // 多态。 典型时空效率:1个对象,一个虚表指针。1个类,一份虚表。 虚函数调用常数时间开销。
C12* c12 = new C12;
i1 = c12; // 编译时检查, 正确的行为。
i1->f1();
C21* c21 = new C21;
i1 = c21; // 编译时检查, 错误。
尤其注意注释中的细节部分。 |
你真的用过c去表达oo思想吗?? 还是人云亦云??
在我看来, 许多号称c表达oo的地方, 仅仅是c++的如下表达。
class c {
struct Impl;
Impl* impl_;
};
也就是, 仅仅是接口与实现的分离。根本没有多态。
多态在c的设计中是否重要, 我不清楚。
但是, 接口与实现分离, 仅仅是接口与实现分离。 那只是oo的一部分, 不要说那是oo。
原帖由 nutcracker 于 2009-3-26 19:04 发表 ![]()
正是因为你说的,C++是万金油,所以啥编码风格都有,工程中四不像的代码比比皆是,别告诉我阅读和维护这
种代码也是一种享受.什么?你说你从来不用看别人的代码,程序都是自己从零写的?那你就尽情享受去吧.
关于这个, 我上面也说了, 要完成更多的任务, 语言不得不更加复杂。
java也是在越来越复杂, java也部分支持generic, 是否使用了generic的java代码也是四不像???
c++社区从来没有倡导你去使用c++的高级特性。
那不是给你这样的人用的。 不要因为你掌握不了, 就说他不好。
如果你掌握不了, 请使用陶瓷剪刀。
不要割到自己手了就在这里叫唤。
[ 本帖最后由 OwnWaterloo 于 2009-3-27 11:37 编辑 ] |
|