程序设计心得
我高一的时候开始学习编程,到现在已经有了五年多的编程经验,回忆起数年来对程序设计的学习和研究,总会有新的发现和体会。
记得在最初接触编程的时候,和大多数人一样,对程序设计充满着陌生和好奇的感觉,每写出一个程序就会有很大的满足感。之后再进一步深入地学下去,有些人就会觉得困难成倍地增加,其中很多人选择了放弃,究其原因,我认为不是什么有没有恒心的问题,而是思想观念上的一种不适应。
在开始的时候,很多人都会在编程语言上下苦功,本身并没有错,但是有些人就会产生程序设计的问题就是对编程语言的使用问题的观念,导致他们在进一步学习程序设计的过程中忽略了各种编程思想的吸收和运用,例如有些人很清楚指针的工作原理,却不懂得怎样去利用指针构造并操作完美的链表,他们设计出来的链表也许在删除节点的时候没有释放内存,或许在插入节点的时候因赋值顺序错误导致链表“断裂”,信息丢失,等等。随着要解决的问题复杂度越来越大,没有经过良好程序设计思想组织起来的代码会出现各种各样的逻辑错误,这种漏洞百出的程序在运行时有时甚至会导致系统崩溃。
所以在对编程语言有了初步了解之后,应该开始重视编程思想的培养,语言很重要,但究竟只是工具,思想才是精髓。当初我得到戴泽贤老师借予的《数据结构》一书后,就通过阅读书中的各种数据结构及相应算法的代码来吸收书中的思想。我认为学习数据结构最能培养一个人对解决程序设计问题的敏感性,其建模思想对解决各种棘手问题有很大帮助,看书的时候要学会思考,例如循环队列的尾节点为何一定要是空的。当你懂得程序设计问题是类似于数学建模的思想问题后,你才算是真正入门了。这时,面对程序设计,才不会无所适从。
再进一步提高自己,就要靠做题来验证各种算法思想,前期做题的时候要参考别人的代码,学会从执行效率上分辨出代码的优劣,其次再讨论其实现难度。之后就是形成自己的风格,有自己的一套解题方式和相应的算法,例如在快排和堆排的具体使用上,能有自己的一套运用方式。根据具体问题采取自己所熟悉的相应算法来解决,这样的话或许程序的运行效率不是最高效的,但解决问题的速度会比较快,而且这种根据自己风格设计的程序出错率通常会比较低。这在平时的应用开发上会体现一定的优势,更不用说是在分秒必争的编程比赛上了。当然,程序的执行效率也很重要,它是算法优劣的体现,必须要通过更多地做题,来总结经验,每做一道题,就会加深对某种算法思想的理解,进而改进自己的编程风格,我最初的时候喜欢用深度优先搜索(DFS)来解决迷宫问题,后来发现其实宽度优先搜索(BFS)更好,特别在解决最短出路上更有效,而DFS适合于解决窄路径迷宫寻找有效路径问题。
总之做题真的很重要,给个例子,今年的华工软件学院闯入ACM/ICPC世界总决赛的队伍的四名队员人均做题量上千。中大的ACM训练每星期有周赛,每个月有月赛,是使中大的ACM编程氛围保持活力的主要原因,也是中大代表队可以成为ACM总决赛常客的重要因素。所以今年软件学院也开始搞半月赛了。So~对于参加编程比赛的人来说,平时所累积的代码量决定了他的比赛成绩。
原创??
@Link 确实是原创的~是07年我大一下学期写的~所以改了个别字眼~
真的太有才了!原创啊!去写书吧!孩子
你的网站人气不错,加油
@ruitao 谢谢!
偶遇,踩踩,不过写得真的很好!