从一个普通VC学习者的角度对VC的看法

[复制链接]
查看3233 | 回复7 | 2007-5-11 14:29:00 | 显示全部楼层 |阅读模式

[upload=rar]viewFile.asp?ID=987[/upload]

看了前面一篇"论c/c++程序员的门户之见",心有所感,也来谈谈从一个普通VC学习
者的角度对VC的看法。

首先介绍我的学习情况,我是属于那种MFC的所有类基本上都懂得一点,但又懂得不多
,每种技术都懂得一些,但又不甚深入的那种。对我来说,似乎什么VC编程都会,但是都得花
一番脑筋才能编好。我的学习历程是这样的,我在大一时必修课学了C,大一下自学了C++,
大一暑假编了平生第一个"类库",自以为C++学得不错了,就开始学VC。

谁知这就是痛苦的开始。

我在学C++的时候,可以一个学期就光啃一本书,而且没上过机(直到暑假才把上机实
践补上),还能看的津津有味,可是这本VC的书,我花了几周时间看完以后,就有上当的感觉
。没错,我会编DOC/VIEW了,我会编对话框,按钮,控件了,可是光这些有什么用?

我不明白为什么VC没有入口函数而要在InitInstance里头加入初始化代码。
我不明白为什么VC非得用文档/视窗(现在叫视)结构,去掉了它会有什么结果?
我不明白Windows消息循环是什么机制,为什么我用ClassWizard可以加入消息映射,
而手工添加的时候就老出错,ON_MESSAGE是什么意思?更可恶的是,为什么我往工程中添加
一个空的CPP文件,编译器就要说我错误。
为什么,为什么这么多为什么我也不知道...

于是我渐渐地对学习VC不是那么热心了,开始报着什么时候用什么时候学的态度来学
VC了。于是我开始学一点忘一点,于是我在回答别人提出的问题时,只能以一句"你去查查
MSDN,我也不大清楚"来应付。

所以,我的感受是,VC教学需要改革,那些为VC入门者写书的人,请记住VC是VC而
不是VB,学VC不是只会点几下鼠标,会做几个按钮对话框就叫会了。你们应该为初学者想
想,至少应该想想你们自己当初学VC是怎么过来的,你们写的书对初学者很重要,不要
把他们引入学习的歧途!我一直期待着有一些高手,写出这样一部书,暂起名为"通向程
序员之路"(老套了一点,将就着用),它包括下列这些内容:

1.C/C++语言基础
不用说了,现在大部分这类书都能满足读者的要求,这个部分抄抄别人的就行啦.:P

2.面向对象分析原理和类库的构造
这个部分可是C++程序员的看家本领,也是VC程序员值得向其他VB程序员或JAVA程序
员称耀的地方。VC程序员可以是一个系统的构造者,而VB程序员只能是一个使用者。一个
成功的VC程序员可以自豪的说,给我时间,我可以编出一个MFC,VB程序员可以吗?
所以这个部分一定要有老资格的牛人来编写,应该结合一个具体的类库实例来编。

3.Win32 API编程
不要以为这一套已经过时了,只有学了Win32 API,你才能真正理解什么是Windows
操作系统,这部分的源码可能会很长很罗嗦,但是结合光盘上现成的例子,也不用你自己
写什么代码了,反正真刀真枪用到这个的还真的不多。总之这个部分重在Windows操作系
统原理和编程原理的讲解,当作例子的源代码嘛,估计是又长又臭,这个部分需要及其富
有爱心的老同志来编。

4.MFC构造精解
注意是MFC构造精解而不是MFC大全,不是流水账似的铺诉都有哪些类啦,这些类都有
哪些函数啦,这函数有什么用啦。而是MFC为什么要这么构造,如果要你来编MFC,你会怎
么编?是否和Microsoft不谋而合?
这部分正是全书最难编的地方所在,这里需要一位绝绝对对的VC高手来编。恕我直言
,现在大多数写书的人,恐怕都没有达到这个水平,或是不肯显露真本领给大家看。
这部分的妙处在于,读透了它以后,你就是VC高手了!(我KAO,MFC我都可以编了,
我不是高手是什么?)

