我的大学读书生涯
之前一步一步asp.net MVC权限管理系统系列写完了之后,看看书,看看博客.
马上也要大四了,最近东看看西看看,零零碎碎,回顾大学生活,似乎一晃而过,从大一的懵懵懂懂,到现在,即将大四,面临走向社会,思绪万千.
我应该算是接触电脑相当早了,小学4年级就打游戏打上瘾,初中高中,游戏打了不少,网络游戏,单机游戏,都曾经接触过,现在想起来,看到一些游戏仍然觉得非常亲切,游戏是算是第一次接触计算机吧!当然,没有像那些牛人一样,很早就有那么高的觉悟,领悟到编程的乐趣,最初的乐趣就是游戏.
我现在在想为什么会那么沉迷游戏?
自由,探索的乐趣,在游戏中充满了无数的想象,无数的困难与关卡充满了探索的乐趣,你可以获得非常大的成就感,就像编程一样,如果你真正接触它,感受它,你就会获得一种探索的乐趣,编程的快感,它带给你无数快乐.
在初中,高中,大多数的学生还是靠传统的老师教课,听课的模式,但是实际上,这并没有真正带给他那种探索的快乐,真正的兴趣.
如果你喜欢它,无论多么辛苦,多么艰难你也不会觉得枯燥.
曾经的我,四年级,打电脑游戏曾经梦中仍然想着游戏,说梦话都是跟游戏相关的.呵呵!想在想起来,非常亲切!
记得刚入大学,那种感觉相当亲切,作为一个一直自我感觉有些叛逆的人来说,大学确实是最自由的地方,充满的想象,想干什么就干什么!
非常幸运,能够在大学读书,大学的读书,很大程度上,给了你最大的自由空间,让你自由去学习,你没有考虑那么多,没有工作的压力,完全是按照兴趣去学习,虽然,仍然摆脱不了应试教育的模式,但是,你可以选择你的兴趣去学习!
我还清晰的记得大学的第一门编程课Visual Basic语言,这是我接触编程的第一堂课,但是我觉得是我大学生活最重要的一门课程,使它让我真正对编程开始感兴趣,你可以感受到编程的各种乐趣,虽然仅仅是简单的一些界面的设计,但是,它让我真正对计算机充满兴趣,曾经入门的第一课就是写一个小程序用Timer控件,控制label标题,像走马灯一样飘来飘去,当时就为之着迷.所以,我并不觉得很多人推荐的javascript当作入门语言,c语言当作入门语言,c++语言当作入门语言,怎么好,怎么好,关键是,在编程的开始,你对它感兴趣,培养出兴趣,一切的学习都不会感觉枯燥了.
大学以前的我,从来没有周末主动学习的习惯,但是大学宽松的环境,我感觉我的学习强度比以前强得多,认真的多,效率也高得多,特别是自学方面.以前的我,从来都是,老师讲一节,听一节,从来不预习,从来不复习,大学的时候,开始养成自学的习惯,提前看1-3章,甚至提前写着代码看完整本书的习惯,有时候甚至趁着假期,把高数这些课程提前看完.后来,几乎上课都是提前学完,自己学习其他的东西.
大一的生涯让我找到一种读书的感觉,读书的爱好.
当你对它感兴趣的时候,你就会从各个方面去了解它,学习它.
一门vb学习,很短暂,只有仅仅一学期,我们就直接上了C++课程(基本上上的都是c的部分),vb的学习,更多时候是雾里看花,你能够做出各种各样的效果,但是,其实,感觉根本不了解它.我们当时的vb老师曾经写过一个车库管理系统,当时他就用了数据库,我当时相当的困惑,为什么要用数据库,文件就可以,为什么要用数据库?甚至他写数据库查询语句,select一堆获取数据,我当时就在想,为什么你直接(Access)界面本来就可以显示数据,把数据库的所有数据给程序好了(就像文本一样),你非要用命令去读取这样的问题(为什么有人还觉得dos好用,类似问题)?呵呵呵,当初幼稚的问题,但是就是这些为什么,这让我更希望去探究为什么,不断的摸索,去探究它的答案.
C++的学习(基本上都是c),算是正式的接触学习编程了,更多dos化的界面,我更多的是去做题,各种各样的编程题,写代码去实现,当初感觉,非常有趣,其实,我还是蛮喜欢做编程题的,这些题,能够锻炼思维,让你去思考,各种问题,痴迷于各种实现方法,编程没有固定答案,你自己运行,分析,就能知道结果,这其实是我非常喜欢的.那时候很单纯,编程思维的训练,不过,我现在仍然感觉自己其实训练的不够,编程思维,算法,这些都需要多训练,多学习.
数据结构,数据库,c++面向对象程序设计........
数据结构和数据库,真是两门好课,数据结构,提前看几章,写很多代码,但是老师的讲课进度仍然光速,很快,你又需要自己温习,同时也需要看更多的内容才能理解,我们当时的老师,总出思考题,经常不给答案,大部分网上都找不到,思考,思考,那时候,总是为了想一个问题而折腾的吃饭都吃不香睡也睡不好,又为了意外的做出来而兴奋不已,这也是最初编程的快乐.
当然也有很多遗憾,后来还是感觉直接学c++,虽然大部分都是c部分学习,但是没有自己有觉悟去买一些课外书看,仅仅局限书本的理解.
每天除了上课吃饭睡觉,几乎都花在编程上,仍然感觉时间不够,不充裕,其实大学时间太少了,根本经不起浪费.c++面向对象学了很多,写了大量的代码,当时我们学的是borland c++,当时STL等等,很多,但是面向对象直到c#学了很久,项目实战也做了很久才真正感觉面向对象的美妙滋味,经历了c++各种异常,直接跳出一段英文红色警告,弹出各种栈溢出,cpu调试xxxxx,多重继承的各种复杂,才真正感觉c#开发真的太省心了,太人性化了,太舒服了,后来,接触了java的各种设计,语法,才感受到c#的改进,当然更多的是以封装细节为代价,这更需要我们去了解它的过去,它的发展,为什么要这样设计,它的实现过程来体悟编程语言的变化.
兴趣让人可以把枯燥的编程变得一项最有趣的东西,求知的欲望让人拥有一种永不停止的动力.
当第一次写程序的时候,就充满的兴趣,在无数次编程学习过程中,Coding,无数次的调试,让人更能忍受寂寞,忍受孤独,也能培养出坚韧,永不放弃的性格.
在大学中,其实大部分的人仍停留在高中的层次,甚至感觉大学似乎比高中更轻松,更空闲,这只不过是错觉罢了!
慢慢的大学生活再也没有了寒假暑假之分,再也没有了周末和工作日的区别,编程成了大学生活中最美妙的部分!
现在的社会虽然编程的起点越来越低,但是人们的心随着社会的节奏越来越浮躁,静不下心来去真正深入去学习,去追求实现心中的梦想.
天天都在抱怨,在感叹.社会xxxx,房子xxxx,日子xxxxx一系列,我毕竟没有经历,但是,一直以来我坚信:
如果改变不了世界,就改变自己!
记得高中的一条名言,如果改变不了世界,就改变自己.Follow Your Heart!
从大二下学期开始,也进了一个学校的研发实验室,参加了一系列的各种商业项目,第一次有了团队的感觉,第一次大学以来通宵做测试......
这也是正式开始接触C#,第一次真正感觉应用开发的复杂,不像自己做的各种东西,需要考虑的更多更多,第一次感受到软件工程远远不是想象的那么简单,团队合作,测试,开发,大学的时间更加少,更多的挤时间,同时也学到更多更多的东西.
同时,我也准备了软件设计师考试,这个考试几乎都是理论性的东西, 可能大家觉得无非是理论,基础知识,但是,它带给我的影响很大,知识体系,一个程序员的发展,都应该由他自己的体系,各种知识,数学,操作系统,计算机组成原理,计算机网络,软件工程等等,甚至是计算机相关的法律,这些都是知识体系的一部分,每个人应该针对自己学搭建自己的知识体系,这些东西,如果形成了一个体系,那么就完整了,有的人,基础扎实,知识形成体系,学习能力就非常强了,学新东西最显著的是非常快,能理解比人不能理解或者花很久才能理解的东西,就像学过汇编语言的人,就对c语言,操作系统有更深入的认识,甚至学c# CLR的时候,IL代码很清楚知道大致代码的细节,我觉得程序员需要的就是把自己的知识形成体系.
这时候也喜欢上买实体书,大学期间买了大量的课外书,看得懂的,看不懂的,都买了,花费也不小,花了估计上2000块了........可能有人觉得这么多书,你看了几本?.........大部分看完了第一遍,很多都看不懂,但是,扩大了视野,很多经典书,每隔一段时间,有所提高,我就会去看看,看了几遍,仍然有不懂的地方,但是每一次我都感觉,又有所提高.读书,也是大学最大的爱好之一.特别喜欢买纸质版去看,因为纸质版的书看效果更好,而且,也看得更仔细,更认真.我看书也有一个习惯,第一遍,看得很粗略,时间有限,第一遍粗略看,增长见识的同时也能鉴别现在自己是不适合看,很多书其实并不是书不好,而是你现在这个级别看不懂,这时候,更多的是开阔视野,等到你水平提高,到了那个级别,就会领悟到美妙了.........
同时,我买了大量的业余书,有职业生涯规划的,有励志的,等等,很多,这些东西,能够在我们失落的时候,颓废的时候,让我们振作起来,更加坚韧的去面对.
在学校实验室编程工作,让我感觉项目开发经验的重要性的同时,我更加觉得基础比这个显得更为重要,
计算机理论是实践的高度总结!
但是并不是提倡天天去啃课本,那样其实,根本不能理解,计算机理论需要大量的实践才能看得懂,所以,实践是必须的,但是每一阶段都需要不断去加深理论的学习!
后来慢慢的也喜欢上了看开源项目的代码,看别人的项目,学到的东西多得多,思维也更加开放!等你理解的够多,去看那些以前看来枯燥的理论,才感觉是那么的简单!
很多理论讲解的生涩难懂,编程的经验多了,基础多了,才能理解,在我们大量项目开发的同时,更需要不断学习,不断思考,加深理论学习,特别是计算机基础.操作系统整本书我直到现在还停留在理论水平上,对于windows仍然不了解,为什么c#中触发什么什么事件就会响应什么,内核模式,用户模式,一点都不了解,其实,很多时候,仍然只是会调用api而已,但是,我总有这种困惑,我更希望去了解它的内在.在大学的课程学习过程中,枯燥的理论,让我对这门课确实失去了很大的兴趣,但是在慢慢的成长过程中,我现在又有一种求知的欲望去了解它的内在,未来的学习计划也是加深操作系统的学习,多结合实践去了解它,触摸它.
<<编译原理>>这门课程,我是彻彻底底没怎么学习,只有入门的正则,文法,和一趟实验课,c语言词法分析器听懂过,做过实验,大部分时间我花在了深入学习c#和.net上面,但是,我并没有觉得有什么后悔的,听不懂,强迫自己去学习,强迫自己说这么课程很重要,可以了解xxx编译器,不现实的,还不如花更多的时间在感兴趣的学习上,当真正用到它,认识到它的美妙的时候,对它感兴趣的时候,可能我还会去学学!
<<算法分析与设计>>一直是我想深入的东西,锻炼编程思维,不管到什么阶段,程序员都需要提高的东西,即使做应用开发也需要密切关注,深入去了解细节,即使有各种现成的库,我们也需要去了解它,研究它,只有真正了解它研究它,才会用得更好.
下面是我自己用思维导图,花了一下自己大学的课程(有一部分,我都彻底放弃了,比如嵌入式,呵呵!还有一部分,大四的课程,还没上),以及课外延伸部分,不过,相当一部分是自己以后将来深入学习的一部分.
大图片:我的知识体系大图片查看
直到大三我才知道博客园,这个.net社区,之前都是自己一步一步的摸索,遇到困难和挫折,都需要自己去解决,一步一步按照自己的兴趣去搭建自己的知识体系,总结经验,持续努力,求知的欲望驱动着,探索着.
慢慢的也开始写笔记,积累自己的知识库!网摘博客园的博客和众多人的经验!
经常去阅读去分享,让自己的内心变得更强大!
总之,不管未来的路多么艰难,我相信,保持一颗坚韧的强者之心,保持强烈的求知欲,是最重要的!
经验,可以积累,知识,可以学习,心智与信仰,确实难以修炼.
保持一颗坚定的心,勤学多思,永不言弃!
推荐一些书籍
<<听从自己内心的声音,乔布斯的人生忠告>>,
<<因为痛,所以叫青春>>,
<<读大学,究竟是读什么>>,
<<我是一只it小小鸟>>,
<<少有人走的路 心智成熟的旅程>>!