您的位置:首页 > 编程语言

关于编程的那些事--学习总结

2011-11-06 19:54 260 查看
如果一个编程初学者,从写控制台程序一下子跳到写MFC类的程序,相信很少有人能办到。

我们在写控制台程序的时候,变量、函数的声明和定义很明了,如果我们要写出程序,所要掌握的基本上仅仅是语言的语法就行了。

了解了语言的语法,该声明什么变量,该调用哪个函数,我们写程序的逻辑会很清晰。因为我们直接在与这些变量和函数打交道,中间并没有什么“中介”。

要写MFC之类的界面程序呢?

对于一个初学者,好像就不那么清晰明了了。要弄清楚那些机制都很让人头大。

一个只会写控制台程序的人,要想很快得上手写交互性很强的桌面程序,似乎学习的曲线很陡峭,大多数人会觉得无所适从。以MFC为例,当我们在学它的时候,我们会觉得这些东西跟我们以前在控制台环境下遇到的完全不一样。无论是变量的类型,还是函数的调用,都似乎跟以前变了样。我们好像在学一种完全不一样的东西。

而且让人觉得更为头痛的是,这些高级编程的机制有很多,我们怎么能够都学会呢?

怎么样才能更好地学好编程,在遇到一个新的东西的时候,我们可以更好地入手。

以我个人的学习经历,我觉得最重要的是理解好编程方式发展的实质是什么。我们在头脑中对各种各样的编程方式都有清晰的认识,知道它的本质是什么。这样我们在接触一个新的东西的时候,我们能够很好地认识它,与以前学到的知识融会贯通,更好地掌握知识点,形成一个连续的知识体系。

“不知庐山真面目,只缘身在此山中。”

下面是我梳理的一个简单的学习思路。(不能说是知识体系,因为这只是一个自己学习的经验总结。)

机器语言阶段:0和1构成了计算机完备且唯一能识别的语言。在计算机被发明的时候,我们进行编程都是直接跟0、1打交道的。

API阶段:说到API,就不得不说操作系统。因为我觉得操作系统的出现是我们能够充分利用机器运算能力的转折点,它“解放和发展了”机器的“生产力”。

操作系统的出现,使得我们的编程方式出现了很大的改观。我们不再需要直接接触0、1编码了,我们可以把更多的精力放在程序功能的设计和实现上。

操作系统是一个“中介”,负责我们所写程序与机器的交互。它把我们需要用到的硬件资源都封装成一个个接口。我们写程序的时候,直接跟这些接口打交道就行。

(注意,封装的概念出现了。)

这些接口,就是我们所谓的API。这种编程方式也是我们比较熟悉的编程方式。

编程机制阶段:我不知道如何准确地表达这个阶段,就用它的特性来命名了。这就是我们初学者比较头痛的编程方式,如MFC编程。

这类编程方式的出现是为了提高编程的效率的。我们在构建一个桌面环境的程序时,需要做的工作很多都是重复的、繁琐的。

为了提高产出,我们把这些重复的工作都封转起来,形成一个编程的模板。我们需要的时候,直接调用就可以了,然后再在模板的基础上,实现我们需要的特殊需求。

这样就出现了我们在刚接触这类编程方式的时候,很多让我们无所适从的变量类型、宏、函数调用等。因为这个新的模板需要一个自己的通信机制

为了保证这个机制的运作(或者一些标准化的原因,当然还有其他的原因),它把一些基本的类型重新进行了封转,其实大部分只是换了个名字而已。

它还提供了一系列的宏,这些都是实现通信机制运作的重要因素,当然我们常常也是因为这个让我们陷入无尽的迷茫中。

简单地说,就是它把底层的API重新再进行了一次封装。

其实再细说一点,这个阶段的编程方式也是可以再细分的。

打个比方,还是以MFC为例,它就像一种进行了简单装修的房子,我们可以直接搬进去住了。可是这种房子有个很大的毛病,就是我们不能随意地改变它。

有些时候,我们利用MFC这类模板机制编程时,很难构造出一些我们需要的功能需求。这就出现了灵活性更强的“编程”。

如QT,DirectX, OpenGL。它们能够较为灵活地为我们构造出更高效的需求功能。这就像一种只有框架的房子,我们可以更加我们的设计,去重新地布局房子。

总结封装,封装,再封装
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: