博客阅读和思考
1:关于当初
对于选专业这个问题,我有段很戏剧化的经历。其实高中时对大学要学习的各种专业了解甚少,但因为自己喜欢动手DIY一些小东西,而且自认为空间想象能力不错,所以当初比较倾向于并不是很了解的机械设计制造及其自动化专业。当初对于选专业的问题,我和本科学计算机的堂哥聊了聊,可能是因为经历过才知道“痛”,他强烈建议我不要学计算机方面的专业,但当时为了能被录取,所以志愿里也填报了软件工程专业。然而最终却正好录到 了软件工程专业。既然已经录取了,那就好好学吧,其实当初堂哥的建议并没有影响我学习这个专业的积极性。
并不像博客A[1]的作者那样,在大学之前就有属于自己的电脑,能在大学之前就接触编程,我是上大学之前连c语言是什么,甚至连编程是什么都不知道的高中毕业生。在刚开始学C语言时,真的是一头雾水,摸不着头绪,我曾觉得我不适合学这个专业,但后来想到高中老师常说的一句话,没有学不会的东西,就看你想不想学,经过反思,我决定沉下心好好学习这个专业。在过去的两年半里,看了比较经典的《C Primer Plus》《C++ Primer Plus》,还有涉及了Java的面向对象程序设计,学了C,C++,Java,MATLAB,Python等语言,但掌握的只有C和C++。关于项目,每个学期都会有课程设计,贪吃蛇小游戏,分小组设计飞机射击类游戏,分小组编写学生管理系统,实现一个简单的编译器等。这些项目多多少少都有参考百度上的经验,还有很多是分组完成的。迄今为止,具体写了多少代码已经记不清,但写的不是很多,应该只有几千行。我觉得做的最复杂的软件项目是实现一个简单的编译器,最开始对词法分析,语法分析的实现都摸不着头绪,最终还是看了网上的代码实例才稍微懂了一点,后面还有符号表管理,中间代码生成以及目标代码生成,这些都是在别人的经验下才完成的。
2.关于未来
对于未来,我的选择是考研,就像博客B[2]的作者说的“学过数据结构、编译原理、操作系统、汇编语言、计算机原理、计算机系统结构、离散数学、概率论、计算机网络、数据库、单片机、算法设计、数理统计、高级语言程序设计、面向对象程序设计,从DOS的Tubro Pascal时代学起,一直学到VC6。然而,我却并没有学懂计算机”,在这种状态下,我害怕自己还不能胜任一份工作。这种选择下,相比其他同学讲真没什么优势,所以我清楚自己应该更加努力,可能意识到这一点也算是一个优势,劣势就是,以前学的课程都不是很扎实,因此做考研准备会更吃力。
针对我的选择,在毕业前的这一年半时间里,首先把考研要求科目好好准备,在此同时,提高自己的编程能力和编程思想,如若考研失败,也好为工作做好准备。
3:关于当下
对照前人们走过的路,面对我未来的规划,我觉得对当前的专业谈不上喜欢,但也不能说反感,也许是因为我还没有深入其中,也许是因为我还没搞懂计算机,我相信,无论做任何事,只有当全身心投入其中才能体会到它的美妙,前两年过得迷迷糊糊,忽略了制定短期学习计划,知识也没学明白,所以在接下来的学习中,我会认真对待,让自己深入其中,以为能体会其中的美妙而努力。就专业技术和能力而言,我现在应该属于吃瓜群众,难的做不了,简单的能拿下。如今我们已经学过数据结构、编译原理、操作系统、汇编语言、计算机原理、离散数学、概率论、数据库、算法设计、C语言程序设计、面向对象程序设计等专业知识,然而其中掌握的也只有C语言,其他也只能算是入门。
博客B[2]的作者讲述在清华听朱仲涛老师的“数据结构”课,他的讲课风格非常独特,他只用1/5的时间简述一下要讲的内容,剩下的时间都是当场写程序。著名的约瑟夫环、Dijkstra算法、Prime算法、快速排序、堆排序、锦标赛排序、Tarjin强连通分量、Convex Hull等深的浅的,教材上有的没有的,全部在课堂上从0开始实现:每遇到一个算法,一边写程序,一边讲解,不懂就将程序的运行结构拿出来分析,并不时地穿插离散数学、概率论、内存管理、C语言、汇编语言等知识,几乎将我们学到的东西非常恰到好处地拿出来。估计这是每个程序员想要达到的境界,当然,要成为一个合格的当前专业本科毕业生,不用达到这个程度,但这应该朝着这个目标去努力。至于离成为一个合格的本科毕业生的差距,首先是专业知识上还有很多没搞懂,技术上还有很大欠缺,编程思想还有待提高,在博客D[3]中作者在《程序员》杂志上看到了一篇“计算机专业学生怎样学好计算机?”的文章,文章中强调最多的四个字是“注重实践”,然而我现在的实践经验还有一定差距。
4:关于课程
大学中,我印象最深的课程是C语言程序设计课程,授课老师是万琳老师。之所以对这门课印象深刻是因为这是我第一次接触编程,在此之前我不知道C语言是什么,编程是什么,而且这是上大学后的第一门专业课程,因为这门课,启发了我的编程思想。而且当时做贪吃蛇小游戏花费了很大尽力,也算是“处女作”,不过当时和博客E[4]的作者心情一样,觉得老师恶心,还没有开始教大家写代码,就布置这么难的任务。
我觉得科班出身与速成培训班的主要区别是Idea,科班 注重培养程序员的编程思想,而速成培训班可能主要着重于技术。至于博客E[4]作者所说的培训真的没有什么用,我觉得太过绝对。
5:关于师生
关于师生关系,我希望是博客N[5]中所说的Coach / Trainee (健身教练 / 健身学员) 的关系, 每一个来学习的学生, 都是想学好才来的。 各人条件不同, 学好的目标也未必相同。 有些同学想成为世界一流的软件工程师, 那老师就会以世界一流的标准来要求学生;有些同学只想拿一个及格的分数, 那老师也会告诉他如何才能及格,并严格执行评分标准;有些同学想在某个领域深造,老师也会提供相应的指点。这种关系下,不会像Boss / Employee (老板 / 雇员)关系那样有权利之说,也不会像Stranger / Stranger (路人甲 / 路人乙)关系那样互不认识,互不负责。而且教练和学员之间还可成为很好的朋友。
[1] https://book.douban.com/subject/4006425/discussion/22803733/
[2] https://book.douban.com/subject/4006425/discussion/22803961/
[3] https://www.cnblogs.com/xiaozhi_5638/p/4485805.html
[4] https://www.cnblogs.com/geniusalex/p/4928713.html
[5] http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html