很多人想成为编程高手,但是常常他们太急功近利了,经常误入歧途。其实编程的路是不平坦的,你会遇到很多的困难。而这些困难很多情况下是需要你一个人解决的。所有你需要一个准备。当然,我的话可能说得重了点,会吓退一些人。但是只要你有强烈的兴趣,一切都不是问题。下面我就想谈谈我的看法:
(1)关于语言,有人喜欢C,有人喜欢Java,还有人喜欢Delphi。这些都不是问题,问题是你是否真正明白它们的思想。比如,你了解递归在汇编情况下是怎么一步一步实现的吗?你知道,虚函数的原理是什么,它是怎么被编译的?VC 反汇编调试后,你能很熟练对汇编代码阅读和理解吗?为什么有人喜欢define,有人喜欢typedef,它们的区别是什么?你的程序够健壮吗?如果是非法输入,程序也能一样安全地处理吗?怎样用对你的程序进行优化?这些都是你在编程的时候需要考虑的问题。也许你已经做过几个项目,也许你编程已经超过了几万行?但是你真正理解了这些语言了吗?
(2)算法。算法这个东西,简直就是程序的灵魂。没有优秀的算法,代码就是一堆废品。我不知道,大家是否真正掌握了算法。其实要学的东西很多。如果你是一个新手,我建议你看清华大学出版社严蔚敏老师的《数据结构》;如果你觉得太简单了,那我建议你看MIT Press的《算法导论》,现在好像有第二版了; 如果你还是不觉得满足,那你就可以看一些理论的书了,这种书到处都是,《数值分析》,《泛函分析》,《矩阵论》,《小波分析》,《随机过程》,多学一点算法只会对你有好处,它让你对问题看得更透彻。就拿数据库来说,你说排序重不重要?当然重要。如果是你去解决?你会用什么算法呢?还是select-all吗?当然不是!如果需要排序的数据量是100万,1000万呢?如果你的排序需要几台机器一起运行呢?这些你都考虑过吗?如果你都想通了、弄清楚了,首先请接受我一拜。其次我推荐你赶快去百度?年薪20万的岗位在向你招手!!
国内的计算机市场是巨大的,但决不是世界上优秀的。真正优秀的也不是爱尔兰,更不是印度,当然谈不上中国了,优秀的程序员大多来自欧洲,北欧,俄罗斯,还有就是美国。李开复说的对,中国大学计算机前5强也未必赶得上美国前50强,但我们正在追赶。我想未来的计算机更多是属于一种服务型的技术,公司的营运收入将主要来自服务内容,在这方面韩国人是走在前列的,虽然我对韩国这个名族很感冒。
(3)English。有很多人抱怨自己的英文不好,其实就是自己懒。想成为优秀的程序员,英语就是你的母语。linux是英语,msdn是英语,codeguru也是英语,很多的handbook和user-guide,Technique book同样都是英语。最近我们同学在做嵌入式,用的是Samsung的ARM9,上面都是英文。所以说,没有英文真的难有长进,不要指望别人替你翻译。你应该想自己怎么样可以翻译给别人。
(4)重视基础。操作系统理论,体系结构,算法,编译方法等等,这些都是你需要考虑的。当你的基础很扎实了,你成功的几率也就更大了。当你看到word的时候,我希望你看到的版面排版的相关算法;当你用google的时候,我希望你想起的是PageRank的相关文献;当你使用导航的时候,你最初想到的应该是最短路径生成算法。
(5)最后就是脚踏实地,不要抱怨,更不要盲从。当大家都在说Ubuntu好的时候,你也说好;当别人骂百度,你有跟着骂百度,这些都是没有必要的。不要太在乎外在的舆论,做好自己事情。现在网上的资源很多,几乎包括了一切。你想学网络,asp,php,jsp; 你想学嵌入式 linux,winCE, C/os; 识别类,指纹,人脸,声音;论文方面,很多大牛都喜欢自己的博客上面,MIT还有很多OpenCourse;三维动画,OpenGL,Direct3D等;程序就更多了,codeguru,sourceforge等等。学学别人的长处,总是一件很开心的事情。
作者:平凡的程序员