古代画家吴观岱:淡淡如何学好编程

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 19:41:22
标  题: 淡淡如何学好编程——  李梦龙  西安交通大学软件学院 07级(20
发信站: 兵马俑BBS (Sat Aug 13 22:06:00 2011), 本站(bbs.xjtu.edu.cn)


最近我话比较多啊~不过,一直在看如何提高编程素养方面的书,再加上亲身实践,确实有所感悟,希望能对想编好程序的人有所启迪。

第一点:关于编程,什么是编程,写个hello world叫编程,写个漂亮的界面叫编程,写个复杂的算法叫编程、操作硬件也叫编程。不仅编程的范围挺广泛的,软件工程里面涉及的领域也非常多,从纯软件到硬,从医疗软件到财务软件到通讯软件等等,所以总能找到你感兴趣的点。但是编程的质量有好有坏,很多专业都涉及编程,计算机、软件、自动化、信号处理、甚至连我学经济的同学都会C++编程。单独就理工科而言,我觉得不同专业的体系决定了各个专业同学的编程能力,从强到弱排:软件、计算机、自动化、通信、其他……经过系统化规范的编程,非常灵活,给人的感觉像变形金则,收放自如。而没有经过规范的编程看起来非常死板、移植性非常差,感觉他就是针对某种特定情况而生,死板得你都不想、也不敢去动他,因为稍不小心,他就崩溃了。

第二点:想学好编程一定要多实践,你可以不会,你可以刚开始的时候看别人的原代码做起,但是你一定要学会研究他,一点点儿地去改动他,直到你明白他的原理,然后去实现你自己想要的东西。我刚学编程的时候,什么都不会,就是照着王鹏的代码一行一行地看,一句一句地请教他,直到弄懂为止。后来发现,其他学编程,这一过程真的必不可少,而且这一过程一直会贯穿着程序员的一生。

第三点:当你自己做一件事情,觉得重复无聊的时候,那么你应该尝试用软件的方式自动化地解决他。做为一个将来为别人开发软件的人,自己的需要都满足不了,哼哼哼,有点儿说不过去吧。而且自己最清楚自己想要什么。这对将来分析别人的需求也非常有帮助,当然了,如果做成了,这种成就感会带你走得更远。

第四点:永远不要说“这个编程语言我不会”,语言从来只是工具,重要的是逻辑,是如何将实现的业务流程,软件化。曾经我觉得MFC很恶心,但是经过了大半个月的编程,我发现了,原来他同C#、JAVA在做页面方面其本质是一样的。所以发现语言、程序之间的共同点,很重要。不然,工具总是在更新,你永远追赶不上他的速度。

第五点:尝试不同风格的语言,而不仅仅是不同的语言,我们知道JAVA和C#很像,所以学会一个,另一个很快便也精通。而这里面要强调的是不同的语言,比如编译型语言、和脚本语言。而且不同语言中有时候内容现实机制会相差很多。学习他们可以开拓视野,灵活思路。

第六点:一定要认真学好设计模式,很多时候设计让大家感觉他好像被神化,但是他真的非常重要。只有灵活、并且不滥用设计模式,掌握好一个度,代码便会如同积木一样,条理清晰,方便拆解,而且方便日后的各种组合和重构。此外设计模式对于编程语言的学习也非常有帮助,很多时候,有人会觉得设计模式有点儿空,那是因为你没能在你使用的语言中正确地使用他们,不同语言在某些设计模式的实现上还有他独有的方式、风格。我之前就是按照这样的顺序学习的:C#、C#设计模式、JAVA设计模式、Ruby、Ruby设计模式。一条龙下来,设计模式谙熟于心。而且对于语言的特点也更加了然于胸。

第七点:学好算法,算法是计算机的灵魂,这个我想我不需要多说了吧。算法不仅能够帮我们解决很多的程序问题,而且很有趣的发现,有些算法在解决现实生活中的问题,也是非常有效的。算法是什么,我觉得算法就是规则,写出好的算法其实质是就是制定出了良好的、规范的、正确的规则。细想这个世界上,规则真的是无处不在。也正因为有了规则这个世界才变得有趣。那么学好算法,就需要有一定的高数、线性代数、离散数学的基础。总之,我觉得除了做页面的,若要写出真正具有核心技术的代码,你必须熟悉算法、熟悉他们的适用情况、而且多数情况下,你的数学功底是必要的。需要强调的是,在具体的工程项目中,有的时候算法需要根据特定的情况,有所改变、或是简化,但是没有算法却是万万不行的。就算你是去做外包,也需要一定的数据结构的相关知识吧。

第八点:了解计算机硬件的相关知识理论。学软件不懂硬件,就显得太空泛了。想写出优质的代码,你一定要了解计算机在执行程序的过程中,他是怎么控制硬件、怎样寻址、读取数据的。掌握这些,你可以知道哪些步骤可以优化,将硬件中的操作过程集中,从而提升速度。

第九点:这一条只是建议,因为我个人擅长Photoshop,希望大家有空也学一学。因为写程序,关注用户体验也很重要,程序不仅仅是能够完成功能就好,现在的社会,人们对美的要求越来越高,同样的程序,你的虽然运算快那么一点,但是操作让用户觉得不顺手,或是界面布局不合理,又不漂亮,但是另一款程序虽然稍慢,但是具有非常好的用户体验,和比较绚丽的界面,你说用户会选哪款程?

第十点:一定要养成良好的编程习惯,包括对变量名、函数名的命名等等。程序是程序员之间的语言,是沟通的桥梁,所以需要清晰、明了。

第十一点:一定要多与人沟通,多同不同专业的人沟通。做软件的,做的领域还是比较多的,熟悉下别的领域的大致业务流程,没什么不好。

第十二点:学好英语,因为计算机,国内尚不发达,很多最新的技术的文档都是英文的,英语都学了这么多年了,如何学好,我就不用多说了吧。

第十三点:时刻关注IT行业的动向,发展方向,定位自己的奋斗方向。



以上十三点,是我觉得比较重要的,当然还有其他的,不一一赘述了,希望能够对想学好编程的人有所帮助。如果有不妥当之处,欢迎与我相互探讨。

           ——2011年8月13号于东莞