Andrew Koening及Babara Moo谈C++学习

Andrew Koening和Babara Moo夫妇是C++领域的国际知名专家、技术作家及教育家。也许你记不住他们的名字,不过如果你是一个C/C++程序猿,那么这几本书肯定是你没看过也听说过的:《C++沉思录》、《C陷阱与缺陷》、《Accelerated C++》等。今天看书的时候看到了Koening和Moo谈及如何学习C++的一番话,觉得很有道理。这其实也从某种程度上给出了一直争论不休的“java和C++到底谁好?”及“C和C++到底谁好?”的部分答案。摘录如下。

K:当前C++的教育状况实在是太糟糕了。很多所谓的C++教材不过是C语言书,只是在结尾粘贴一点C++的材料而已。结果呢,他们告诉读者,字符串乃是定长字符数组,应该用标准库中的strcpy和strcmp来操作。一个程序员一旦在一开始掌握了这些东西,就会根深蒂固,多年挥之不去。

就起本身而言,C++是一种非常低级的语言。唯有利用库,才能写出高层次的程序来。初学者还不能自己构造库,所以他们要么用现成的标准库,要么自己写低层次的程序。确实有不少程序应该用低层次技术来构造,但是对于初学者不合适。

M:当然是库优于语言细节。两个原因:首先,学生们可以不必费力包装低层次的语言细节,从而更容易建立整体语言的全局观念,了解到其真实威力。根据我们的经验,学生们首先掌握如何使用程序库之后,就会很容易理解类的概念,学会如何构造类的技术,如果首先去学习语言细节,那么就很难理解类的概念及功能。这种理解上的缺陷,使他们很难设计和构造自己的类。

不过,更重要的一点是,艘首先学习程序库,能够使学生培养起良好的习惯,就是复用库代码,而不是凡事自己动手。首先学习语言细节的学生,最后的编程风格往往是C类型的,不是C++风格。他们不会充分运用库,而自己的程序带有严重的C语言倾向——指针满天飞,整个程序都是低层次的。结果是,在很多情况下,你为C++的复杂性付出了高昂代价,而没有从中获得任何好处。

——————————分割线——————————

这里面的几点思想是以前从来没听到过的,了解到之后有醍醐灌顶之感。初学C++的最大困惑就是,类是用来干什么的?为什么这种抽象反而让我的程序看起来更加冗长、效率底下呢?先学习语言细节而不是先学习一种应用,从应用本身出发去理解语言细节,代价是高昂的。真正工作之后,才开始理解C++相对与C的优越性——代码可组织,封装性良好,丰富的库简化了编程过程等等,这些都要在实际的项目中,才能一点点得到体现。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值