浅谈编程能力的培养与提高.docx

上传人:b****7 文档编号:10456050 上传时间:2023-02-11 格式:DOCX 页数:10 大小:25.81KB
下载 相关 举报
浅谈编程能力的培养与提高.docx_第1页
第1页 / 共10页
浅谈编程能力的培养与提高.docx_第2页
第2页 / 共10页
浅谈编程能力的培养与提高.docx_第3页
第3页 / 共10页
浅谈编程能力的培养与提高.docx_第4页
第4页 / 共10页
浅谈编程能力的培养与提高.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

浅谈编程能力的培养与提高.docx

《浅谈编程能力的培养与提高.docx》由会员分享,可在线阅读,更多相关《浅谈编程能力的培养与提高.docx(10页珍藏版)》请在冰豆网上搜索。

浅谈编程能力的培养与提高.docx

浅谈编程能力的培养与提高

浅谈编程能力的培养与提高

任何科技前进的方向永远都是让更多的人能够更轻松的掌握和使用,因此计算机语言也已经不再是什么高深莫测的天书,很多非计算机专业出身的人都能使用计算机语言来编写程序。

无论是一个计算机爱好者,还是一个从事计算机相关行业工作的人,都有可能会使用计算机语言。

然而,很多初学者常常为如何培养自己的编程能力以及如何写出优秀的程序而困惑,即使是掌握多门计算机语言,或者某些信息学竞赛的获奖者,再或者是有过一定编程经验的人也都会在达到一定程度后,因为无法再向前走一步而苦恼。

计算机程序设计的世界如果缤纷多彩,为什么很多人只能在门外徘徊而苦于无从下手呢?

编程的能力和技巧又应当如何培养呢?

笔者在此希望从自身的经历谈些看法。

1.写给编程初学者的话

计算机程序设计的世界瑰丽而多彩,很多人对此都有着浓厚的兴趣。

作为一个初学者或许你已经在门外徘徊许久,但仍然不得其法。

因此,我希望结合我个人的一些经验,首先为初学者提一些建议和意见。

1.基础扎实真的很重要,什么语言其实不重要

我和我的同龄人应该都算是比较幸运的一代了,活在春风里,长在红旗下,优越的条件和幸福的时光允许我们有些闲暇的时间,更重要是有更多的机会去接触我们父母一代接触不到的事物,探索我们父母一代未曾触及的世界。

记得我最初接触电脑是在上小学的时候,哈哈,那真是遥远的日子啊。

那是我们用的电脑还都是486,但在当时已经属于比较先进的机器啦。

现在的孩子只能从教科书上去了解486的历史了,也只能从教科书上才能看到软盘,软驱之类的东西了。

那时是父母基于很偶然的原因把我送去了一个电脑班,而为我们授课的老师是一个计算机专业的大学本科毕业生。

在那个遥远的年代,这种计算机专业的大学毕业生可是非常“稀有”的啊。

出于老师的专业性,所谓的电脑班其实成了编程班。

多年以后,等我上了高中,计算机在中国的普及率大大提高,大街小巷星罗棋布着各种各样的电脑学习班,偶然接到过一些招生宣传单,上面赫然写着高级班授课内容包括:

上网冲浪、QQ聊天……真是不禁让我无语——当然那已经是多年前的往事了。

我的建议是可以直接从C语言开始。

一般人学习C语言最大的困难往往就是指针。

因为指针的存在很多人对此望而生畏,所以也有人据此认为C不是一个好的入门语言。

然而,如果将C中的指针完全抛开,那么从基础语法功能来说,剩余的C又和BASIC差多少呢。

再说,C目前依然拥有非常大的应用领域,用C来做一些底层的开发仍然不失为理想的选择。

从C再向C++过渡,也相对更容易些,从C++那里我们可以学到基本的面向对象思想,这是C++与C的最大不同。

C++是我们值得去学的,而且是应当学好的一门语言。

如果C++掌握得很熟练,那就已经可以算得上是具有一定技术实力的开发人员了。

这个时候再学其他语言将会非常得心应手了,事实上,选择学习哪种语言并不重要,因为任何一种语言学好了都是很不错的。

