大神程序员写给自己弟子的一封信!
写给编程小白的一封信!
学习编程的萌新们你们好:
我知道你们学编程现在满脑子的雾水,偶尔也能自己敲出几段可预知结果的程序来,但是又总是感觉有什么东西抓不住。如果你真的有这种感觉,恭喜你,那是已经入门了。接下来如果你足够努力,将会有挺长一段时间的积累期,这时候的你就像一块干海绵,拼命的吸水了。当然,如果你感觉连语法书都还看不懂,那此时的你还站在编程的大门之外,还需要付出更多的努力呀。或许你已经发现了,我说的编程没有指任何语言,只是单纯的编程两个字,是的,不管你学的C,C++,或是Java,就你们目前阶段来看,它们都是一样的,叫做编程。
现在你们的阶段正处于学习语法的阶段,那是编程(IT行业范围包括太广)行业的大门口。你们进入这个世界的方式大多都是这样的:先学习点语法,然后做做练习(管理系统什么的)也就算是完成了初步的学习,正式进入了编程的世界。然后你们会接触算法了,也就是数据结构,然后有算法设计等。当然,并不是所有的人学习编程之路都是这样的,有的学习完基础语法之后就去学做UI了,那个是比较简单的,对算法要求也不高。但是我觉得所谓编程,算法是极其重要的一部分。所以,我还是建议正在学习编程的你们,当你们学会了一两门语言的语法之后,接下来的是赶紧去学习算法,也许很痛苦,但是这是你成为大神的必经之路。再讲一下我认为的合理的学习语言的顺序吧,C,这个都不用多说了,连C都不会,没资格说会编程(直接学Java,C#的也是如此)。那C应该学到什么程度呢,就是一本语法书看到底,最后一两章一般都是文件读写了,看到这里就差不多了,语法书的课后习题能做到90%以上会做,那就算是学完了。然后就是C++了,为什么这么认为,因为C++真的很优秀,语法设计上有些地方会有点繁冗,但这不妨碍它成为一门强大且经典的语言。通过C++要学习引用、类、继承、重载、模板这些东西,这对一个一般人(资质一般,不高不低)来说,稍微努力点,有三个月是能熟练掌握的。再接下来,就要进入学习编程的第二步了,学习算法。
交流学习基地 五八五六五三九六四算法第一本书,数据结构,可以是C语言版的,也可以是C++版的,不过我建议两种同时看,会混淆?别开玩笑了,那是你语言基础不扎实才会造成的。数据结构学到什么程度呢,顺序表,链表,二叉树(包括霍夫曼,AVL什么的),内排序都必须熟练掌握,也就是说随时能自己把实现这些的代码敲出来,并且这些数据结构和算法的时间复杂度和空间复杂度也是要牢牢记住的。听起来有点困难是吧,做起来是更难的,这就需要努力来实现了。至于图,字典等其他数据结构,这个当然也是要学的,只是做到在你需要用到的时候,翻翻书你能把功能实现就可以了。
上面这些东西听起来是不是要花很多时间才能做完了,没错,一年是至少的,两年能学到这程度也是不错的。所以新人们还是不要心急,路要一步一步走,饭要一口一口吃。到这个时候,或许你就可以做自己的小项目了,很多童鞋向往做出一个有用户界面的程序,这个并不难,打开VS,直接新建一个MFC项目,马上一个窗口程序就出来了。童鞋们可以自己尝试一下,用自己的语言功底,配合上数据结构。做一个有模有样的桌面窗口程序其实也是灰常简单的事情。等你第一个有界面的程序做出来以后,你会非常高兴,终于发现自己学的东西能用了。
交流学习基地 五八五六五三九六四接下来呢,就是你的第二个快速成长时期了,由于你有扎实的语法功底,你再去学习其他编程语言,如Java,C#,你会发现你看完一本语法书连一周都用不了。你再花一周时间就能把这种语言实现的数据结构掌握了,然后你就可以不太熟练但是不会有太多障碍的使用这种程序按照自己的想法写代码了。此时你会觉得所有编程语言好像都差不多,想用什么写就能用什么写。等你把几种主流的语言都用的熟练以后呢,你又开始不满足于现状了,于是你就开始寻找新的东西来学习了,可能是怎么做用户程序,可能是如何实现网络通信,也可能是学习更NB的算法,写出让别人惊叹不已的程序。不管怎样,这个时候的你已经完全进入了自主学习的阶段,只要你肯坚持,只要你肯努力,你总是有东西可以学的,不再感到迷茫,对前景充满信心。再之后的日子呢,大概就是你认定某一个方向,不断的去学习,不断的前进,在时间的积累下,最终成为一个行业大牛。献给新人们,你们要走的路还很长,而且这是条艰难的路,如果你现在就坚持不下去了,那就及早回头吧。如果你认定了这个方向,那就努力往前走吧,加油,要相信自己的选择。