5.VC编译原理
VC比起在DOS下的TC,BC简直是娇贵到了极点,这里一行,ClassWizard阿姨保管这一
片,小朋友不要乱动欧,乱动要打屁屁的欧,那里一句,AFX_XXX老大罩着这,小子要命
的话快给我滚。还有#ifndef ~~!!@#$$@%@%@,#pragma ...,让人家一看就晕菜,难怪人
家说VC是一朵带刺的玫瑰,想要可是碰不得。
请一位护花使者挺身而出,为玫瑰美人除去这一身的臭刺。

6.从COM到ActiveX
COM,Interface,Dispatch等等一个一个娓娓道来,当然也要认真介绍我IUnknown了
,直到ActiveX服务器,ActiveX OLE文档,ActiveX控件,DCOM,COM++,前面几本书都讲的
那么精彩了,到这我就不信你不入迷。

7.其他
到这你就是一代大虾了,加上一本手册或MSDN,电脑就是玩弄在你的手里的了。Win
Socket,串口通讯等那一套只是一层窗户纸,捅破了就没什么了,至于通讯协议那一套可
就不是本书的内容了,概不受理。对了,最近星际争霸挺热的,帮忙给编一个作弊器吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
xuliang987 | 2007-5-11 20:22:00 | 显示全部楼层
学习中
fangwuhui | 2007-5-15 11:23:00 | 显示全部楼层

??:(huanghe8005)?????VC???????VC?...

1.把C++当成一门新的语言学习(和C没啥关系!真的。);

2.看《Thinking In C++》,不要看《C++变成死相》;

3.看《The C++ Programming Language》和《Inside The C++ O bj*ect Model》,不要因为他们很难而我们自己是初学者所以就不看;

4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;

5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;

6.会用Visual C++,并不说明你会C++;

7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;

8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;

9.看Visual C++的书,是学不了C++语言的;

10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?

11.浮躁的人容易问:我到底该学什么;——别问,学就对了;

12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;

13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!

14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;

15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;

16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;

17.C++不仅仅是支持面向对象的程序设计语言;

18.学习编程最好的方法之一就是阅读源代码;

19.在任何时刻都不要认为自己手中的书已经足够了;

20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;

21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;

22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;

23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;

24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;

25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;

26.请看《程序设计实践》,并严格的按照其要求去做;

27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;

28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;

29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;

30.读完了《Inside The C++ O bj*ect Model》以后再来认定自己是不是已经学会了C++;

31.学习编程的秘诀是:编程,编程,再编程;

32.请留意下列书籍:《C++面向对象高效编程(C++ Effective O bj*ect-Oriented Software Construction)》《面向对象软件构造(O bj*ect-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;

33.记住:面向对象技术不只是C++专有的;

34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;

35.把在书中看到的有意义的例子扩充;

36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;

37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;

38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;

39.C++语言和C++的集成开发环境要同时学习和掌握;

40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;

41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;

42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);

43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;

44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;

45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;

46.记录下在和别人交流时发现的自己忽视或不理解的知识点;

47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;

48.保存好你写过的所有的程序——那是你最好的积累之一;

49.请不要做浮躁的人;

50.请热爱C++!

codeceo | 2007-6-5 11:31:00 | 显示全部楼层
收藏,经典啊
fschs | 2009-12-2 09:48:00 | 显示全部楼层
精辟
19870418 | 2010-4-14 10:38:00 | 显示全部楼层
经典啊
shenjie | 2010-9-30 07:02:00 | 显示全部楼层
好东西
yyyang | 2011-8-12 16:44:00 | 显示全部楼层
真的精辟!!
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则