程序设计的学习方法

时间:2022-03-04 04:49:51

1学习目的

要学习编程,必须明确学习的目的,也就是学习编程是为了什么。是为了了解计算机,还是为了自己的发展或者是因为个人爱好。程序的实现不是一时爱好就可以完成的。一般来说在学习程序设计方法和语言时掌握基本理论及语法时比较容易,但是在实际应用时却觉得无从下手。如何编写符合要求的程序、如何编写高质量的程序更是程序设计人员所面临的难题。这就要求学习者仔细体会,在反复实践的过程中掌握编程技巧,通过不断的克服困难来提高自己的编程能力。这是一个长期的过程,所以必须有坚定的恒心才能开始学习。

2基础知识

在学习编程之前必须有一定的基础。作为一个优秀的程序设计人员,数学是十分重要的。数学是自然科学的基础,计算机科学实际上是数学的一个分支。数学主要能让人懂得一种分析问题的方法,然后再通过编程去实现它。计算机内部的许多原理也都牵涉到比较复杂的数学知识,它是用来解决现实问题的最高效的工具。很多编程的初学者对数学觉得不屑一顾,觉得对于编程没有什么关系,实际上优秀程序设计人员和一般程序设计人员拉开档次在很大程度上就取决于数学能力的强弱。一些项目有时需要很复杂的数学建模和利用数学对于系统效率进行分析,而这些项目对于一般的程序员是很困难的。正确应用数学知识有时候能使程序的效率产生质的飞跃。如果一个程序设计人员在数学上很薄弱,这点必须引起足够重视,有了一定的数学基础,当别人对于某些项目感到无从下手时,而自己却能够完成,这个时候自己的价值也就体现出来了。真正优秀的程序设计人员最基本的一点就是要能够通过自己的知识来解决一般程序设计人员所无法完成的问题,而数学能力就是一个很重要的因素。

3语言的学习

3.1 语言学习的基础

程序设计语言五花八门,究竟该如何学习,应该学习哪一门。首先,从C开始学习。当然这里要提醒一下,千万不要一开始就学VB、VC之类的东西,一开始就学这些东西,有可能把自己引入一个错误的学习方向而忽略了真正应该掌握的东西。不要被VC、BCB、BC、MC、TC等词汇所迷惑,这些都是集成开发环境,而程序设计人员要学的是一门语言。学C主要是学过程化的程序设计,学会把自己的程序分成许多的函数,养成良好的编程习惯,培养一种编程思想。学习编程最好的方法之一就是阅读源代码,可以多看一下专家的程序,不一定要懂意思,主要是学习别人程序的格式,比如变量如何起名,怎么划分函数。除了掌握基本的控制语句外,还应该学习一些很简单的I/O函数和数学函数。C的学习主要就是学会使用函数,提高代码重用性,认识面向过程的程序设计方法,对结构化程序设计有一定的认识。对于指针之类的东西如果实在看不懂可以先不去管,有的问题反过来看也许会感觉容易很多。

3.2 语言学习的巩固

当自己能够比较自如的用C编写一些小的计算程序时,就可以开始数据结构的学习了。数据结构可以一点一点慢慢看,并不需要专门空出一段时间来专门研究,这样的目的是让自己能够很好地掌握它。要学会用数据结构的知识来规范自己的程序设计和提高程序的效率。这主要是因为编程者必须足够的重视数据结构。如果说计算机专业的学生与非计算机专业的最根本的差别是什么,那绝对是数据结构。数学大家都一样学了,主要看自己学得好坏。对数据结构的掌握与运用能力是衡量编程能力的一个很重要的指标。有的人对于看了链表、堆栈、树、广义表这些东西就头痛,然而这些东西往往能使程序的效率比别人高出百倍,所以硬着头皮也要学习。当然,看第一遍书是不能记住和掌握全部知识的,必须看第二遍、第三遍,甚至更多。如果觉得对树、链表、堆栈之类的东西和排序,递归之类的算法已经十分清楚,就可以开始学习C++了。

3.3 语言学习的提高

学习前一定要有个正确的认识,那就是C和C++是两个不同的东西,不要因为C++是从C发展来的,更不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样,C++绝不是所谓的C的单纯的“扩充”,如果C++一开始就起名叫Z语言,编程者一定不会把C和Z语言联系得那么紧密,其实主要学习的正是C++和C不同的地方。学习C++是为了学习面向对象的程序设计。这个时候要求对于指针应该有一定程度的掌握,当然如果有汇编的基础更好,主要抓住C++和C相比的一些新特性,对于封装、继承和多态之类的特性要注意理解掌握,而且要通过具体的实例来便于理解,如果没有搞懂就坚决不要往下学习,直到理解为止。这些基本的概念掌握以后就可以看一些别人设计的程序,学习别人怎么利用面向对象的方法来设计程序,这个也是与别人之间拉开档次的一个环节,可以和数据结构放在同等重要的地位。

从C到C++是从面向过程的程序设计转化到了面向对象的程序设计,应该说是一种提高,通过封装、继承和多态之类的特性,更高程度上提高了程序设计的效率,但是对于程序设计来说,语言主要就是指语法结构,而真正重要的是程序设计的步骤。

4 程序设计步骤

很多人无论学习什么,都有一种习惯,就是找诀窍。有的秘诀可以让自己事半功倍,而有的秘诀则就是没有秘诀。学习编程的秘诀就是:编程,编程,再编程。在编程的过程中,任何时刻都不要认为自己手中的书已经足够了,看得懂的书,要仔细看,看不懂的书,也要仔细看,也正是这些看不懂的东西才有它们所特有的价值,每个人都看得懂的内容是没有办法拉开档次的。

