您的位置:首页 > 编程语言 > C语言/C++

希望C,C++的争论(也许是程序设计里边最经典的争论了)永远持续下去,大家你追我赶,互相促进!

2010-06-03 17:23 357 查看
有竞争才有发展,呵呵!不过说句实话,C++确实到了该瘦身的地步了!

C++的精髓是抽象,C的精髓是简单具体,悲哀的是现实世界的东西抽象容易,但是做得好的抽象很难,并且事务往往是变化的,这也是为什么C++的程序也是要一遍又一遍的重构,改写,当然C也要,但是代价小得多啊!

举个简单的例子:关于人类的抽象

class 人:public 哺乳动物



private:

重载头;

重载四肢;

重载躯干;

重载位置;

重载身高体重等;

...

语言;

肤色;

国籍;

性别;

年龄;

父母配偶孩子等;

财产;

...

public:

重载走;

重载爬;

重载跳;

重载跑;

...

开飞机;

开汽车;

...

购物;

听音乐;

旅游;

...



属性和方法太多了,而且实际不是每个个体都需要其他个体的属性,你不可能搞一个囊括所有人属性的一个类吧! 比如有个人从小到大会经历很多,C语言可以简单的用函数表示,C++则要抽象,变化一次要抽象一次,比如1岁会走,2岁会说话,5岁会算术,7岁会写字,10岁会骑自行车,16岁会开汽车,18岁有女友,26岁有老婆...麻烦的是不是每个个体都一样!!!

我们的程序客户永远是人!人总是要变化!而且出乎你的预料,出乎意料的变化恰恰是C++最怕的事!都封装好了,这时候变就必须重新来过啊!如果不影响其他的还好,如果影响其他的部分就麻烦了!!!比如一个人移民了,那开汽车的方式也许得变,一个人瘫痪了,走路方式和原来不同了,啊,好烦!

所以一个好的C++程序员必须理论/经验/长远发展/实际情况综合起来能力很强,但是程序不能太复杂,否则资源不允许,现实情况是这样的人啊太少了,大家都是没啥长远考虑和规划的(包括C/C++),看看linux内核代码就知道了,Linus原始代码还有几行呢?重要的是重写的代价,C++重写的代价比C大多了,2倍不只,真的!实际情况可能更糟,具体可以参考我在C++论坛发的Hello World C++例程。

不过我觉得C++也不可能完全被取代,毕竟你上哪里找这样一个兼顾效率的面向对象的语言呢?还和C兼容? 物竞天择,适者生存啊,因为有了C++面向对象的思想,C语言也增加了很多新特性,比如面向对象的结构体,回调函数,C++也会反思这几年的些许歧途,去掉很多华而不实的特性,增加新的功能,并向更好的方向发展的。

如果哪一天两者的争论没有了,估计他们都会挂,被新的语言所取代!就像当年讨论步兵团与骑兵团一样,最终是机械化兵团获得全面胜利!战列舰与巡洋舰哪个好?都不是,航母最牛!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