而学习多少种语言也不一定是我们的目的,其实只要上了道,语言基本上是一通百通。

这个时候,你可以学习C#或者Java,这对于一个C++掌握得非常牢靠的人来说,学习C#或者Java并不是什么难事。

学习C#或者Java首先要深化的面向对象的思想,它们都是非常纯粹的面向对象语言,而C++的面向对象程度并不高。

但是具体选择C++还是Java则可是泾渭分明的大抉择啊。

选择Java语言,意味着你将来打算在Java方向上发展,这可能包括J2EE或者J2ME,将来还将接触到的可能是Hibernate、Struct和Tomcat等。

另一方面,如果选择C#,则意味着在.Net平台下发展。

当然,仅仅学到C++就打住,然后坚持从事C++开发,也是大有可为的。

而且其实这个层次和要求会更高些。

C和C++能够完成一些更加专而深的开发工作,那时你可能就要冲着一个方向不断地向深发展了。

当然,这些都是后话,对于初学者来说可能还无需考虑那么长远。

何况,IT技术发展迅速,风云莫测,做长期规划和构想意义不大。

我郑重地提醒读者,什么时候起步并不是问题,关键在于你自己,在于你肯不肯用心,肯不肯花时间。

当我还是学生的时候,曾经在学校里当过专业课的助教。

很多从农村来的学生别说编程了,就是电脑键盘也有没摸过的。

但是有的学生很要强,不但学得很认真,而且凡事都动手实践,最终这些“从来没摸过键盘”的学生反而成了尖子。

当然,也有些学生抵不住花花世界的诱惑,有的被网络游戏所麻痹,有的被花前月下所催眠,最后纷纷掉了队。

对于学习编程,应当记住这样三句话——“经得起诱惑,耐得住寂寞,受得了挫折”。

不仅仅是编程,人要想干成点什么事,无不是要做到这三点的。

通过前面的论述,我想阐明的一个观点是:

从哪种语言入手其实并不重要,只要上了道,语言基本上是一通百通。

唯一的需要跨越的地方可能是在从传统面向过程语言向面向对象语言过渡时如何建立面向对象编程的认识。

当然这里的一通百通是指在掌握了一种语言之后,再上手其他语言会显得非常容易,但任何一种语言要想精通当然还是需要下一些功夫的。

语言与语言之间总是有着这样或那样的联系,这种联系就决定了学习哪种语言并不是一个应该费力思考的问题。

但是越往后发展,基础是否扎实就变成了你能否成为一名优秀程序开发人员的至关重要的限制条件。

基础中的基础应该是数学。

数学是自然科学的基础,计算机科学本来就是从数学发展而来的,最初的计算机科学家同时也都是优秀的数学家,譬如冯诺依曼、图灵等。

要成为一名优秀的程序员,数学是十分重要的。

很多学习编程的朋友对数学觉得不屑一顾,觉得数学和编程没有什么关系。

然而,优秀程序员和一般程序员之间的任何不同最根本上来说就是数学基础的好坏。

不幸的现状是数学普遍是广大程序员的薄弱环节。

当然,我这里所说的数学好坏并不是指考微积分能考多少分,或者知不知道拉格朗日中值定理。

数学最主要的功效是帮助我们建立一种分析问题和解均问题的思想及方法,然后再考虑通过编程去实现它。

很多从事医学影像相关研发的人,都具有计算机和数学的双重背景。

一方面,计算机中的许多原理都牵涉到复杂的数学知识,比如进行运动物体估计时所使用的卡尔曼滤波,以及进行图像编解码时所使用的傅立叶变换等。

另一方面,一些大型项目有时需要很复杂的数学建模和利用数学进行统计分析等,而一般程序员对于这些项目可能是一筹莫展的。

而当一般程序员无能为力时,优秀程序员的价值也就表现出来了。

真正优秀的程序员就得具有这种能力,他们应当能够通过自己的知识来解决一般程序员所无法完成的问题,而其中一个很重要的环节就是数学能力的强弱。

除了笼统地谈数学以外,数据结构和算法知识的掌握与运用能力也是衡量一名程序员编程能力的一个很重要的指标,更是普通程序员和优秀程序员之间一道难以跨越的鸿沟。

