编程学习

来源:百度文库 编辑:神马文学网 时间:2024/04/24 01:31:39
 编程学习方法论
  为什么要学习编程?
  如果你还没有考虑清楚,就不要开始学编程。编程的学习需要制定一个全过程的学习计划,和一些阶段性的目标,如果没有这些,想要学出名堂几乎是不可能的。
  如果你没有大量的学习时间,那么不要去学习编程,你必须为编程的学习付出至少3000个小时。不要对这个数字表示怀疑,稍后我会解释这些时间都花费在了哪里。
  如果你怀疑自己的自学能力,和毅力,那么不要学习编程,这两者对于编程的学习很重要,编程只能靠自学成材,在整个学习阶段,你只能靠自己,实际上你只有具备了独立解决问题的能力,你才有可能学有所成。
  如果你的目的不是成为高级程序员,那么不要学习编程,(除非你觉得编程的学习对提高你的创造能力,和提高你的学习能力有所帮助的话。也许你想靠它锻炼手指,如果是这样,我建议你去聊天室)编程的学习最怕半途而废,我想那时候你会觉得什么也没学到,前面你学会的那一半知识简直一无是处,没有任何用处。
  如果你没有知识投资的觉悟,那么不要学习编程,学习的过程可能需要几千元的投入,不过想想回报,也许这对很多人不存在问题。
  如果你认为上面的几个“如果”都不存在问题,那么你可以开始学习编程了。
  你需要立即购买一台电脑,如果你还没有的话。
  要保证它的性能不会太差。
  你必须花一部分时间用来上网,了解最新的技术,想办法结识网络上的高手,和他们通通E-MAIL,在你遇到困难的时候可以向他们求助。
  不要相信外面形形色色的学习班,那里不是能够学到东西的地方。
  你需要从汇编学起,我想这对你成为真正的高手至关重要,这个阶段可能不是个短暂的过程。
  接下来你可以研究一下加密机密,记住不要沉迷其中,你的目的不是为了去做盗版。这个阶段可以用来检验一下你汇编的学习成果,让你能够熟练的运用汇编做一些事情。
  这时候可以选择一门高级语言来学了,我推荐你学习c++,但是同时你也应该对c有所了解,当然,最终你必须对这两门语言都非常的熟悉。最初的学习可能会相当枯燥,但是要想想,它们无所不能,微软用它们编写windows,各大游戏公司用它们编写游戏。只要你的想象能力足够丰富,你可以创造出一切。不要相信“21”天学会c++的美丽谎言,你可能需要在这个学习阶段花费将近1000个小时,即使那时候,你也不过是在编程的学习上刚入门罢了。
  了解了一些语言的语法规则,你需要学习数据结构和算法,这是整个编程的核心,如果你的学习能力还不错的话,我想这些时间应该可以归于前面那个1000小时的学习阶段。当然,想要达到某种深度的话,这点时间是远远不够的。
  
  
  如果你希望在windows环境下编程,那么现在你可以开始windows API的学习了,不要一开始就去学习MFC,什么,你不知道什么是windows API,也还没有听说过MFC?那我先对它们做一些简单的介绍,windows API是微软为编程人员提供的一套编程接口,全部都是现成的函数,它们涉及到了windows的方方面面,你可以用它们编写出运行在windows平台上的软件。由于这套接口函数数量相当庞大,学习和使用都很复杂,为此,微软设计了MFC,MFC是对windows API 的封装,它是windows API的真子集,它将以往数个函数的功能和并成为一个函数,提供了比windows API更简单的函数接口,但是如此一来,MFC创建了一套自己独立的运行机制,在没有API功底的情况下想要掌握它是异常困难的。如果你已经学会了windows API,这时候再学MFC会十分轻松,它也确实可以大大减少你的设计代码,让你工作更轻松些。不过更简单的函数接口也就意味着更多的功能限制,如果这时候你希望通过API 来为MFC扩充额外的功能是相当困难的。
  当然API的学习也不是一个轻松的过程,想要熟练掌握,恐怕得有7~800个小时左右。
  你可以先学一些GDI的函数,这样你可以马上检验一下c和c++学习成果。这时候你应该可以自己编一些诸如俄罗斯方块、五子棋等的一些小游戏了。不要为有这点成果而沾沾自喜,后面要学的东西还很多。
  别忘了加强一下你的e文水平,这时候你最好多读一些原版资料,msdn是你要经常查阅的,微软的sdk帮助也是你必备的工具手册。
  如果你想要深入掌握API,你必须同时进行对操作系统的学习,了解整个windows的运行机制恐怕是不可能的,但是了解得越多,你对windows编程的了解就越深刻。
  到了这个时候,相信你应该有一定的编程水平了,但是千万不要就此止步,看看后面还有什么要学的。如果你希望在windows编程上更进一步,那么可以去学学VxD,那些你平时绞尽脑汁不知道怎么做出来的东西,也许靠的就是它 。你一定见过它的应用:虚拟光驱、杀毒软件的实时监控、还有当年大名鼎鼎的CIH。不过有一点要记住了,windows 9x 支持VxD,到了windowsNT/2000,它已经被功能更强大的WDM所替代了。
  比起去做windows软件设计,也许你更喜欢将设计游戏作为以后的发展方向。这时候windows的GDI接口就远远不能满足你的需要了,它的速度很慢。你需要一些能够访问和使用显存的图形界面编程接口,你可以去学习OpenGL或者是DirectX,两者择其一即可,不过DirectX比起OpenGL可能难学得多,现在市面上最新版本的DirectX9.0还没有资料,只有微软的sdk可看,这对如此庞大的一门知识体系的学习恐怕是非常困难的。
  你可能需要掌握一些图形学知识,用以完成游戏里的许多设计。这时候你会发现高等数学至关重要,如果你的大学课堂上开有数值分析这门课程千万不要忽视了。
  记住,千万不要成为纯粹意义上的技术狂人,你需要时常找一些空闲时间来玩玩游戏,想想这些游戏是怎么做出来的,如果不关注游戏市场,你就不可能了解现今的技术水平。也许你以后设计的游戏会仍然停留在多年前的水准。
  你需要试着找一些合作伙伴共同开发一些软件或小型的游戏。未来的软件业需要的不再是单枪匹马的牛仔式程序设计者,而是能够配合团队小组共同开发软件的程序员。
  你需要在实践中获得这些方面的经验,实践二字也是整个编程学习方法中最重要的主题,你调试程序的时间应该远大于你阅读资料的时间。别忘了用你的实践去检验书中的每一个知识点,确定它们无误。我可以明确地告诉你,我看过的书没有一本是一个错误都没有的。时刻保持对你所学知识的怀疑也是加强记忆的一个重要方法。
  经过了这么长时间的学习,相信这个时候你已经具备了成为一个合格程序员的条件,但是离成为真正的编程高手还有相当一段距离。这个时候你可以去研究一下人工智能,神经网络学,我想在不久的将来,游戏AI的高度应该会和游戏受欢迎的程度成正比。
  后面还应该学些什么,我还没有研究,毕竟我也在学习阶段,如果以后我还会写点什么的话,我会做一些补充。
  最后的一点忠告是,不要总是看到自己会些什么,而是要看看还有什么不会。切忌目光短浅。