对于计算机语言学习的一个小结

来源:互联网 发布:淘宝照片拍摄价格 编辑:程序博客网 时间:2024/04/19 19:33
       去年对我来说可为是非常特殊的一年,毕竟是从学生转变为一名真正的程序员的一年。不过话说回来在中国向来有一股歪风邪气,总认为程序员是it行业中最底层的人员,许多做软件的应届生也总是以项目经理和管理层最为自己的风斗目标,这对于中国的计算机技术发展来说无疑是一种悲哀,当然这不是本篇日志将要讨论的,关于这点我将在以后的日志中阐述我的观点。
         当然,我将从我用的最多的也是我本人非常欣赏的一门技术开始,那就是Java。我最早接触的一门语言相信和许多人一样那就是c,事实上在大学中的c语言这门课,我学的并不好,甚至于考试差点挂掉。好在那个学起结束后的暑假里我又从头至尾重新学了一遍(真的是重新学了一遍,连练习题都重新做了一遍),而且到现在为止,我所看过的真正属于将c这门语言的书籍也只有网上“臭名昭著”的谭浩强的那本入门书。擦边球倒是看过不少,像是《莱昂式UNIX源代码分析》,《计算机网络》这类用c来实现算法的书。至少我认为谭的那本书是非常适合入门的,如果像网上那些所谓的高手要刻意去追求诸如main函数入口这样的问题,那和孔乙己有什么区别。而且我到现在也认为c语言本身是不适合做深入教学的,因为对c来说深入教学就是阅读大量的c应用的源代码。而c本身可以说事一门可以将硬件性能极致地进行榨干的语言。当然,是典型的面向过程语言。而几乎所有的纯面向过程语言都是以算法为核心的。因此,用这些语言开发的产品更多的时候是极其注重性能,而忽略其可维护型和可移植性的。在接触c一年后,接触了c++,第一次了解了面向对象的概念。当然,那时的我几乎就是在用c++写c代码的这类人,根本不能够理解什么叫面向对象。甚至觉得许多东西用c++开发还不如用c开发来的简单(当然,有时候的确是这样)。
     Java是完全自学的,至于动机,可能是那时Java非常的火吧。第一本教材是sun的《java语言导学》,也许是当初的运气好吧,直到现在我还找不出有那本比它更好的入门书或资料。当然,这本书是不可能让你了解到面向对象的精髓的。但是我已经开始觉得Java的确比c和c++更好用了,至少不会出现像用c++写c代码这种情况了。既然有了兴趣,那就继续看书吧,于是从网上下载了《Thinking in java》的第三版,候截翻译的,可惜的是他到最后只翻译了14章,而去年出的交大翻译的那本中文版自然是不能和候截翻译的相提并论。直到最近读了《Design Patterns: Elements of Reusable Object Oriented Software》(没错,就是GOF的那本著作)我一直认为这本书是我读过的最好的计算机书籍(事实上不同计算机图书之间是没有可比性的)。也许《Thinking in Java》不是一本最全面的介绍Java的书籍(它不可能比Sun的《Core Java2》更全)但它绝对是一本最能体现Java或者说是纯面向对象语言精髓的一本书。当然我第一遍读的时候也只能是有个初步的感觉,也第一次真正感受到了面向对象语言和传统的面向过程语言是有很大区别的。但是区别到底有多大,到底该如何用好,还只是一直半解。
      去年工作后,第二遍阅读了这本书,并真正通过一些项目的实践和公司的技术总监的言传身教,让我从真正意义上理解了面向对象,理解了Java。这里要特别感谢我们的技术总监,相信在技术上他在国内绝对算是一流的,更重要的是,相信他作老师也绝对会是一流的。可惜由于他想回深圳的缘故,现在已经离开公司了。
      那么Java或者说是面向对象的精髓是什么了?以我这几年接触java的感觉来说,那就是面向接口编程。如果是从面向多态的4个特性:抽象,封装,继承,多态的角度来讲的话,那就是多态!!!如果说c是一种将硬件性能极致地榨干的语言,那Java就是将软件的可复用性极致地发挥的语言。当然这其实是以性能为代价的,但是这是一种趋势,因为现在硬件的性能已经不是计算机软件和用户之间的主要矛盾了(任何学科都是和哲学息息相关的,计算机和语言的发展也是由矛盾推动,就像Thinking in Java 中的那句经典的语句所说的:The genesis of the computer revolution was in a machine.The genesis of our programming languages thus tends to look like that machine)。
     另外我对Java的一个通俗一点的看法就是,只要你能想到什么,用Java就一定能实现,问题在于你不一定想得到。当然这个看法有个问题就是,软件开发的重点并非在于实现而是设计,而学习Java事实上就是在学习设计、学习设计模式,从而真正发挥Java的优势。GOF的那本《Design Patterns》可以说是面向对象软件开发的圣经。你可以说我像其他追星一族一样是在盲从,但必须承认的是,如果任何人在面向对象软件开发领域有所成就的话,那他就必须进行这样一种盲从。这本书的意义绝对不是让你对在进行某种语言开发时显得更有心得,而是在于对整个开发世界的思想的提炼。能够阅读这本书,不至于看得一头雾水,并且可以在作开发时时不时的用到一些模式,可以说是对我Java学习或者说是语言学习的一个最好的小结吧。
     最后,我工作以来的一个最大感觉就是,绝对不能轻视许多大学里的理论知识,一个真正优秀的程序员所应该掌握的不仅仅是几门语言,还要全面的和开发相关的基础知识,和不断学习这样的知识的一种动力,比如数据库,比如网络,比如多媒体。
 
 
原创粉丝点击