4.1编程的思想

编写程序的时候,开始的想法是非常重要的,也就是编程的思想。前边讨论的是对于语言的学习,其实学习一门语言或者开发工具,语法结构功能调用是次要的,最主要的是学习它的思想。譬如学习VC,就是要学习WINDOWS的内在机理如何,什么是消息循环,如何进行消息影射,什么是窗口注册,什么是Callback,什么是线成;学习Java是要知道什么是面向对象,什么是继承,什么是封装,什么是多态;学习DELPHI,VB就要知道如何快速开发,如何模块重用,如何统一界面和数据。关键是一个思想,有了这些思想,那么编程者就可以触类旁通。譬如有了C/C++的知识,PASCAL、VB就可以基本上掌握了要领,这也让大家知道学习C++原来也不是在浪费时间。有了C++的基础,其它什么都能应变自如,DELPHI可以很快地学完,JAVA也可以边做边学,就连刚刚发布或者以后将会出现的的程序设计语言也可以理解。

语法是不同的,但算法是相同的。在写程序之前,一定要想好这个程序如何来实现,对于程序设计人员来说思路是非常重要。

曾经有一个人参加计算机展览,每天他进门时都对门卫说:

“先警告你,我是偷盗高手,我入室偷盗的本领闻名遐迩。这次展览会也在劫难逃。”

警卫因此大动干戈,因为里面有价值百万的计算机设备,所以他牢牢盯紧了这个人,但是这个人只是从一个摊位逛到另一个摊位,一边平静地喃喃自语。

当这个人离开时,警卫搜了他的身,但是什么也没有发现。

展览会的第二天,这个人又对警卫说:“昨天我满载而归,但是今天我会收获更大。”所以警卫更加小心地盯紧他,但是这样做完全于事无补。

展览会的最后一天,警卫再也不能忍住他的好奇心了。“小偷先生,”他说,“你说我惊慌不安,请告诉我,你到底偷了什么?”。

这个人笑笑说:“我在偷展览会上各个软件高手的编程思路。”

这虽然是个笑话,但是编程思路确实是相当的重要,必须在刚开始的时候有个实现程序的思路,才能够保证程序正常的编写,一个好的思路更是一个好的程序的开始。

4.2程序的质量

有了好的思路后,可以规范程序设计的格式和提高程序的效率,达到事半功倍的效果。

最好的程序当然是最大限度地节省时间和空间,也以此来评价一个程序的质量。那么有了好的想法后,如何提高程序的质量呢?下面举一个我国古代的例子。

有一家三兄弟全是郎中。其中有一人是名医,人们问他:“你们兄弟三人谁的医术最高?”

他回答说:“我常用猛药给病危者医治,偶尔有些病危者被我救活,于是我的医术远近闻名,成了名医。我二哥通常在人们刚刚生病的时候马上就治愈他们,临近村庄的人都知道他的医术。我大哥深知人们生病的原因,所以能够防止家里人生病,他的医术只有我们家里才知道。”

编写程序有的时候就如郎中治病,治病就是让人身体健康,给程序治病就是提高程序质量,消除程序的缺陷,不断补充程序的功能。与上述三个郎中很相似,消除程序缺陷也有三种基本方式,那究竟该使用哪种方法呢?第一种方法就是等程序写好后,发现缺陷再一个一个修改,有的时候一个程序也会因为无法修改或者无法添加某个功能而不得不重头开始设计并实现;第二种方法则是在实现过程中一发现问题就立刻修改扩充,采用中庸之道,这种方法应该说是一种比较可行的方法;第三种则是比较理想的一种方法,科技发展的速度之快,很难在设计之前就想到将来要添加什么功能,所以对于一个程序设计人员来讲第二种方法应该说是最可行的,也是最普遍的。

4.3程序的维护

《编程之道》中有这样一段话:

项目经理去拜访一个编程大师时看到:编程大师编写软件时,手指在键盘上快速飞舞。程序编译时没有一条错误信息,程序运行起来就象一阵微风吹过。

“太精彩了!你的技巧已经无可挑剔了。”项目经理夸道。

“技巧?”,大师转过身说,“我所遵循的是道——它超乎所有的技巧。当我开始编程时我看到的是整个一大块的程序,三年后我看到的是子过程。现在我什么也看不到了。我的整个存在是没有任何形式的虚无。我感觉很悠闲,总之,事实上是我的程序自己在写,有时我看到一些问题,我看到它们,就停下来静静地观察它们,然后我改变了一行代码,难题就象一阵轻烟一样化为乌有。然后我编译程序。坐在那里享受工作的喜悦。闭了一会眼睛然后退出系统。”

项目经理说:“什么时候我的程序员才能都达到这样的境界!”

编程大师如是说:

“既使一个程序只有三行长,也总有一天需要去维护它”。

《编程之道》[James]是一本在全世界流传的关于程序员的寓言,讲的是早期程序员的故事,风趣而富有哲理。当然书中很多观点现在看来明显是错误的甚至是荒唐的,但是有的观点还是有那么一些道理的。一个程序即使功能再小,代码再短,也必须在不断的维护和更新中,才能成为一个程序。一个程序设计人员要经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去,而且要不断地对自己写的程序提出更高的要求,哪怕程序版本号不断地提高。

5 结论

总之,编程能力的高低主要还是由以下几点决定:①编程的习惯;②数学应用能力,其中包括逻辑思维,分析问题的能力;③对数据结构的认识能力;④经验的多少,包括各种语言的掌握能力。

其实,最主要的一点还是要认真勤奋,为自己的目标而不怕困难不断前进,这不只是对程序设计而言,学习其他所有的东西都应如此。