我在上大学之前,有一定的计算机学习基础。在编程方面,小学时自学过QBasic,中学时自学并简单地应用过VB6。我还做过网站,熟悉HTML,了解一点JavaScript。一定的编程思想基础是快速学好一门新的程序设计技术的必要条件。
说到编程的基础,人们往往首先想到C语言。的确,C语言是一门基础而重要的课程,深入地学习好C语言是培养编程思想的重要途径。而就我个人来讲,我在大一这一年编程方面的学习顺序有点与众不同:在我们入学后,我的班主任金旭亮老师提出了他的一套“打破常规”的教学理念,引起了我班不少同学的兴趣。我们在金老师的指导下开始学习.NET。我有一定的基础,因此对程序语言(C#.NET、VB.NET)的理解很快。但我那时缺乏对面向对象设计方法和程序在计算机中运行机理的认识。我当时对面向对象(Object-Oriented)的理解就是“Control-Faced”,这大概是原先学习VB6留下的印象。由于不清楚程序在计算机中运行的机理,我写的不少程序大量浪费内存,算法也比较笨拙。大一第二学期,学校开始上C语言课。对学校的教材、教法、考试方法,不满意的恐怕不只我一人:C语言之精华在学校的教育中被淡化,学生被引入一个个的牛角尖,良好的编程理念和习惯培养无从谈起。我主要靠自学,读了一些国外教材(《K&R C》、《深入理解计算机系统》),同时也简单地看了看C++(《Thinking in C++》)。通过这些基础学习,我澄清了很多原先学习VB6、.NET等方面的问题,对编程思想的认识有了进一步提高。总之,我在有的方面走了捷径,有的方面也走了一些弯路。但事实上,每个人都有适合自己的学习方法,我认为我们一方面要把握自己的实际(兴趣、基础等),另一方面一定要多听听别人,特别是本专业老师、学长的建议,少走弯路,高效地向真正对自己有益的技术方向迈进。
再说说我对.NET的看法。.NET似乎是一个争议很大的事物。逛逛论坛,发现其狂热支持者和坚决抵制者真是针锋相对。就拿我们北京理工大学来说,金老师可谓.NET阵营的代表,他在学校大力推广.NET,开选修课、带兴趣小组、做项目,热火朝天。而soff老师(著名的珊瑚虫QQ作者)则对.NET不屑一顾,坚持自己的研发道路。他们的观点也各有其道理,在校内论坛上引起热烈的讨论。通过一年的学习以及与老师、同学的交流,我不敢下什么结论,但从自己的实际出发,我的看法是:学习计算机原理、编程思想基础,C、C++这条老路还是不错的,而要以.NET作为出发点似乎不太合适。.NET的确好上手,但如果缺少正确的导引,往往会给初学者在概念上、理论上以错误或不足的认识。要深入理解计算机系统,.NET这样高度托管化的体系更是不容易做到。但.NET的优势在于它高度的开发效率和它丰富的Framework类库。在实际工作中用.NET开发,为我们节约了大量的时间和精力。同时,作为一个新生的事物,.NET本身也在不断地自我完善中,相信Microsoft会在给它一个明确的定位的基础上,平衡技术与应用之间的关系。
总结大一这一年我在编程方面的学习,有以下几点经验:通过多种途径(老师、同学、书籍、网络……)虚心学习,团队合作共同提高;理论与实践相结合,加速加强认知;认识到个人精力有限,不要想把什么都学会;选择学习一种编程技术,应当求其精髓,不要什么都碰,浅尝辄止;找到自己的兴趣与擅长,发现自己的潜能所在,学习适合自己的知识,不盲目跟风,不迷他人;注重知识的积累和联系。最后,最重要的是该干啥干啥,能干啥干啥,大学时间宝贵,切忌虚度光阴!