应该如何去学习计算机编程

应该如何去学习计算机编程
应该如何去学习计算机编程

应该如何学习计算机编程

(1)“内功”要学好。不要只是去学各种语言、工具,和一些三流公司招聘列出来的要求。要把数据结构、算法(algorithms, not numerical analysis)、数据库、操作系统原理、计算机结构、离散数学等课程学好。如果你可以做出Donald Knuth的Art of Computer Programming里面大部分的题目,那就代表功力不错了。现在很多同学都在学各种各样的语言,框架,追赶技术潮流,不是说这样不好,在大学期间接触更多的技术固然可以开拓视野,这的确是件好事,但是一定不要忘了在语言和工具背后有更重要的东西等待着你去学习。或许学习了很多语言和工具后会发现,仍然无法写出效率高且赏心悦目的程序。这时候就要想想是不是应该把更多的注意力放到这些“内功”科目上?看看《算法导论》,《深入理解计算机系统》等书绝对是大有裨益的。当然,没有语言的基础这些便也无从谈起,但应当始终记得,语言工具仅仅是“招式”,只有“内功”深厚才能够做到无论面对任何敌人都可以“无招胜有招”。

(2)多编程,最好大学四年有十万行编程的经验。看书,动手,思考是学习的三个主要环节,缺少任一部分都会使最终的效果大打折扣。学习程序设计更是如此。根据我自己的亲身体会,看一个月的书却不实践甚至比不上自己coding两天学到的东西多。当然了,这话有点绝对。但只看书不动手是非常不可取的。许多同学问编程应该怎么学,答案只有三个字:“多动手”。代码量虽然不是评判一个人编程能力的标准,但它可以决定你对程序的驾驱程度有多熟练。再顶级的程序员也是在动手中一点点磨练起来。无他,唯手熟尔。

(3)讲究“实干”,不要不屑于编程或测试,每一个工作的每一个细节都要认真。一百行有质量的程序也比五百行凌乱不堪的程序有价值。盲目追求代码量其实也是学习心态不踏实的结果。学技术搞技术应该实实在在,稳扎稳打。有的同学觉得链表很简单,不愿意写,只用脑子想。链表嘛,最简单的数据结构,还用写嘛?真写的时候要么无从下手,要么写出来一看,指针错误,内存泄漏一大堆……社会很浮躁,网络很浮躁,我们做技术的不能浮躁,眼高手低实在要不得。

(4)不要放弃数学,尤其如果你对一些需要数学的领域有兴趣(例如视频、语音、图像。。。)总感觉搞程序的分这么两种人,一种是数学超好英语较烂的;另一种是英语很棒数学却跟不上劲的。左右脑都很强大的人貌似比较少(如果你是,那恭喜你哈o(∩_∩)o),自己不幸属于后一种,更不幸的是还很想搞游戏开发。后悔自己在高数,线代等课上不听课,埋头学了一大堆乱七八糟的技术。以至于现在看D3D的书籍,还要不断回头找各种数学公式定理。所以如果有同学立志于游戏或图形处理等领域的话,好好学数学,好好听课吧。数学的自学难度和别的学科可是不一样的,先放下自学的课外书籍吧,认真想一想时间成本就会明白哪个比较重要了。

(5)练习团队精神,与人合作。道不同不相为谋。技术方向不同的同学可能交流上不会很多,但是仍然建议大家能够多多的与别人合作。尝试建立开发小组,分工合作一个小项目,使用版本控制软件,体验下多人开发的感觉。个人英雄的时代已经过去了,软件开发不是一个人的战争,它需要团队共同的协作与努力。学技术其实是在与机器交流,团队合作则可以教会你如何与人交流,如何更好的表达自己。

(6)在不影响学业的前提下,寻找有真正有意义的暑期工作或打工。去一个公司在一个好的老板指导下作真正会被使用的程序,不要去一个要你做“头”的地方。打工和找工作一样,不要只看待遇和职衔,要挑一个你能够学习的环境,一个愿意培养员工的企业,一个重视你的专业的公司。最后,要挑一个好老板。”真正的商业应用和校园里研究式的开发相距甚远,而不得不承认的是大学里的计算机教育又和实际需求脱轨。因此,在求学阶段快速提高自己实际能力的办法只有去做相关的兼职工作。在工作中去学习,当敲打那些”真正“的代码的时候,或许你会有不同的感受。选择工作大家都想去Microsoft,Google,IBM,但能去的毕竟是少数。我觉得,对公司的选择优先度应该是这样:能够不断学习提高自己 > 愿意培养员工重视员工 > 良好的企业文化和环境 > 公司待遇。学习为先,其它一切次之。如果只想赚大钱的话,或许你不适合走技术这条路。无意在网上看到李开复先生这些话(红色的六句话)很有感触,遗憾的是如果早些明白这些或许自己会在学习过程中少走一些弯路。在这里把以上内容写出来,希望能给还在为学习编程而苦恼的同学们些许帮助。最后还是那句话,社会很浮躁,网络很浮躁,但请大家静下心来学技术。

相关主题
相关文档
最新文档