数据结构原名离散数据结构,是由离散数学发展而来的,而离散数学则是数学的一个分支。

数据结构和算法知识正是计算机专业的学生与非计算机专业的最根本的差别。

很多人或许对链表,栈,二叉树,图这些东西略知一二,又或者一窍不通,这种人很难成为一名优秀的程序员。

所选数据结构和算法和优劣从本质上决定了一个程序的性能高低。

就是大学毕业找工作的时候,那些参加过信息学竞赛或者在ACM大赛中获过奖的学生也着实显得高人一等。

很多知名大公司(例如微软、谷歌等)招聘时总是离不开那些有趣的数据结构与算法题目。

你看看微软员工编写的《编程之美》一书就知道数据结构与算法知识在他们的工作中是多么重要了。

有经验的人都应该知道,面试XX、腾讯这些公司时,数据结构与算法也是必不可少的。

可见数据结构和算法对于一个优秀程序员是多么的重要啊!

2.兴趣是最好的老师,实践是进步的捷径,需求是灵感的源泉

编程是一件很有意思的事情,很多人都这么认为。

但是就如同你问一个没吃过鱼的人,鱼肉的问道怎么样,其实对方根本没办法回答你。

所以如果你不会编程,那即使我将编程形容得如何天花乱坠也无济于事。

如果将编程看成一种任务,甚至是负担,那此中的快乐就可能在你的每个厌倦的眼神中悄悄溜掉。

人的生命是有限的,而人的创造力是无限。

汉字是有限的,但用汉字写成的文学作品是无限的。

之所以有这无限的文学作品存在,最重要的是人类的无限的创造力赋予了汉字活力。

这个逻辑关系可以用来解释我们所要讨论的问题。

编程语言的语法规则是有限的,但你可以用它来描绘出“风光无限”的计算机程序。

这个从无到有的过程中,你的创造力起了决定性的作用。

只要你足够出色,你就有可以利用计算机编程语言来构建任何旖旎多姿的程序。

这怎能不说得上是一件乐事。

如果你用一颗好奇的心去学习,去探索,那么每一份发现都会带来一种获得新知的乐趣。

在大科学家牛顿功成名就之时,他却谦虚地说:

“我只是一个在海边捡拾贝壳的小孩儿,偶尔为一片捡到的精美贝壳欣喜若狂,却对呈现在我眼前的浩瀚无垠的知识海洋视而不见”。

笛卡尔也曾经有类似的表述:

“我不断地探索和学习,却只是越发地发现自己的无知”。

这就是求知的乐趣,这就是探索的魅力。

世间每件精美绝伦的艺术品无不是注入了艺术家鲜活的艺术灵感而焕发出诱人光辉的。

这一针一线、一雕一刻、一笔一墨都是作者思想的凝聚。

一个程序设计高手的乐趣就汇聚在那一行一行的代码里。

程序设计可能是你谋生的手段,也可能是你拿到一个计算机等级证书的武器,当然你也可以只把它当作是一种乐趣,一种爱好。

如果你问一个计算机程序设计高手他爱不爱编程,你猜他会怎么回答,我想他一定会说他很喜欢编程。

你觉得他是一生下来就爱上编程的吗?

记得小时候,学校课本上讲过达芬奇画蛋的故事。

据说达芬奇刚开始跟随老师学习画画时,老师就整天让他画鸡蛋。

后来达芬奇实在无可耐烦了就问老师为什么老是让自己画鸡蛋,所有鸡蛋看上去不是都一样吗。

老师却说鸡蛋看上去好像都一样,但世界上其实根本不存在两个一模一样的鸡蛋,这种细微差别的洞察力正是成为一名出色画家所必须具备的能力。

达芬奇明白了老师的深刻用心,就静下心来继续画蛋。

最后达芬奇成了一位伟大的艺术家。

你觉得达芬奇生下来就热爱画画吗?

肯定不是。

他之所成功,是因为他爱画画,但他之所以爱画画,那是因为他对画画倾注了太多的汗水。

试问有几人能够整天面对一堆鸡蛋反反复复地画呢?

管理学大师、资深经理人余世维博士曾经讲过这样一个故事。

