Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180964
  • 博文数量: 43
  • 博客积分: 611
  • 博客等级: 中士
  • 技术积分: 1053
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-02 13:37
文章存档

2015年(3)

2013年(23)

2012年(17)

我的朋友

分类: IT业界

2012-12-10 09:07:56

       注:这里的"后知后觉"者,指的是像我一样的在大学之前没有接触过程序设计的人或者是在想要入职程序员而没有任何基础的人。

一.学任何知识的先决条件

       先不谈具体的学习方法,就学任何方面知识的先决条件来发表一些我自己的看法。

       共三点,这3点的重要性不分先后。

       第一点就是主动性。当然主动性需要建立在兴趣的基础上。主动学习与被动学习,两者的效果可以用天地之隔来形容。就好像主动去玩游戏与学习自己不喜欢的科目一样,两者的happy程度与效果也无法相提并论。追女生都要主动去追,更何况学习呢?

       第二点就是自信。自信,从外在来说,决定了你走路的姿势,说话的音量与魄力,眼神是否专注,等等。我了解别人的一个很重要的途径就是眼神,我觉得眼神可以看出一个人做事的态度与性格。不需要说太多,我已经太多次从自信地做事中得到益处。我觉得,做任何事都需要一定的自信,即使是面对自己不擅长的东西,只要需要去做,就应该自信。自信与自负最大的差别就在于能力,能力强,那自然是自信地"艺高人胆大"。

       第三点就是自学能力。我记得刘未鹏在《暗时间》中提过:“一个人的知识积累,百分之九十都来源于自学”。做技术的人,是从书本中,从老师,同事,从各种资料,等等途径自学;不做技术的人,是从人际交往中,人员管理等等方面自学。我觉得,自学就是在创造机会,而不仅仅是等待机会。由此可见自学能力的重要性。

二."后知后觉"

       上大学之前,我对程序一无所知。那时对电脑的印象就是"魔兽世界","星际争霸",等等。大一上期学vb,体验了程序设计,直到大一的寒假,才真正开始了我的程序之路。我看到网上很多人都是在高中之前就接触了程序设计,或是Pascal,或是vb,等等。我把这些人称做"先知先觉"者。我们这些"后知后觉"者,比"先知先觉"者晚了大概3年时间认识到程序设计。而我认为,这3年的差距,最重要的表现就是编程的思想。不要小看这3年,在大学之前,3年是段不短的时间。就我个人来说,我现在是大三,仅仅就两年时间,就让我从计算机或程序的角度把生活中的很多事物都再认识,再思考。比如,以前查字典的时候,只会按照字母和大概的页数去找,当要找f开头的时候,经常是在e和g的页上耽误时间。如果当时我学了程序,就可以很自然地想到折半查找法,可以把时间稳定在对数级,再延伸一些,以前查字典的方法可以算是一种简单的随机算法,虽然有时可能比折半查找快很多,但是在稳定性上,折半查找显然好与随机算法。这也就是我认为的,"后知后觉"者在编程思想上与"先知先觉"者的差距。

三.从我的学习历程中总结出"后知后觉"者的学习方法

       上面已经说到,我是一个在计算机专业上的典型的"后知后觉"者,但我觉得我很幸运,上大学的两年以来走过的路恰好是我目前所认为的最好的路:大一上期体验程序设计,大一下起进阶学习程序设计,大二尝试各种不同的领域,在大二的暑假基本确定了方向。下面我来仔细说说这几个阶段的学习方法。

       1.大一上学期。之前对程序一无所知,这时需要接触一门比较简单而且可以较快做出作品的语言,比如python等脚本语言。在这段时间内,可以尽情地发挥自己的想象力,去操纵python,来感受程序设计。

       2.大一下学期。需要学习C语言。C的语法简单(往深了学,C语言可不简单),在少用指针,内存分配的情况下可以较少出错。我推荐在这段时间内,尽量多地用数组来代替指针,防止运用指针出错,然后去实现常用的数据结构和算法,然后做一些简单的ACM题来练习基础与思维。这段学习历程对于我至关重要,让我养成了很好的思维的习惯和一定的编程思想,简单点说,就是将大问题拆分成小问题,然后用最简单的办法去解决小问题。这段时间内先不要去学面向对象。在期末的时候,可以写一个基于链表的信息管理系统,综合运用一下所用知识。

       3.经历了以上时期,代码量应该有了3万左右(注:一定得独立编码,绝对不能照着书抄代码,那样没有丝毫作用)。大二,要去尝试各种不同的领域,比如底层开发,linux下的C/C++程序设计,较上层的应用开发,比如android开发,j2ee等等。我在大二这一年,学过android开发,做过一个记单词的小软件;学过jsp,servlet,做过一个小的bbs;啃过C ++ primer plus;学了汇编,写了一些小程序。最终,我决定了linux下C/C++,网络编程的主要方向。这是一个选择的过程,每个人的兴趣不同,选择也就不一样。

      4.选定方向后,先深入学习该方向,然后再适当广泛的学习,采取"先精后泛"的策略。在时间上,也就是大三,这一年至关重要。在之前的基础训练的前提下,这一年可以让技术有一个比较大的飞跃。

      5.贯穿在整个学习历程中的总结与思考。"学而不思则惘,思而不学则殆"。"思"对应思考与总结,"学"对应看书与编码实践等等。"学"与"思"应该同时交替着进行,二者的地位同样重要。但要注意克服一个心理上的障碍:我在看书学了一天后,总是不愿意去总结,就像是对总结有恐惧一样。我觉得这可能是一个普遍性的问题。这时,需要强迫自己去进行总结,去反省,在这个时候的总结与反省,往往能起到非常大的效果。

      6.注意身体健康,最好在每学习1小时就站起来休息5分钟。我觉得即使在工作中,这个习惯也应该保持。挤5分钟出来,会对自己的身体有很大的好处。经常面对着电脑,颈椎的压力会很大,网上有很多颈椎保健操,差不多也就5分钟。每学习一个小时,就站起来做5分钟颈椎保健操。我高中时颈椎就因为玩游戏而经常不书许,而这个习惯我已经坚持了差不多1年了,感觉有比较大的改善。

       当然,这些方法不只使用于学生。如果是想要入职程序员而没有任何基础,可以将体验程序设计与选择方向的时间尽量缩短,但是用C去实现数据结构和算法以及做练习题的时间必不可少,因为这是基础中的基础。

       以上是我的个人断点,如果您有不同的见解,欢迎提出来。

 

       如果您觉得我的文章对您有帮助,请顶一下,非常感谢!      

阅读(866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~