网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VC编程 >> 文章正文
  我看国内的C++教育以及我的建议            【字体:
我看国内的C++教育以及我的建议
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-12    

学习C++,是因为效率。
正在装载数据……

学习C++,是为了对底层更牢固的控制力。

学习C++,是因为这里才存在真正的泛型。

。。。。。。

 

可是我,有点郁闷,学习C++,是为了学习MFCMFC衰落了,但是C++并没有,C++0x将是C++历史上的第二次革命,boost组件的加入必将把generic programmingtemplate meta programming推崇到极致,程序员不必把它们当作是“阳春白雪”,它们确实是我们每个人都唾手可写的。

国内的C++教育很让我心寒,首先是出版届的问题,除了台湾的侯老和国内的几个比较负责的翻译作者,别人的书基本都是垃圾。我也只看国外的书(除非不得不看国内书的时候),那是一种享受。即使像《Inside C++ Object Modal》、《Modern C++ Design》中错误百出,我仍然把它当作是艺术品,大师渊博的知识,丰富的经验尽现其中,给人的是实实在在的,具有作者特色的知识(这点很重要,不然这本书和别的书又有什么区别?)。

大三,学校开了C++的课程。

学校使用的是“马光志”的教材,完全垃圾的一本书,我不知道它比《Essential C++》《Accelerated C++》这样的入门书籍好多少,莫名其妙被骗的感觉。

下面来列举几个教材中的错误和误区,这些可能也是国内C++教育中存在的问题:

C++教学不是C教学。讲宏定义和宏展开等等这些C语言使用广泛而在C++中不提倡使用的是不值得的,毕竟上课的时间有限,应该把时间留给更有用的内容。

不需要扣语言细节。这个是学生自己的事情,而且不是那么重要的。应该把面向对象的思想传授给学生。

对于初学者,不适合讲C++对象模型。而且讲的时候不要把任何话,任何图都说的那么绝对。那些都是依赖于编译器的。这样会给初学者一种错觉,任何编译器都是一样的对象排布方式,这就有可能为写编译器无关的代码埋下隐患。

忽略标准库。不知道是不是老师们都觉得STL不是C++的一部分,如果是1998年以前,你们是对的。现在STL已经被写入ISO C++ Standard,它不仅仅是一个库,它是一种思想,一种思维方式,一种生活方式。没有它们的日子的痛苦的。

忽略模版和泛型。这是一种趋势,必然的趋势。早晚有一天,C++程序中会遍布templateTemplate有如此强大的功能可能是C++标准委员会当时也没有想到的,当初的想法非常简单,作为一种代码自动产生机制。但是后来template被证明是图灵完备的,并且产生了template meta programming这样地下油田一般的财富。

 

我走过不少弯路,还好,现在对C++有点心得,想给C++初学者一些建议。

首先,选择一本好书(国内还没有这样的好书,看国外的,如果你不知道哪本好,来问我)。像某些书(《The C++ Programming Language》、《C++ Primer》)是必看的,即使是作为工具书查阅。国际标准的文档最好也备一份,因为有些东西连上面那两本书都没讲清楚(typedef,重载决议,模版匹配规则。。。。。。天啊!BjarneStanley都在干什么)。

接下来的就是要培养面向对象的思维。多态与虚拟是其核心,这也是所有面向对象的核心。这方面没有特殊针对的书籍,一些书的部分主题讨论了这些。只能多读多写多想,有项目做最好,边做边修炼。

同时要重视标准库的学习。学习STL的三重境界:熟练使用STL,谙熟STL源码,扩充STL组件。怎么才叫熟练使用呢?就容器而言,很有可能,你对vector<bool>bitsetropeslisthashtable都闻所未闻,而algorithmfunction objectadapteriterator4个部分还有更多的内容需要了解。我的意见是:对整个STL有个大局观的掌握,需要什么再查什么。第二个境界,就需要花时间了,当然,侯捷有一剖析STL源码的书,可是书中内容可能不能满足你的好奇心,直接去SGI的网站,直接看你编译器提供的头文件,都是可行的办法。第三重境界,首先推荐两本书《Generic Programming and the STL》和《Extended STL》它们对STL的规格有详细描述,也给出了一些扩展STL的例子。

等具有OOP的思维后,就可以准备在template领域闯荡一番了。Template技巧和泛型思维比OOP更难培养,而且学习了一阵后,你可能还发现,你每每都在考虑,我该用继承还是用模版(《Effective C++Item 41告诉了你如何抉择)。当你为错误的template语法焦头烂额时,你一定要看看《C++ Templates》。当然,一些基本的东西,还是要一开始就搞清楚的(比如函数模版不能偏特化,再比如你的编译器根本不支持export关键字,而你确努力在编译器的错误提示中寻找根本找不到的错误),免得发生徒劳的辛苦。

学习C++的同时,也不要拘泥于C++,可以对其他语言,设计模式,软件工程的方面学习。

 


本文来源:http://blog.csdn.net/laibach0304/archive/2007/08/28/1761802.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     directx 图形接口指南(…
     win2k下的api函数的拦截
     用crypto  api  实现公钥…
     根据别人的md5源码封装的…
     vc中使用gdi+合并jpg图片
     document/view的交互 --…
     windows下的函数hook技术
     windows api函数大全一
     用vc 6.0实现串行通信的…
     vc++技术内幕(第四版)…
  • genexus中对字符串的格式补空…

  • struts异常_does not start …

  • 关于Linux下C/C++程序编译

  • c++ 09 :一览未来

  • visual C++ 6.0开发工具与调…

  • 看完了第二遍C++Primer,学习…

  • C++的未来,以及未来的未来

  • Visual C++编程命名规则

  • VC++消息映射

  • C++ Object Model

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David