他有一次在日本应朋友的邀请去参加一个陶艺大师的作品展。

期间,朋友介绍那位陶艺大师给余世维认识。

陶艺大师和余世维亲切的握手,身边的朋友就问余世维是否发现大师有什么不一样的地方。

经朋友这么突然一问,余世维一时不知该如何回答。

朋友指着陶艺大师的手说,大师是没有指纹的。

余世维睁大眼睛一看,果然如此,不禁叹服:

“原来做陶艺,做到指纹都被磨掉,就成了‘陶艺大师’了”。

如果让你做一件你非常讨厌的事情,恐怕你是很难做好的。

除非你喜欢这件事,否则你一定不会出类拔萃。

但是要想喜欢一件事,除非你用心,除非你付出,否则又很难建立起一种依恋的情感。

这个逻辑关系尽管好像有点绕,但实际情况却就是如此,如果你不为一件事付出汗水和心血,你就不可能真正地喜欢它,你也永远无法体会到过程中的无穷乐趣。

兴趣是最好的老师,它会让你安心地坐下来,而不是浮躁抓狂地问自己为什么学不好;它也会帮助你不受外界的影响和诱惑,一心一意地为此付出,而不会三天打鱼,两天晒网、虎头蛇尾,半途而废;它也会让你面对困难变得坚强,而不是就此一蹶不振,消极逃避。

因此,你必须学会去热爱你所从事的事业,热爱你的工作。

如果你想学好编程,也请热爱编程。

编程不能纸上谈兵,必须真刀真枪地干。

你所需要的并不是一堆堆的教科书,而是你指尖下噼噼啪啪敲出来的一行行代码。

世界上本来就没有从来不练琴的钢琴家,当然也不会有从来不写代码的编程高手。

核心技术必须掌握在自己手里才能确保立于不败之地。

自己到底掌握的牢不牢靠,自己应该心知肚明。

如果你想学好,千万不要高举“拿来主义”的大旗,干着“复制粘帖”的勾当。

现代软件开发讲求高效率的复用,因此“他山之石,可以攻玉”的思想已被广为接受。

加之网上资料丰富,很多经典的程序片段都能够在网上找得到。

在学习阶段,阅读他人的代码的确能够让自己功力大增。

这就有点像武侠小说《天龙八部》里,丁春秋修炼的吸星大法。

但是这跟只知道一味抄袭他人代码是有本质不同的。

关键的区别在于是否有内化的过程。

你有一个苹果,别人有一个梨,你们俩交换一下之后,没人还是只有一个水果。

但是如果你一个方法,别人也有一个方法,你俩再交换一下之后,你们就都有了两个方法。

要尝试学习别人的好处,弥补自己的短处。

这个过程就要求杜绝好逸恶劳,坐享其成的念头。

如果只是在需要的时候,上网随便剽窃一下别人的代码,那么到头只是自欺欺人,一事无成。

记得我上大学的时候,讲授C语言的老师曾经留过的题目,包括写一个“汉诺塔”程序,写一个成绩管理程序,写一个进制转换程序或者写一个求水仙花数的程序等等,那时完全没想过要到网上去搜一个来用。

后来上网多了,发现原来这些程序网上都有,甚至很多教科书习题的配套答案网上也能找得到。

如果将网络资源好好的利用,那么的确可以帮助我们加深所学,事半功倍。

但是如果利用得不好就会养成我们懒惰和虚伪和恶习。

很多人都一再告诫初学者应不断强化自己的动手能力,多多实践。

但很多基础薄弱,学艺不精的人往往遇到一丁半点的问题就懒得自己去想,只是想到网上搜一个,或者找被人代写一个,若此一来久而久之,自己基本就残废了。

很多编程书籍上都包含有大量的示例程序代码。

懒惰的人把程序看一遍就不了了之,或者为了安慰自己就把随书附带的光盘中的源代码拷贝到电脑上,在开发环境下编译运行再看看结果。

好像觉得自己已经知道是怎么回事了。

其实,Youstillhavelotsmoretoworkon!

动手编码的过程是强化记忆的过程,是发现问题的过程,更是锻炼能力的过程。

编程的实践在于你能不能利用编程语言解决实际问题,而不是你是不是记住了书上的几个概念。

