C++到底是恐怖还是优秀,浅谈C C++的本质区别

  今天看了小编推荐的一篇文章“恐怖的C++语言”

  文章地址:http://blog.csdn.net/haoel/archive/2009/12/04/4938200.aspx

 

     我说下我的意见吧,我虽然是菜鸟,但开始学到时候也是先C后C++的,现在在用C++builder做开发;可以说,BCB是一个c++作用一个很好的例子。

     我承认,C的问题确实比C++要少。 C语言,我们的入门语言,他相当于一个母亲,C++只是他的一个功能上的继承和扩展,C能完成的,C++几乎都能完成,但反之却不然。
     别因为这样说C++不好,C++是更加方便programer去编程,比如类的引进,丰富了很多算法,其特性更加是使编程变的人性化,可以说是向自然化编程的一个进步,这个特性也就是面向对象。俗话说的好,言多必失,功能越多就会导致很多负面问题,lz指出的就是其中的一个,我们要做的不是因此而畏惧C++,而是要在实际编程中避开这些问题,甚至有能力的要去修正这些问题。

     讲一个很有趣的例子,粗浅的揭示C和C++的“一”个区别。

     回忆去年我参加校举办的程序设计竞赛的时候,第一题,我是全场提交最快的,而且正确。题目是兔子问题:

     有一对新生的兔子,从第三个月开始它们每个月生一对兔子,新生的兔子从第三个月开始又生一对兔子,按此规律,加入兔子没有死亡,20个月后有多少对兔子,要求写成控制台应用程序!

     当然当时应该没人做过这道题,大家都是新生,很多人开始不知道是斐波那契 数列,我也不知道,我把它当成一道模拟题来做了,因为当时正是自己学C++白炽化的状态,碰到什么都首先想到面向对象。

    看到题目,我一点都没思考,直接敲代码:题目怎么说,我就怎么做。

    题目的对象是一对兔子,那我就建一个兔子对类:

    typedef class drabbit{}*dr;

    一对兔子在当月产生后,要再过一个月(也就是第三个月开始)才会生自己的兔宝宝。

    一出生的一对兔子的月龄用age来表示,初始age=0;我们知道经过0月和1月后,即该月发现age已经为1,那么该新生一对兔子

    生兔子的过程,我们用dr rt=new drabbit;来定义。

    然后,我们把我们想象成大自然,那么我们要循环遍历当前所有的兔子,看它有没有能力生小兔子。为此,我们要建立一个兔子的链表来记录每个兔子的情况;为此我们只需在这个类中添加一个next指针。

    以下是代码:(未编译)

  

   其他同学基本都是用C或其他语言来解决的,问了几个人之后,都说是,先分析题目,然后发现了这个规律,然后进行答题。然后用C的方式(算法方式——可能也有用C++的,但是也是依靠算法)。而我,但我看到答案之后,我知道,这是有规律的

   可能有人会说,这样的C++代码,绝对效率没有C算法形式高,我承认,对于这道题目是的,但是,世界不是仅仅一个规律,如果还要表达的更加实际,比如,兔子得病的规律,兔子偶尔不生兔子的规律,兔子失踪的规律等等等,随着越来越多的往里面添加规律,如果要用纯C来表达,那将是多么麻烦,容易出错的一件事。而且就算你做出来了,请问,谁还愿意去读你的代码?不要把每个程序员都当做数学天才。

   这里还有个误区,程序员水平的一个评判标准:算法设计能力。我自身是很喜欢算法设计的,但我觉得,每一个一个好的程序员,并不都是数学高手,数学高手也不一定能成为好的程序员。算法设计能力固然重要,但是程序员要做的是,完成客户所给的任务,而且要和你的开发团队分享你的代码。算法对程序员来说,我觉得是低逻辑建模一等的,逻辑建模才是最重要的,如果你学会了建模,不但可以让自己的队员能够很好的理解自己的程序,而且,遇到了不会的问题,或者算法,你甚至可以建立一个模型,交给数学顾问去解答。

   C++和C的不同处也就在于,C++的建模是很强大的。也许C也有struct,但是struct在class的功能之前是几乎没有优点的。

   从大一的参与项目,到大二的项目负责人,我的设计方式,也从之前的盲目入手,到现在的建模分模块,验证了人类做项目的历史,开始的人们都是以一个人为主,强调的是个人主义,一般一个项目都是一个人去开发,随着项目规模的变大,这是肯定不可取的,那样一个人的工作量就太大了!这就是世界的项目潮流趋势,建模分块,各负其责。

   可能讲的有点偏了,但我想说的是,上面的所有例子都验证了同一个规律。C++的出现是符合这个规律的,是一种进步。我们要做的不是在这基础上去回退,而是要努力带刺前进,把这种规律进行道理,也就是尽量去完善C++,和C++一起进步。

 

   

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值