如何成为一名优秀的程序员(下)

来源:互联网 发布:java io流复制文件 编辑:程序博客网 时间:2024/05/22 15:39

刚刚拜读过的一篇文章,感觉写的很精彩,与大家分享.
>>>>>接上一篇>>>

如果你从来就没有接触过编程,那你学习 VC 的速度可能会比学过面向过程编程的人要慢一些,

因为你要去理解命令及语句的含义。但只要你努力,并且可以得到别人的帮助,在半年内你会对 VC

有一定的认识。

也不要以为学过面向过程编程就很容易学会面向对象编程。面向过程与面向对象实在是区别太

大了。就拿封装一词来说吧,当初我是左想右想才想通的。所以不要自己学过编程,就会在学习

VC 的通道上比别人轻松。学习VC是一项费时费力的艰苦学习过程。为了真正用好 VC,你不得不

先从 OOP 开始学起,也许浏览一本纯理论的书要更有意思。你将从另外的角度考察 OO 思想。

接下来学习 C++,学习 Windows API,学习 MFC,剖析 MFC,扩充 MFC,创造自己的类库(不要企

图写一个和 MFC 同重量级的类库),然后精通 Microsoft C 编译器的各种参数,研究微软 C/C++

语言编译器的进化历史(结合各种背景知识)。掌握了编程的思想,征服 VC 只是时间问题。

现在有一种现状应该让我们注意,我发现有很大一部份初学者觉得 VC 是一种语言,C++ 又是另

一种语言。有的初学者竟然还认为学 VC 为什么就没必要学 C++!我想这个问题是很多人都没有注

意到的。就是 C++ 对 VC 学习的重要性。我这有个例子,跟大家讲一下。我有个同学,他接触编程

比我要早,在我还在为 VC 中“::”号怎么标记的时候,他学习 C 已经很久了。后来,我对 VC 稍

有理解的时候,他也发觉 C 的跟不上时代的脚步了。我便提议他从 C++ 语言学起,可他认为自己

有 C 的学习功底,根本就用不着再去学习 C++。可在学习 VC 的当中,遇到的困难真是数不胜数。

最近,他还是去买了一本学习 C++ 的书,从头学习 C++。 我希望通过这个例子,能让广大的初

学者知道 C++ 对学习 VC 的重要性。

在我的理解,VC 只是一个编程工具,就如 BC、BCB、Delphi 一样,其实对于编程最根本的就

是三个方面,语言、开发包、 操作系统 API,他们三个方面应该说是相对比较独立的。

学习 VC,必须有对 C++ 深刻的理解。举例,对于虚函数,不仅要知道有这么一个东东,更要

知道它的内存镜像 。这样才能对 VC 中很多的东西举一反三,事半功倍。本人学习 VC 近 2 年,

但自觉第一年由于心情浮躁,把 VC 的书翻了一遍又一遍,却每次都只看了一点就无法再深入。直

到毕业前夕,痛定思痛,克服浮躁,认认真真的从最基本的开始学,把每一点都搞的水落石出,经

过三个月的刻苦,终于大成。直到现在,半月搞定 COM / DCOM,都托当日刻苦之福,因此劝告想学

VC 的朋友,一定要顶住开始的艰难岁月。成功属于刻苦者。

学习 VC,还要对 WINDOWS 运行机制有深刻理解,才能成为高手。这需要学习微软的技术,其

中 Windows 编程,Win32 系统(实际上 Win32 系统实现了很多我们在屏幕上能看到的东西,最起

码 NT 的内核并不大)是一定要学会的。另外,COM(深入研究它,理解对象是如何跨越进程边界的,

最终能够自如地在 EXE 中实现自己定义的接口才算到家了。不过这多少有些不太必要)、Dcom、

ActiveX、Windows DNA 等等,如果你有能力,学吧。

我不赞成滥用 ActiveX,一来我以为它的性能很成问题,真是又大又慢又不稳定(可能是我有点

偏激了吧),二来用了它您的程序今后就要被别人牵着鼻子走了。有次我用了个控件,程序都写了

大半了,它给我来个继续使用请支付 333 美元,我两个多月的工钱,烦不烦人?现在我尽可能用别

人写的源代码(我已收集各类代码3-400MB了),用起来一样方便,还能边用边学,必要时还能自已改造。

VC 是 MS 开发的,所以针对的是 Windows API,你可以不会 C++, 也可以在 VC 下用 C

写出很优秀的程序,当然如果你比较熟练 C++,并且熟悉开发包 MFC 的话,工作可能要轻松不少。

所以在我看来,学习的过程可以是这样的:

1. 先学习 C 或 C++,在 Windows 的 Console 环境下编写不太深入涉及 API 的程序;

2. 在基本上掌握了语法之后,开始接触简单的系统 API,学习 Windows 的编程原理和机制;

3. 在可以编写简单的菜单程序,可以简单地在 WM_PAINT 下操作 GDI 函数后,开始学习 MFC,

可以从 Step tourist 学起,看 MFC 的源代码,理解几个关键的宏的定义与实现,特别是

MESSAGE _MAP。在学习的过程中为了给自己增加点挑战,尽量不要使用 Resource edit,试着自己

编码实现控件的创建、消息的响应。再就是看自己的造化了,动手做一些小工具,特别是自己平常

需要的,对自己的提高也应该是很有帮助。究竟我们要的是结果!良好的分析问题高效清晰地肢解

问题的能力才是我们真正要不断学习的。

对于 VC,我有几点经验:

1. 技术为本,语言为次。

2. MFC 的单个类有用,DOC / VIEW 要小心。

3. OOP 要小心,使用不当反而造成大量的工作和糟糕的代码。

4. 如果可能,考虑选择使用 Delphi ( CBuilder+ VCL )。

5. 到了一定程度,一定要学 COM。

学习 VC++ 有相当的内容要学,而最后的深度则看个人的悟性与勤奋了。

1)掌握最新标准的C++。(2个月)

如果曾经在大学里自以为学过 C/C++,还对dynamic_cast/static_cast/template/try/catch/throw/stl/...

感到陌生,那你该 Refresh 一下新的 ANSI C++ 标准了。

——此与VC++无甚关联,G++ / BCB 均有所支持 。

2) 学习 SDK 编程。(6个月)

痛苦是暂时的,必要的,坚持就是胜利! 建议用 Lccwin32/Masm32/Tasm 编写小而精的工具软件。

《Windows Programming Guide》、《Advanced Windows Programming》

3) 研究 MFC 源代码。(6个月)

不要被一大堆的宏所蒙蔽,just track And dig into it!! 在知道 MFC 如何扩展、包装

SDK 之后,自可功力渐进,不被其 MFC 系统框架所困绕。

(《MFC Internals》)

4) 研究 OLE / COM 技术。

COM / ActiveX 技术是 MS 的核心技术,只有彻底洞察其理论精髓才可以体会现在的操作系统

的技术趋势,以不变应万变。

(《Inside Ole 2》)


***几点建议***:

1) Delphi / BCB / VB 可以很快构筑界面,但对于想真正学习、理解系统不是一个好的平台,

但如果有时间读一读 VCL 的源码,看看 Borland 是如何封装系统的,也可借鉴不少。

2) 学习 ASM 对理解 C++ 有很大益处。Soft-ICE 也是和 VC++ 结合在一起的好工具。

3) 语言本身是皮毛,算法是筋骨;无论高级语言如何发展,在理解操作系统的基础上不断提高

自我创新能力。如果精髓一旦了然于胸,选择何种开发工具都可以驾御,一见如故了。  

<完>