动手编码的时候,你可能遇到的问题还有很多,比如编译不过,运行结果出乎意料,学习调试程序,发现问题,也是这个过程中需要训练和强化的。

当你把一门计算机语言的基本语法掌握了之后,你所能完成的程序的代码量也可能仅限于百行以内。

通常一本入门级的书,里面的程序可能最长不超过一百行。

不是说这种书不好,这种书的作用就是让你入门,并且把基本语法学扎实。

但仅仅掌握基本的语法是不行的,必须要结合一定的编程实践来提高自己的实际开发能力。

这个能力提高的过程也会逐渐让你找准自己的定位,发现自己的长处,决定自己的方向。

需求是灵感的源泉。

从事一些编码实践,不能仅限于完成教科书后面的习题。

应该问问自己有没有在实际中遇到困难,有没有什么软件用得不爽。

只要我们有需求,我们就可以按照自己的想法去编写一些适合自己的软件。

这个过程充满挑战,更充满乐趣。

例如在上个世纪90年代初,芬兰赫尔辛基大学学生LinusTorvalds就是因为不满意Minix这个教学用的操作系统,出于爱好,才设计了系统核心Linux0.01,也就是后来的Linux操作系统的最初版本。

再比如,1989年圣诞节期间,身在阿姆斯特丹的GuidovanRossum为了打发圣诞节的无趣,索性就发明了当今最流行的计算机语言之一的Python。

很多计算机奇迹的诞生最初都只是发明人的一时兴起,更准确地说是他们个人的需求。

我也建议那些希望在计算机程序设计方面学有所成的读者,在掌握一定的基础之后,不妨根据自己的设想来尝试着编写一些实用软件。

只要你能坚持不懈地把它写完,必定会收获不小。

“熊猫烧香”不就是这么诞生的吗?

呵呵,当然这是个反面的例子,不建议大家去编写病毒。

还是编一些能够造福人类,服务社会的东西吧。

编程的无穷乐趣就在其中,正等待着你去发掘!

3.一本好书的作用不可忽视

现如今,走进任何一家像模像样的书店,其科技类图书卖区中,最庞大的一个集群就是计算机程序设计类的图书。

管它什么水利、农牧、航天等等任何一个科技图书门类,都无法有计算机类图书的排场,而计算机图书中又以程序设计类图书居冠。

这个原因当然是多方面的,一方面至少说明从事该领域的作者为数众多,另一方面也说明这类书有着巨大的市场。

因为计算机的普及,程序设计语言已经不再是神坛上的摆设可望而不可及了,无论你是专业的程序员,还是业余的爱好者都有潜力成为一名编程高手。

但是面对这样众多的计算机图书,要想挑到一本好书谈何容易。

一本讲授计算机程序设计方法的书籍能够称得上好,本身就不容易。

首先,这本书应该能够容易让人看懂,让人理解,这就要求作者必须在讲述的方式上下些苦工。

其次,在于这本书的内容应当充实、知识点讲述没有谬误,这就要求读者不但要有相当深厚的学识,更要在前期对图书的整体结构有一个相对完善的设计和构想。

这样的一本好书,其作用是不可估量的。

初学者入门是很关键的时期,一方面他们怀有着对于知识的渴望和崇敬,另一方面,他们的能力和基础又相对薄弱。

如果书中的讲述方法尚有欠缺,且文字晦涩难懂,破绽百出,这不但是让初学者感到吃力,更重要的是有可能打击他们学习的积极性。

如果书籍的架构不够完善,且知识介绍上存在谬误,不但让人不能系统地学到知识,更有可能灌输一些错误的思想,这种书只会误人子弟、贻毒大众。

然而,初学者由于知识积累有限,往往很难分辨一本书的好坏。

再说,倘若一本书真的属于书中经典,但其并非是面向初学者的,这样读者即使很认真地去钻研书中的精妙,往往也只能事倍功半、白费力气。

所以,读者首先应该学会如何选择一本好书。

选书首先可以选择一些知名技术作家的作品,或者选择一些长期盘踞畅销榜前列的书,再看看网上的相关评论怎么样。

当然,众口难调,网上的评论也不可能一边倒,肯定是有的支持,有的骂。

