初识编程便心生嫌弃。记第一次编程是在大学的计算机课,老师在课堂上讲解vb,让我们用VisualStudio实现一个简易的界面,然而一整节课都在神游的我,对着眼前方方正正的电脑屏幕不知从何下手,连拖拽个控件都是搞不清楚,更别说写上一些语句,判断和循环可以说写的毫无逻辑思维。那时候还不懂的思考,写出代码问题百出,总是无法执行,哪怕是对着同学的代码抄写也总是会有各种各样的问题,其实书本上都有写的很清楚,诸如使用半月角英文符号,结束要加上分号,大括号,单词不能拼错等,总是会把问题犯上好几次,不细心的我对编程可以说是头疼至极,心想怎么会有如此蠢笨的家伙,写的不一样一点都不认识。第一次编程就留给我不好的感觉,以至于我一学期的编程课都没有学,作业也都是在同学的支援下勉强完成。
再见编程是毕业的时候了,这次心态改变,我想着去学习编程了。因为毕业论文需要用到matlab进行图像处理,不得不用被迫的心态去接触编程。其实这时候还不能说是编程,我只是要安装好matlab,把师兄的代码在自己电脑上运行一遍,掌握图像处理的基本操作就能完成任务。现实总是很残酷,在编程还没开始之前就已经结束,怎么说呢,安装个matlab就把我整的死去活来,设置环境变量,安装路径、配置安装选项等,很多时候对着电脑,看着步骤操作,一步一步的往下做,总是在意想不到的地方出现意外的情况,导致程序无法正常安装,又不知道问题出自何处,只能采用最笨的办法,卸载后重新开始安装,如此反复若干次后最终还是没有成功。至今也没搞懂哪里出了问题,后面的图像处理部分还是直接生搬师兄的代码,以至于毕业论文答辩的时候老师随便一个问题都答不上,尴尬的站在台上手足无措,脸如关公。第二次编程之路是尴尬的,还没迈开第一步,就结束在半空之中。现在归结来说,当初还是太心急,没有搞清楚网上教程的思路,在实操过程中也没有总结问题,更没有针对问题进行解决,想着眼下没问题就是没问题,实际上问题早已堆积,只是还没有爆发出来而已。
第三次终于正式和编程接触,学的是万金油语言python。当时是暑假,在学校实验室里师兄用python写出一堆代码,黑色的乌班图界面上闪烁着一行行我看不懂但似乎很帅的字母数字,这是向往的感觉,如果也可以写出这样的代码应该是件很酷炫的事情。再次对着电脑开始编程,安装python2,打开shell,写下一行代码,print(“hollow world”),然后按下回车,下面也跟着闪出一行hollow world----有点意思,你做啥它就做啥。还记得当时学的是小甲鱼的视频,看到最后还有打飞机的操作,心心念念想着能写出打飞机,一定酷毙了。遂前面的章节都没有好好的动手实践,只是抄抄写写,并没有认认真真的思考,自己动手实现小甲鱼提出的问题和代码,结果很明显,后面写代码的过程中遇到越来多的bug,完全不知道问题出自何处,一旦有问题也只能祈求网上恰好有答案,能顺利解决你的问题,否则就只能放弃,导致很长一段时间想到编程又带着排斥的心理。停下一小段时间,重新拾起python,大体上能解决一些简单的问题,但是在写的过程中总不能得心应手,很多代码都不知道怎么使用,写起来代码也有长又丑,中间还隐藏着许多未知的bug,代码时灵时不灵的,并没有意识到面向对象编程,更多的只是按部就班的一步一步完成一些简单工作,遇到稍微复杂点的问题根本不能解决。第三次编程,还是以失败结束,这次实践是当时最深入,时间最久的一次尝试,回想起来对编程的概念大概就是在那时建立的,但还是没有坚持学习下去,并没有用编程解决任何实际问题,仅仅是在编程的门口路过,看到了这扇大门。
真正进入编程世界的大门是从实践开始,幸而有之前几次失败的经历,让我对编程的态度产生转变,从当初的嫌弃到想要靠近,不在有畏惧、恐惧之心,这次上手的是C#,要利用C#的WFC完成一个课题项目。第一次打开编辑器,看到的是数千行的demo,连程序从哪里开始运行都不知道,但是有了项目的压力和之前失败的经验,开始配置运行环境,添加安装包,上网百度找资料,最后成功把代码运行起来,又成功找到运行入口,正式进入编程之门。正是这份demo让我认识到代码的运行方式,对着运行成功的代码,打断点,打断点,单个断点顺序执行,多个断点逐段执行,F9切换断点、F10逐语句、F11逐过程,通过一个较为完整的项目理解程序运行过程。认识C#运行是第一步,接着又对着这个代码自己抄写一遍,成功运行后,自己有重新整理思路,按照自己的想法在次实现代码。在这个过程中,还是经常会忘记demo中函数的用法,写不对也会出现一些问题,但总能很快的找到问题并解决。这次经历让我对编程其实有了一个大体的认识,但是这种自上而下的编程方式带来的弊端也很明显,基础知识基本悬在空中,很多基本的概念和方法都不能掌握,遇到很多方法都不能正确的使用,特别是在编程中遇到新的方法,便一脸蒙蔽,最根本之处还是对编程没有一个深入了解,对编程的实现没有属于自己的、深入的思考,很多代码都浮于表面,仅仅能实现想要的功能之后就不予深究,也没有进行改进和优化,这就限制了在编程之路上的发展,想要解决一些复杂的问题往往就会举足无措。更直观的体现是编程的水平无法得到进步,写来写去总是那些语句和方法,代码的简介性,可读性和效率等都无法得到提高,其实还是实践的不够深入,仅仅想着能够解决问题即可,其实一开始的追求方向就是有问题的,应该在解决问题的同时,思考着更好更准更快的解决问题,而不是在当前问题解决后就没有更深入的思考。如果有更深层次的挖掘和思考后,很多基础也能在实践中得到夯实,不失为一种学习的方式,但当时项目时间较紧,自己也来不及深入的思考问题,也没有花更多的时间去学习额外的知识充实自己,有点可惜。
总结这几次的编程经验,发现问题总是有相似之处,很多踩得坑、出现的bug可以归结为以下几点:
1:不够仔细,错、漏、乱。写错单词、漏添加包含头文件,配置环境乱添加包。
2:太急躁,一想到什么就动手写,一看别人的代码就抄,没有进行思考和演练。
编程的路才刚开始,给自己三条建议:
1:Think first!
2:Think again and again!
3:Write carefully!