技术开发 频道

论代码阅读的必要性

【IT168 分析】一、 厌恶ABC类的教学代码

每每上计算机课,书上全是些短短的参考示例!实际使用时又往往很难整合到一起,自己写大一点的程序又没法写。看此程序多了,总以为程序设计是一件非常简单的事,敲敲几行就好了!实际是否这样呢?!很多朋友从学校步入社会后发现,学校学的东西和工作中用的东西,编的东西差别太大太大了!因此,有一些“不负责任”的人会宣扬什么“读书无用论”、“大学学的东西太老了”!其实真是这样吗?我们犯了一个错误,走向极端的错误!

其实大学的学习是很有用的,它奠定了你以后工作的基础!一个简单的比较:你和你没有进大学,它高中毕业后没有任何学习的机会,在你大学毕业后你们进同一家IT公司,你们的工作能力一样吗?最起码刚进去时你的能力肯定比他强――除非你在学校根本就没学好、甚至根本就没学――一天24个小时有16个小时打游戏其余睡觉了!至于日后假如他比你刻苦,又另当别论了!肯简单的就是将大学读得还不错的大学毕业的你,和一个连大学都考不上的高中生比,你们进同一家公司会怎么样呢!这样比较你可能会认为大学是有用的!

那么大学读完了,怎么我们不能胜任工作啊!学习和工作怎么有如此差距啊!这主要是教学和实际的脱节、计算机科学发展太快导致的。大学里能和工作很贴近吗?不太可能!由于实际工作千差万别,大学学年又有限,这些能教给你的知识只能压缩压缩再压缩了!因此大学教育量少。其次是大学教育永远跟不上最新的,即使有人写一本教材,最新的,等它出版成书还有待时日啊!即使书写完就到我们手了!那我们有基础读懂它吗?!――读不懂的!因此大学教育落后于工作实践!其实大学教育永远教你最最基本的,你所学会的仅仅是皮毛。你要学的不是书籍的本身,而是大学教育教给你“自学的能力”,有了此能力,又有了大学里学习的基础,只要你肯学,相信很快你就可以适应工作,学到最新、最快的知识!

大学教育怎么可以保证你学到最基本的基础呢!首先大学的教程要包含足够的知识面,同时又要保证学习总时间,因此其例子相当短小!工作后要想适应工作你得自己学、自己学习实用的、甚至最新的知识!

二、 “真正的软件”与如何达到做“真正软件”的能力

安装过操作系统的朋友都知道操作系统就放在一张光盘里,操作系统本身也是一个软件!很多搞数据库的朋友都用过SqlServer、Oracle、DB2等软件,大吧!与我们学习时的例子有差距吧!不谈专业的、优异的就谈Java中Jsp、Servlet的服务器吧,它的代码也有4000页左右(我正在研究),真正的软件不是那种教学式的、简单几页甚至几行的所谓程序吧。
看到真正的软件、看到学校学习和工作的差距!那我们怎么办――肯定是继续学习了!学什么啊?再学那种教学式的代码片断!还不又是回到了大学!为了缩短和工作的差距、为了能写出真正的软件,我们就得研究别人的真正的软件,这是任何书籍所没有的!

三、 怎么学习别人的软件

我们知道为了适应工作我们得学习,为了能做真正的软件我们得学别人真正的软件!那么又如何学呢!打印一本Derby的源代码啃啃,18000页左右的代码(据说价值80亿美元),相信没有10年8年的功底,啃下一遍你也疯了!代码太多啦!

那我们选JDK的RMI好了――简单而且是java中高级的东西(EJB的基础哦)!你又错了!打开你的java.rmi包看看,代码很少,差不多100页,代码不那么多不是很好吗!!!主要是Sun隐藏了其实现细节,很多高级协议的设计部分都在jar包中!唉,不幸!代码不完整!

太大的不能看,太少的不值得看――看了也没多大长进,中等的RMI又不完整!那看什么!JDK中java包相对很简单了,肯定就是它了!那么多看哪个呢?!java包中对初学者能看的就是java.util.logging了,很短且自成体系!(过一段时间我会介绍)Collections也可以,只不过要有个脉络吧,因此我选了Collection、List、AbstractCollection、AbstractList极其一个具体实现ArrayList,希望做到抛砖引玉的作用。看完了Collection我们对java语言的基本语法可以了如指掌,同时为再进一步学习打个基础。(离看懂真正的软件还远呢,离做真正的软件更远更远)我们就慢慢来吧!会成功的,本博客就是介绍我个人的经验,同时和大家共同进步。

总之,看别人的源代码要和你现在的能力相当――能看懂!代码要自成体系,要有利于以后的学习!在学别人的源代码中,学会API,学会设计技巧!一箭双雕何尝而不为哦!一天一天长进,慢慢(打开10个方向后――)我们就可以研究别人的真正的软件了!能研究了,不是一大进步吗!!!

四、 有必要学习别人吗?

在学习J2EE的朋友可能发现,学习过程中我们用的仅仅是接口以及接口中的方法,对实现一无所知!学J2EE很久的朋友可能发现J2EE用了那么就自己除了知道这些API,会用它之外,几乎一无所知!假如你不想被J2EE的API迷惑、不想永远只是一个API的使用者、一个低级的CodeMaker、充其量是一个出色的程序员,请你多来我的博客!我们共同从别人的代码中汲取营养、从别人的设计中得到灵感、学习别人充实自己。让我们征服、征服再征服!即使著名的IBM,它也在学习别人的东西!Eclipse就是一个极好的例子,IBM向开源社区投入大量的资金,构建自己的开发工具Eclipse,它造就自己的开发工具、打击了其它的开发工具开发者,这是商业目的不谈,它其实就是在利用全世界高手的智慧,在打造自己的产品,IBM的Eclipse在卖给企业时是需要银子的!IBM要学我们要不要学???
0
相关文章