这个时候要理性对待这些评论。

不能因少数人的少数言论而断定书的好坏。

通常比较好的书引起的反响也比较强烈,一个重要的表现就是其评论数量比较大。

有说好,有说坏,争论之下,各不相让,这种书往往可以考虑考虑。

而如果是众口一词的说这书太烂,那这本书基本上就应该被枪毙了。

另外一方面,读者也应时刻保留一种心态,即书本没有好与坏,只有是不是适合你。

如果你是一个初学者,那一定要结合自己的实际,千万不要好高骛远而买一些很高深的书来看。

就像有些名家大作、畅销书籍往往都有可能是不适合初学者的,因此读者基于作者是否知名、书籍是否畅销等问题选出的一部分书就可以被淘汰。

通常书籍的内容简介或者前言中,都会介绍这本书的读者对象,以及看懂它所需的一些储备知识。

因此,看一本书绝对不能看着封面花哨就急于下手。

至少应当把书的内容简介和前言看仔细,然后再看看书的目录编排是否与内容简介所提到的东西相一致。

基本上述的过程已经可以淘到一些不错的书了。

但是还有一些小忠告需要告诉读者。

首先,配不配光盘不应该是选择图书的标准,重要的书的内容。

很多读者都有买那些带光盘的图书的习惯,多半是为了里面的代码或者视频讲解。

请注意,光盘附代码只会耽误你。

作为一个初学者,自己动手写代码的机会弥足珍贵,如果只是依靠光盘里的内容,走马观花,那你将永远学不到真本事。

另外,学习一门计算机语言是不需要什么视频讲解的。

而且带视频讲解的书多半是教读者如何使用开发环境来编程的。

注意掌握开发环境跟掌握一门计算机语言是两个概念,会用VisualC++并不代表你就会用C++。

其次,不要买类似实例大全之类的书。

看这种书的人往往是希望能够速成,或者直接拉别的程序过来用。

这无疑是一种急功近利、揠苗助长的做法。

人家的代码始终是人家的,除非你自己会写,否则就还是别人的。

除非你自己会写,否则你自己动手解决编程问题的能力都等于零。

对于初学者来说,建立完整的知识体系结构非常重要。

千万不要做那些邯郸学步的蠢事,也不要妄图一步登天、一蹴而就。

在得到一本好书之后,更重要的是如何用好这本好书。

这里需要提醒大家注意三点。

首先,对于初学者来说,看书应该循序渐进的看,这样才能准确地把握作者的思路,跟随作者的思路,才能有利于建立自己的知识体系。

这样你学到的东西才不是残缺的,才是扎实的。

再次,编程的书中代码示例肯定不会少,但是读者不能只看代码,不看或者不仔细看文字描述的部分。

很多关键的知识点就在文字描述中。

如果没看文字,或者没有仔细看,或者跳跃着看,都可能让你对突然冒出来的一个语句感到费解。

最后,不要相信书中的一切,要多问为什么。

正所谓“尽信书不如无书”。

对于编程的书也要求读者亲自去实践书中的例子。

特别对于那些配有光盘的书。

读者可能偷懒就不自己输入代码了。

这样就算你把正本书都看完,你也学不会编程。

就算你知道是怎么回事,你也只是嘴上会说,实际动手能力仍然为零。

计算机程序设计在很多人开来都是一门妙不可言的艺术。

微软公司的很多广告宣传片都体现出了这种意思。

程序员使用计算机语言来编织五彩缤纷的虚拟世界,这个美丽的世界里尽显了各路高手的聪明才智。

除了对于这门学问的热爱以外,更多的人已经是或者即将是这个行业的从业者。

尽管这个行业仍然是社会上非常热门的行业(从五花八门的培训招生广告中就可见一斑),而且这个行业的人才竞争也十分激烈,但这也只是说明程序员很多,或者说是学习编程的人比较多。

其实真正能够称得上精通的人其实还是很少的。

机会到处都是,前提是你必须足够优秀。

我真诚地希望本文的读者能够成为这庞大群体中出类拔萃的优秀程序员,在程序设计的世界里尽情挥洒,在自己的职业道路上大放异彩。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1