开始学习编程到现在已有六年,从开始的C语言,单片机,labview,matlab,后来到了深圳,用了半年的汇编,然后转到U3D做游戏,开始用C#,工作一年以后,回到上海,现在的工作在用U3D,UE,编程的语言会用C#/C++/蓝图写逻辑,CG写shader.
在这几年中,最大的感慨就是自学路上走了很多弯路,在基础的知识上停留了太久,而又在更有用的知识上获取的比较辛苦。有段时间感觉自学就该如此,后来开始翻墙,接触了老外的知识,才发觉学习上的辛苦只是因为别人的不仁慈。
在中国学习编程要经过很多坑的!
大约这是我以第一深深的感受到来自身边人的恶意。
言归正传,我要一一列举编程需要先迈过的坑。说完这些坑,我在示范一下正确的学习姿势。
首先呢!对于初学者,我们很容易把C语言当作编程的入门语言,或者C++。我不否认C语言是很优秀的语言,包含了很多编程的基础知识,作为语言之母的确值得我们去学习。作为开课的一门课程是无可厚非的,因为学校开这门课的初衷只是用来编程概念普及。举个最好的例子来说,C语言课的地位就像以前初中开的生理卫生课,和生孩子是没有一毛关系好吧。反倒让你感觉编程就是这样无聊的事情,一腔热血栽倒了C语言这门墙上。
对于C++,作为用处广泛的语言,的确用处很大,学习也很有必要,但是但是必须要明确的地方就是C++这个语言很难,很难的含义就是入门不友好。很容易陷入语法的泥潭。作为自学的语言,把C++作为入门语言等同于调成了地狱模式。
其次呢!另外一个坑就是无论上课还是网络上的教学视频也好,只是对基础知识的重复,而实际应用中编程的技巧,常用的编程思维是连说都不会说! 所谓的恶,就是对你说吃菜叶才会长胖,让你根本没有吃牛肉长肌肉这个概念好嘛!
第三个坑就比较无奈了,因为编程也好,学习其他的知识也好,里面是有很多的相关性,联系性,而课程都各自为政,让我们并不能了解这其中的联系,白白浪费了很多时间。
第四个坑的话就是中国人写的书都不要看,可以看博客了,啥的,但是中国人编写的书,一本也不要看! 如果你做到这个恭喜你,在学习的路上已经成功了一半。
上面是我自己的一些对经历坑的体验,我对此也思考了很久,原因无他,我们的受的教育中,重来没有过相互分享这个概念,并且在实际中也没特意培养我们这个品质。看看我们的学习经历就知道,我们只管做好自己的事情就好了,别人谈恋爱了,你要继续学习,别人逃课了;你要继续学习好;别人出地震了,你转发你要坚强,然后继续学习。而且,在中国程序员更像是一个谋生的手段,如果不是中国的程序员收入还算可以,真不知道会被社会价值观鄙视成什么样子啊。
上面的这些坑呢,都是自己实实在在经历过的。也是做这个内容的初衷,希望不要被身边的恶意停留在一个水平上太久。
说完坑,我们说一说学习的正确姿势。
在学习以前,有个严肃的问题说一下。对于现在的学习,或者以后能力得到的提升,你的努力只是其中的一部分,不要把所取得的成就归功于自己的努力,不要有这种自私的思想。希望你能真心佩服前人所做的工作。你是站在巨人的肩膀上,才有了当前能力的提升!我也希望我这些课程能让你明白前人的伟大之处。
闲话少说,我们说一下学习的正确姿势。
(1)对于学习的编程的定义。
我对“学习编程”这件事情更确切的叫法是“有逻辑性的使用平台提供的功能,完成修改基础物体基础属性的过程”。这句话包含三个内容:一是平台!二是逻辑(编程)!三是属性! 平台决定了你能做什么出来,而编程决定你能不能做出来,属性决定了你能做多好!
有平台的概念就解释了很多考过二级的人会向下面的学弟宣扬学习C除了等级考以外没什么用处。在他们的角度上来不错,因为我们常用的C语言学习中并没有涉及到平台,只是编程而已!VC,控制台程序并不算平台。
平台这个概念我要重点说,因为这个直接决定了你以后能做什么出来,其重要性至少要占以后学习的60%。而且学习平台的知识也占了很大的一头。
(2)关于学习方法。
一定要舍弃应试教育的那一套学习方法。对于应试教育来讲,考题不会超过一本书!但是对于学习来讲,你要了解的知识需要与10本书相等的知识量。不过幸运的是学习编程是靠自己的理解,你知道这个玩意是干啥的就好了,不要深入了解,如果你看了5篇文章以上对某一个概念还不理解,那证明你还不到需要理解的时候。
刚才我们说了很多需要庞大的专业知识理解,这个就会有相应的学习方法,我建议是onenote记录把需要理解的东西记录下来,然后在空闲的时候去看。
我自己的OneNote是这样的:
主要是就是你需要的时候,能马上找到。对我自己来讲,我是很少会去记忆某些知识,说实话里面的知识实在是太多多多了,想记也记不过来。作为编程是整个互联网给你开放,所以记忆并不是必须的。(英语狗的福音)。
(3)关于挫败感。
虽然你当初学习编程的时候,自己是有很美好的愿望的,想着学习了一段时间以后做出来一个好玩高端上档次的游戏出来。很高兴你有这种想法,但是作为一个过来人讲,学习过程中的挫败感是和成绩感是划等号的。你即使在聪明在努力,这些挫败感你也是要经历的。而在你学习的过程中,那些挫败感多半来自你对相关知识的不理解,本质上来讲你起点太LOW,缺知识!
(4)关于怎么学习更有效。
所有的学习都需要落在项目里面的。而能力的提升是指解决实际工程技术能力的提升。无论学习多少知识,项目需要的永远是最有效的。
关于学习以前的概念,今天就说这么多吧.