计算机专业的大学生课外该如何学习

转载一篇过来人谈的大学期间关于课外学习的意见


  首先我想说的是,如果有志以后成为“优秀的程序员”的人,应该从大学就开始自己的“课外自学”了,这是很必要的,否则你会一开始就落在别人后面。另外,不要以为“所有的基础课都学得十分的好了”就可以“用比别人短得多的时间来学会各种实际的编程技术”。


(还有,我想说明的是,我只了解Windows编程,Linux我不懂。所以你以后如果立志于Linux领域的,我下面的文章对你不会有多少帮助)


1、主线

  作为“主线学习”。我建议这样进行:首先看这两本书:《Windows 程序设计》(第五版),作者Charles Petzold;《Windows 核心编程》(第四版) ,作者Jeffrey Richter;毫无疑问,此两本书必看!否则你永远也不可能成为一个专业的、高级的程序员(我指Windows程序员)。另,看《Windows 核心编程》以前需要有“操作系统原理”的基础。同时,如果学的是C++(在目前,C++在中国仍然是使用最广泛的编程语言),只看看你们的教材是肯定不够的,除了上面说的《The C++ Programming Language》等书(挑一本看就够了)以外,还应该看看《Effective C++ 中文版》,作者Scott Meyers。接下来,我建议你不要去学MFC了,它已经过时了,而且确实不太好用,我回想起当年学MFC的情景,总是觉得付出和得到不成正比。这时候可以去学“.NET”编程了,先学一下C#的语法(Tom Archer的《C#技术内幕》还算不错),你会发现它极容易,可以飞速的看完,因为你已经有了很好的C++基础了。然后再找一本比较全面介绍“.NET”的书看起,现在的话,我觉得《.NET 程序设计技术内幕》是个不错的选择,作者Jeff Prosise。我这里不是说学“.NET”就看这两本书就OK了,但是作为一个“学生”,能看到这里就不错了(当然你要是觉得还不够的话可以去看看Jeffrey Richter的《Applied Microsoft.NET Framework Programming》)。还有,在学习各种编程技术期间编一些自己的小程序是必不可少的,不然的话,你会学什么忘什么。最后,再有时间的话,学一学“设计模式”(它其实很重要的,而且慢慢的你会觉得它越来越重要),书蛮多,《设计模式》值得推荐(作者Erich Gramma等),它是“设计模式”类书籍的宗师,很不错的书,“设计模式”也是要一些实践经验作铺垫的,因此你可能不能完全的理解它。

2、支线

  作为支线,也就是说我觉得它们相对次要些。并且学习它们可以不分先后次序,但是,我还是建议先看完上面说的前三本书(《Windows 程序设计》、《Windows 核心编程》、《Effective C++ 中文版》)以后再来学下面的东西。

  “Java”。。把“Java”作为支线一定会引起很多人的不满,或者说是愤慨,当然,你也可以把它作为主线来学,用来替代上面说的“.NET”。可是根据我自己的体会,“.NET”拥有更多的优势,如果你不同意我的观点,当然可以去学“Java”,没问题。但是作为一个“初学者”,我还是建议你两样都学一下,这样自己才能有比较,才能为自己的将来选择一条更适合自己的“技术路线”。另外,时间还是多的(主线中才提到了六本书),而且,我这里说的“学Java”只建议你看一本书:《Thinking in Java》,这本书可以说是入门的绝佳选择,至于以后怎么继续学习“Java”,可以去看看蔡学庸在CSDN上的专栏文章,里面讲得很详细了。
 
  “网络编程”。。这个东西我想很多人都是比较向往的。我建议如果想做到对网络编程“比较精通”的话,应该去看看《Windows 网络编程技术》(第二版),作者Anthony Jones。这本书和上面讲的《Windows 程序设计》属于同一个技术层次,都是用“Windows API”直接编程,学这类东西的好处是能使你不仅“知其然”而且“知其所以然”。但是,如果立志要学“Java”的,也可以跳过这本书,直接看《Java Network Programming》,是O'Reilly的书,作者我忘记了。至于“.NET”方面,我还没发现专门讲网络编程讲得特别好的书,自己去找找吧。(其实一般的“.NET”书籍中已经有大量关于网络编程的内容了)

  “COM”。。“以前的学习方法”是先看《深度探索C++ 对象模型》,作者Stanley B.Lippman;再看《COM 本质论》(作者Don Box)的前面两章,然后看《COM 原理与应用》(作者潘爱民),再回过头来看《COM 本质论》的后面部分。《COM 本质论》的前面两章讲得极好,它用最能让人理解的方式讲述了“什么是COM”,但这本书的后面部分比较晦涩,如果没有一点实际的“COM程序编写经验”,就很难理解了,所以我提到这里要插进来看一看潘爱民的《COM 原理与应用》。但是,这里有一个问题,《COM 原理与应用》里的应用部分使用的是MFC和ATL(抱歉我又提到了这些过时的东西,我只是对它们太熟悉了),我前面曾建议大家不要去学MFC了,于是产生了矛盾,请恕我无知,在当前的情况下,我不太能肯定要怎么学习“COM”才是最有效的,这里我确实不能给大家“更新的方法”了。但是现在随着“.NET”的推进,“COM”的生存空间似乎是越来越小了,因此“到底要把COM学到什么程度”也几乎成了“到时候看情况再说”的问题了。但是,我觉得无论如何了解一下“COM的基本思想”还是能带来莫大的好处,它太经典了!也就是我上面说的《COM 本质论》的前面两章。

  “DDK”。。所谓“DDK”就是“设备驱动程序”,这属于一个相对冷僻的方面,但事实是“正因为它冷僻,所以这方面的技术人员的收入还是不错的”,但是“DDK”的知识对你学习别的很多东西(比如“.NET”、“Java”)都不会带来任何的帮助,它比较独立。所以我的建议是“在你还没有能力确定以后自己的专攻方向时,不要去学它”,因为它实在也不太好学。我对它只是略知一二,所以也只能说到这里就作罢了。不过可以给你推荐一本书:《Programming Microsoft Windows Driver Model》,(作者Walter Oney)。

  好了好了,再下面就绝对要超出“初学者”的范畴了。其实学到这里,再加上你已经积累了一定的实际经验了,那下面再要学些什么,路要怎么走,就一定会有自己独立的想法了。我就不再废话了。

个人认为此文的基本思想比较可取,另外其中推荐的书籍也的确是经典之作。不过人各有志,大家各取所需,兼听则明吧。

 

本文转载自左飞老师的博客:http://student.csdn.net/space.php?uid=113322&do=blog&id=14333

你可能感兴趣的:(java,设计模式,编程,.net,windows,mfc)