bondzh

学不可以已--我一年Java之路的回顾,反思以及展望 (转)

大约就是在去年的这个时候吧, Java 这个字眼就开始占据了我学习计划中的重要席位,从那时候那杯冒热气的咖啡一直陪伴我到今天。也不知道当时为什么要学习 Java ,又是为什么选择了 Java 。 因为我记得当时的我,心中所想和现在可谓是大相径庭!那时我曾天真的想着,我将来学管理,你们这些学计算机的人出来也难逃给管理界人士做下属的命运,现在 想来,那时是多么的无知和幼稚,我怕现在的很多大学生,更确切的说很多像我们专业――信息管理与信息系统的同学都还抱着这样的想法(当然也不排除很多立志 学习金融以及管理的同学 ^_^ )!其实在蔡学镛先生的 Sleepless in Java 中也就说过,他在上大学的时候,有两类同学错误的认识,第一种就是瞧不起基础课,觉得学的什么 Data Structure Operating System Database Concepts 没用,以为会 VC VB SQL Server 的就真的能成为众人羡慕的 IT 白领了;第二种也就是我刚才所说自己犯的错误,真以为那些写程序的人将来入了社会会被那些学管理的人踩在脚下!第一种是短视进利,第二种呢就是好高骛远!在犯了第二种错误后,值得庆幸的是,我对第一种错误总是避而远之! ^_^

 

记得我在网上搜索了很多资料,最后终于锁定两本书作为我的入门教材的入选书籍,一本是《 Core Java 》,另一本就是《 Thinking in Java 》了。但是因为当时网上说《 TIJ 》中文版翻译的不尽如人意,于是我就选择了《 Core Java 》,现在真觉得当时选择是对的,就我那会的基础根本看不懂 TIJ ,而《 Core Java 》是属于教科书风格的书,于当时的我比较适合。随着我翻开《 Core Java 》的第一页,我就正式踏上了 Java 之路!当初我在刚学习 Java 的时候,我无论对 Java 还是程序设计都是不折不扣的门外汉,我看《 Core Java 第一章的时候完全是如履薄冰,一大堆技术名词搞得我晕头转向的,什么分布式,多线程, GC… ,虽然现在看来是非常自然而顺畅的,但在当时可以说是我前面的一座高山,其实,那些技术名词根本不用看,慢慢的学,学的那儿自然就不言而喻了!现在看 CSDN 上初学者恨不得一开始就把所有的名词全部搞懂,从 J2EE J2ME EJB JMS CORBA JXTA….. 就我觉得,这些都是图增烦恼,而且根本对真正的初学者即使你知道你也无法理解。紧接着,喜马拉雅到了,设置环境变量, classpath 的设置是我当时最感郁闷的东西,相信现在的初学者对于此道还是一样的,确实还是 Microsoft 的东西比较好用 ^_^ ,门槛很低,不至于吓退初学者!你要知道,一个没有 path 概念也没有 UNIX 背景的初学者要设置以及弄明白为什么这么设置真不是一件容易的事,而且主要是书上说的很模糊,而且当初我学习的时候环境并不好,因为我周围的同学并没有学习 Java 的,我无处可问,惨啊 ……! 我虽注册了一个 CSDN 的帐号,可是很少上论坛,现在想来,如果当时能够好好利用 CSDN 的资源,也不用走这么多弯路了!也不知道当时在什么地方找到这个配置方法,终于解了我的燃眉之急。随后又听说 JCreator 是比较好用的 IDE ,下载了一个 2.5 版的,用了过后发现果然不错,至少不用每次都用 console 来编译运行,翻过这个 classpath 这个拦路虎过后,此后的平原就比较开阔了,但当时只是感觉上好像自己学习的比较轻松,其实有很多东西没有学扎实,以为自己懂了!打个比方吧,我直到快学完《 Core Java 》第一本书的时候我才在《 Java in a nutshell 》上面知道什么是 class method ,什么是 instance method

因为我没有什么 C++ 基础也更谈不上什么 Lisp Smalltalk 背景,所以《 CoreJava 》的 tips 或者要求 C++ 程序员注意的一些 pitfalls ,我都跳过没读,不过就我现在的 C++ 水平来看那本书,如果利用这些 annotate 对于一个从 CPP 转到 Java 阵营的 Programmer 来说是非常有帮助的。

2003 年的寒假《 Core Java 》的第一本就伴随我度过了一个懵懂的春节,当然这段时间《程序员合订本》对我的帮助是很大的,不仅在技术上教会了我许多东西而且也使我得知识面拓宽了不少!在寒假的时候我在网上固定的生活方式就形成,每天一打开 Browser ,首先打开 CSDN 然后打开 Sina CSDN 的论坛也成了我经常光顾的地方,当时看着 CSDN Java 板块的那些牛人红星闪烁的,觉得特别羡慕!于是我也开始回答问题以挣取专家分,不过就那会我的知识实在太过匮乏,混了整整一个寒假,也就到了三个裤衩 ^_^ ,不过也在 CSDN 学到了很多东西!那段时间虽然进步不大,不过却是很值得怀念的!在假期中我还学过一点的 JSP/Servlet ,不过,没有深入的学习,而且对 web application 的理解也很浮浅,所以学了等于没学!给我印象最深的就是 Tomcat 运行 Servlet 的配置了,那个其实就很简单的 web.xml 文件,真不明白当时怎么搞了差不多一天才出来,急的在 CSDN 上面连连发帖子问 …..

 

看完《程序员合订本》,我基本对 Java 领域的好书有了一些了解,随后我知道了 china-pub ,知道以后买书之前要上那儿去转转,看看书评。再回学校之前,我列出了要买的一些书的清单,费用差不多到 500RMB 了。从家里一回学校,那 500 元也就众望所归的换成了 N 斤的质量良莠不齐的纸张了,这些纸张还真不能对等成知识!我记得那次书籍大采购中有用的书就只有这几本《 Java in a nutshell 》,《 Effective Java 》,《 Thinking in Java 》( E ),《 Java 与模式》(在我看《 Design Pattern 》以前:)),《 A breif introdution to Data Structure and Algorithm Java Edition 》,《 Core Java VolumnII Advanced Feature 》!其他的么,唉,可惜啊 …………

 

 

随着大三上学期的开始,也就开始了 DS 的学习,我使用的教材就是上面提到的那本书,对基础数据结构和算法的学习让我也慢慢重新开始认识程序设计认识 Java ,我记得梦魇先生在合订本中给《 The STL Annotated Source 》写推荐的时候说过: 作 为一个程序员,如果你是做数据库编程的,大可以不懂汇编语言,如果你是写驱动程序的,大可以不必通晓人工智能,写编译器的可以不用懂什么计算机图形学,操 作系统内核高手的不用精通网站架设,然而,如果你不懂数据结构与算法的基础知识,不具备数据结构与算法的基本技能,那就完全丧失称为一个程序员的资格 这就足以说明 DS 的重要性!

 

看着 CSDN 上面蔡学镛老师的专栏,也在一期一期的程序员中看着他的文章,特别是有一篇叫做《我所知到的 O’Reilly 》,慢慢我对 O’Reilly 的书籍的感情与日俱增, O’Reilly 的网站也成了我经常出没的地方了,那段时间我买了不少 O’Reilly 的书,因为 O’Reilly 俱乐部有会员的活动,好像是积分多少可以免费送一本 50 或者 60 以下的书,主要是这几个价格是 O’Reilly 的中文本比较喜欢订的价格, 49 59 69 75 85…. 当时我好像一共买了 6 本,关于 Java 方面我觉得比较好的就是一本同样是 David Flanagan 写的《 Java Example in a NutShell 》,另一本就是《 Java Cookbook 》!随后有资格获得一本 60 元以下的书籍,后来我千调万选选了一本《 DNS BIND 》( 3E )(其实我拿这些书根本就没用:)) 59 元, O’Reilly 的工作人员非常热心,首先告诉我则本书已经出到第四版了,但我告诉他我赠书的上限只能到 60 而则本书要 69 的时候,他告诉我一样可以赠给我,当时可把我感动死了! ^_^ 随着我看的 O’Reilly 的书籍不断增多,我看 O’Reilly 的书也形成了一个独特的看法,没拿着一本 O’Reilly 的书籍,我一般是看封底的介绍,介绍则本书的内容以及一些权威人士对这本书的评价,大家都知道, O’Reilly 的书籍封面都是一只动物, Java 系列的代言人是 Tiger ,而且 Java 系列的书都是紫色的!随后我会翻到最后几页看封面的动物是什么,然后看作者的介绍,最后才开始进入正文!那段时间也就形成了一种特殊的 O’Reilly 情节!

大家都知道, O’Reilly In a nutshell series 一向是品质的代名词,刚开始看的时候我实在困惑为什么 O’Reilly 要用 XXX in a Nutshell 命名,后来有一个躺床上午休的时候突然想起以前高中的时候看过 Steven Hawkings 的一本书叫做《 Universe in a nutshell 》(果壳中的宇宙),就连 Universe in a Nutshell 更何况其他东西呢,所以技术手册包涵范围之广,知识之全,可以说是可见一斑!

 

上半年刚开学的时候,我就以为自己对于《 Core Java VolumnI 》已经理解透彻了,然后就开始看 VolumnII 了,而且在同时还在看《 Thinking in Java E )为了进一步巩固基础,不过在此之前我大致看了一下《 Java in a NutShell 》,也从前面的介绍中学到了很多我漏网的知识,就像上面所说的 class method instance method ,还有对 Java 这个 paltform 也有了一些理解。不过开始读 VolumnII 的时候,第一章就把我绊倒了,线程?什么东西,因为当时没有学习 OS ,所以要理解线程的概念以及理解线程同步太过困难了,而且其中夹杂了一些 AWT Swing 的一些应用,因为我在学习 VolumnI 的时候对于 GUI 就不太重视,觉得 GUI 既浪费时间而且也学不到太多东西,而且还比较麻烦,对于 GUI 的观点我一直持续到现在,唯一不同的只是现在认为 Java Swing 是学习 Design Pattern 的很好的例子!

慢慢在学习 VolumnII 过程中,我愈发的感觉到基础的薄弱,于是我又拿起 VolumnI ,复习了一遍,发现又有新的收获,我学习就这样,我只要学习偶有所得便喜不自禁的 ^_^ ,如今我同样不定期的复习以前看过的书籍,以寻求新的收获。同时我也开始了《 Thinking in Java 》的学习,我以为,我已经看过《 Core Java 》的 VolumnI 了,按道理读《 TIJ 》应该是轻车熟路,应该没什么问题,但当我开始翻开第一章开始看的时候,又给了我当头一棒,看不懂,特别是后面那些关于 Software Engineering 的东西,不过到现在我还不怎么了解后面的东西:)

所以我觉得初学者读这本书的时候第一章根本就应该跳过,不然就是给自己找罪受,我依然记得看不懂书那郁闷的心情,不仅这个心情影响你其他的学习,还打击你学习 Java 的积极性!而且由于我看的是 E 文的,有些意思还是把握的不太准确,所以我就借了一本同学的中文版的《 TIJ 》,(他是在我的鼓动下买的这本书:)),而我那本 E 文的也就没怎么看了 ! 这本书就是候捷老师翻译的了,说着候老师翻译的书籍,我又不得不发一些牢骚了,现在我看技术书籍,慢慢的就习惯了网上所谓的候捷风格,不过这种风格我甚是喜欢。

 

第一,字体排版都让人看着很舒服,而且行与行之间的间隔,还有正文与书边的间隔都是恰到好处,很多书排版的满满的,看似节约纸张,但是给学习带来了很大的不便,“为智者所不取” ^_^ ,比如我现在正在看的那本《 Inside JVM 》的间距就非常小,写个旁批都写不下。第二,就是翻译了,翻译的学问就大了,国内很多的技术书籍都翻译的还是中规中具的,并没有从语言上润什么色,这种书即使内容很吸引你,但是不算是你能够品味的好书,对于这种书,你只有从原著中找到乐趣拉!比如前段时间我看的那本《 Mastering EJB 》的中文版 …. ,候老师的书的语言功底我是非常认可的。然后就是翻译到个什么度最好,又很多技术书的译者恨不得把每一个词都翻译的滴水不漏,我个人认为是过犹不及,保留原有的技术名词无论对你以后阅读英文书刊,阅读 Specification ,还是理解原书的意思都是非常有帮助的!我认为就应该像候老师的书中所保留的那些比如 stack heap interface polymorphism inheritance reference primitive 这些东西一看你就知道是什么东西,大脑中也就不需要进行第二次的转换,无疑使你接受信息的速度变快了!这种例子在国内的翻译书籍中很普遍,比如在我年底开始学习 C++ 所买的第一本书《 The C++ Programming Language 》这本书是北大的裘宗燕老师翻译的,当然这本书翻译的是没有什么问题的,不过正如我前面所说的,这本书翻译的过多了,比如刚开始我看到界面这个词,我一愣,随后才反应过来,原来说得是 interface ,再比如后面我看到在线函数,我又是一阵迷惑后才知道原来说得就是 inline function !在《 Inside JVM 》中也是如此,第一次看到内嵌函数,直到后面解释才知道还是刚才说得那个冬冬!

 

关于书的牢骚发完了,又回到 TIJ 吧,从第二章开始学习的 TIJ 教会了我很多东西,特别是第四章的 Initialization and Clean up ,补了很多我在学习《 Core Java 》中留下的漏洞!所以说这本书是 Java 领域的一本圣经级的著作一点都不过分!这一学期伴随着 SARS ,伴随着《 TIJ 》,《 Core Java 》,《 A breif introdution to Data Structure and Algorithm Java Edition 》,我的大三上学期就度过了,其实上学期主要就是加深 J2SE 基础的学习,而且主要的精力放在 DS 上面,当然还伴随的一期一期的《 Programmer 》:),其实在其中我还穿插着一些 JSP 的学习,我选的当然也是 O’Reilly 的《 Java Server Pages 》,其实这本书有些年代久远了,不过讲原理性的东西还是不错,但是我还是觉得当时用这本书根本没有学到些什么东西。因为无论要学习 JSP 还是了解初步的 J2EE 构架,还是得把 J2SE 牢固,把 io net util 弄的非常熟悉,然后再 Servlet JSP 的一步一步的学上去!

 

在放暑假之前,我又去买了好几本书,《 Java Network Programming 》(看过 Bruce Eckel 的推荐过后 ^_^ ),《 Java Servlet 》,《 Java 夜未眠》还有《 Borland 传奇》随后把这个暑假的学习定了一个计划:继续学习《 Core Java VolumnII ,学习《 Java Network Programming 》,《 Java Servlet 》,《 Java CookBook 》以及再次复习《 Thinking in Java 》( E )。学习《 Core Java VolumnII 是为了学习一些高级应用,不过这本书的学习再次止步于高级 AWT 和高级 Swing 那儿,我对 GUI 的确没什么兴趣。学习《 Java Network Programming 》是为了学习 Java 中最为重点的网络编程,并且为 J2EE 打基础,学习《 Java Servlet 》就更不用说了,也是为了跨向 J2EE 平台做准备;学习《 Java Cookbook 》的目的很简单,就多看实例,知道处理一些常见问题的方法;复习《 TIJ 》就是为了进一步的巩固基础!经过那个学期我就形成了一种观点,基础永远是最重要的,只要把基础学习扎实了,什么东西很快就能学会,触类旁通!所以花更多时间在学习高级的一些应用上面还不如花在基础上面更划算呢!你见过程序设计都没有学好的同学想通过学习《人月神话》,《 Peopleware 》这些书来达到高手的境界的么?还有些同学光关注程序语言的学习,关注 practical 的学习,对其中本质的东西确不闻不问!在这里我又想引用候老师的一段话,个中味道自己去品位吧: 程式语言是程式员最基础的功夫,必须熟练它掌握它。但若只是如此,编写不出好程式、大程式、专业程式。大家都会说中文,独独有人旁徵博引,左右逢源,字字珠玑,文思隽永,这是为什麽?功夫在语言之外!

语言是首要条件,但不是决胜条件。功夫在语言之外,决胜在语言之外!


----------------------------------------------

ps:作者先通过CJ和TIJ打下坚实的Java基础, 然后通过JNP,JS过渡到 Java 中最为重点的网络编程

--------------------------------------



在暑假的学习中情况也是像我以前计划的那样发展,首先看的一本书就是《Java Network Programming》,Bruce确实推荐了一本好书,这本书循序渐进并且讲的非常的透彻,学完这本书然后再学习新的netAPI以及NIO是非常轻松的,这本书我花了10天看完了,自我感觉好极了^_^与此同时也每天练习《Java Cookbook》中的代码,这个假期我把那本书的代码全部亲自实践了一遍,正因为如此就积累了很多解决实际问题的办法,所以把这本书叫做 Encyclopedia 一点都不过分!顺利的学习完《JNP》以后我开始了《Java Servlet》的学习,因为一直以来Java的基础比较扎实而且在上半学期对web application也逐步了解了很多东西,所以学起来是非常轻松的,当时我用的工具是Jbuilder9,省得用Editplus Tomcat每次写完一个Servlet还要再改xml文件。提到JBuilder,我又想起当初死活不知道怎么破解的时候了,好不容易能使用JB了又不知道怎么弄,Java的那些IDE对于那些初学者来说确实亲和力不如VS系列,但是只要你入了门槛,那么那些工具就让你如虎添翼了!不过JB的庞大以及启动之缓慢确实让很多人敬而远之,虽然它的功能强大,特别是配合Together以及Optimizeit外加配合一张英俊的Blake Stone的照片^_^不过我倒是更喜欢用Eclipse或者Idea

 

不过暑假中收到一封来自O Reilly E-mail倒是影响了我后一个月的学习,那是O Reilly 给会员优惠的购书活动,其中很多书都是2折起的,就在那个假期我又一口气购了十多本书,内容覆盖XMLUMLJava,网络,不过只花费了200RMB,相当于每本书就20RMB,这在IT图书界而且还是O Reilly 这样有图书质量保证的世界一流出版社是非常罕见的!不过因为买的书实在太多了,我在暑假也看不完,所以在假期的后半段我只读了这几本书, JDBC Java 数据库编程》,《 Java Threads 》以及《 Enterprise JavaBean 》的前 2 章(因为不太懂,刚踏入 EJB 的时候又如同步入森林了一样),再加上学习的《 Core Java 》( VolumnII ),《 TIJ 》,那个假期我不敢说我有很大的进步,只是我觉得熟练度增加了,基础知识也算比较牢固了!

(附: 其实当初买的那些书,除了上述三本其他都没看,害我后来没办法只有再低价出手。经过这一堑,我明白了,对于计算机图书,它不是《四书五经》可以拿来收藏, 可以传给后世(当然也不排除有乐于此道的同学),要买书只能买最近要看的书买来一本就就要订一个这本书的学习计划,至于于你没用的书,正如我当初买的 DNS 的,网络的,即使很经典,很便宜就算是白送于你,也没有两卷卫生纸来得实在 ^_^

 

说到上个暑假,还有不得不提的事就是沉迷于 CSDN 的论坛中。早在暑假回家之前,除了那些学习计划,我还有一个目标就是一定要在 CSDN Java 板块变成一个红星,因为那个时候我觉得红星就是技术水平高的代名词(一般初学者才有这个想法 ^_^ ),所以那个假期在 CSDN 回答问题可以用一个疯狂来形容,当时基本上事每一个帖子都有我得足迹,每天泡 CSDN 5 6 小时,分数确实是扶摇直上,但是我很清楚,能力并没有向专家分一样涨的那样的飙升!很快,不到一个月的时间, 5000 分就够了,看着自己名字后面的红星,可以说是喜不自胜 ^_^ ,心想 Java 我也算入门了!当时有感于 Java 基础板块的入门和基础问题在不同的时期要被不同的人重复提出 N 次,而且想起我入门的艰难,我就写了一篇初学者入门的帖子,列出了初学者提问频率最高的 4 个问题(至少当初我在前 3 个问题上面都栽过跟头)。 1 :环境变量 2 Servlet 的配置 3 Java 连接数据库 4 :书籍推荐!后来时常看见自己的文章想,我当时要有这样一篇文章,也不至于 ……

 

回到学校,慢慢的,对 CSDN 论坛的热情也就淡了,不过每天打开浏览器第一个上的还是 CSDN ,可能这已经在我得生活里面成为定式了。就像我说,其实我每天上网也上不了多久,也就收收邮件,看看新闻,上上论坛。但是要一天不上网就觉得特别别扭,这已经固化为一种生活方式了!

如果说在升第二颗星之前我还有些许动力泡论坛,这点动力随着 Converse 旁边多了一颗星后就基本消失了,而且因为平时学习实在太忙了,所以每次即使上论坛也只是上会非技术版!更多上 CSDN 还是去看文档中心,因为每隔不久,就会有些非常好的文章可以学习除此之外,另一个宝库就是 IBM 开发者网站了

 

在下半学期我给自己树立了两个目标:第一就是进军 J2EE 阵营,其中首先准备攻克 EJB ,当然首选教材便是 O’Reilly 的那本《 Enterprise JavaBean ,不过这本书委实太老了,书中讲的都是 EJB1.0 EJB1.1

EJB 的实践环境要比一般的 J2SE 的程序配置高多了,我当时用的 Weblogic8.1 + Jbuilder9 + SQLServer, JB 开发 EJB 是非常方便,自己只需要添加很少部分的代码就行了!不过因为这样的配置造成机器的速度比较慢,所以我在学习 EJB 的时候并没有写多少例程序,主要集中在原理的学习!

 

另外一个目标就是设计模式的学习以及应用,希望能够脱离语言的层面,说这话只能是贻笑大方,因为脱离语言层面谈何容易,我得实践经验太少,光靠理论以及玩具级代码的练习要达到这个目标简直就是痴人说梦!不过 9 月份我确实开始了对模式的学习,选的书正是网上评价很好的《 Java 与模式》,不过这本书我只看了很少的部分,原因有二,第一这本枕头一样的书籍不便携带,也不便翻阅;第二,书中简单的代码占了大部分的篇幅,而且感觉有点累赘,或许因为我对东方文化孤陋,所以阎博士举的一些例子,反倒使我迷惑了!

 

但是 9 月份我却看到了另一本好书,《 Effective Java 》, Bloch 不愧为 Java 社区中声誉极高的一个人物,这本书第一遍看的时候我就已经觉得就 Joshua 在这一条一条的建议中,就把 Java 编程的精髓透于纸上,这本书于我得震撼超过当初看 TIJ 的感觉,也可能是因为当时看 TIJ 的时候没理解其精华,也可能那些东西接触多了就没什么新鲜感,认为是理所当然的。正如我后来学习 CPP 的时候,见书上描述神奇的 Polymorphism 的时候没什么感觉一样!这本书在已过的这个学期完整的读过 3 遍,而且平时一有闲暇时间又在读这本书,感觉每一遍都有新的收获!

 

其实刚过去的这个学期在 Java 上我花的时间很少,写程序代码的时间就更少了,写的程序主要还是 Java 选修课和操作系统的作业 ^_^ ,因为我总感觉敲代码太费时间,实践所学到的东西根本不比我看书所学到的东西,当然我知道这是错误的,可是心里就有这种倾向!其实,蔡学镛的夜未眠中有这种境界,就是实践所能学到的确实不比看书所获取的知识多,我虽没达到却有这种错觉,可笑 ……

 

可能因为《 Effective Java 》给我的感觉太好了,我又买了两本主题差不多的书,一本是《 Practical Java 》,另一本是《 Java Pitfalls 》,前者深度上不及《 EJ 》,后者又涉及太多 GUI 的东西了,不过,总的来说,这两本书也让我学到了不少的东西!我坚信,多看点书始终对自己是有好处的 ^_^

 

Mastering EJB 》是我上个学期读的最后一本关于 Java 的书籍,我是把这本书的中文版和英文文档 concurrently 读的,不过也辄止到高级主题那章,因为慢慢的,我就暂时不准备向 J2EE 发展了,因为这些我都把他们叫做应用型的,如果你不出来实践那就没什么作用,所以我只是了解一些 EJB 原理性的东西,开发部署也就不用了解的那么仔细。所以后半期的 Java 学习还是把重心放在了 J2SE 上面。进入 11 月份,除了不时上技术网站看一些关于 Java 的帖子,从《程序员》,《开发高手》上面看一些文章,还有没事复习《 EJ 》,就没怎么拿着正式的书籍读过了!主要是因为我把精力全部放在了 C++/STL 上面了 ^_^

 

 

第一次,在 10 月份我参加了 Java 年会,而且这一次真幸运,遇到 James Gosling 首次访华,更为幸运的是,在 James 的见面交流会上面,能够和这位 Java 之父合影,而且那天还幸运的得到了一套 Sun 赠送的 StarSuite

 

参加 Java 年会后,我在 11 月份又参加了 Bea Dev2Dev 开发者大会,反正我觉得就是大会是了解一些概念,要真正学到东西不太可能,那只是拓宽视野的地方,一句话,就是长见识!

 

反思这一年走过的路,也就是品味学习的酸甜苦辣,我觉得唯一值得称道的就是自己是一步一步坚持走过来,没有放弃 !

 

至于短期内的目标就是学习深入了解 JVM ,而对于未来的展望,我个人不太喜欢憧憬未来,因为我觉得立足脚下会让我感到充实!

 

下面几条就是我的反思或者说自己在学习中形成的一些想法,与诸君共勉,希望大家能够提一些学习上面的建议以及纠正我得错误观点:

 

1 .书读百遍,其义自现

我看书就是这样,看书看不懂很正常,技术书籍不是武侠书籍,看不懂没什么好奇怪的!我

遇到看不懂的地方,就不会在那儿阻塞太久,实在看不懂我就咕噜吞下去,等到看完这一章或者这一节再回过头来学习,反复的读!我的学习就是一个往返的曲线,不时的会把前面所学过的复习一遍!我觉得就是读过好几遍的书,就像我现在再读《 Thinking in Java 》,每次都有新的收获,虽然收获一次比一次小吧,但是却不是可以抹杀的!这可能就是所谓的温故而知新吧!

 

2 .勿在浮沙筑高台

这里引用了候老师在《深入浅出 MFC 》中的一句话,其实贯穿这篇文章我无时无刻不在强调基础的重要性,而且平时这个观念也是 deeply rooted in my mind

 

3 .天下大事,必作于细

又引用了候老师的话,学习技术就是要从细处下功夫!看一本书要理解透彻,其实也要分什么书籍了,原理性的书籍那是来不得半点马虎,至于很多应用类书籍,实例类书籍,看过知道在哪儿找就行了!

 

4 .业精于勤荒于嬉,行成于思毁于随

这和本文的题目所要表达的思想是一样的,学习没有捷径,只有刻苦努力不要放弃才能成功!不管前面的路如何,自己只要坚持走,等登上顶峰了,回头一看,自己走过的路就是成功路!不论多聪明,或者有些许的愚顿,都请记住“骐骥一跃,不能十步;驽马十驾,功在不舍”。

 

5 .不积跬步,无以至千里;不积小流,无以成江海

要 达到高手的境界,非一朝一日之功,平时要多看,多积累,博闻强识,厚积而薄发才是正道!很多积累就在每天那么几分钟,半小时中。很多同学,我以前也是这 样,比如看电影看了一晚上,以前我就想反正都浪费了几个小时了,也就不去自习了,剩下的时间也就再上上网听听音乐什么的就过了!现在就是还剩 10 分钟我也要去自习室(不过这有一个前提条件, ^_^ ,偶们学校小,宿舍到图书馆很近),因为这几分钟浪费也是浪费了,为何不用这几分钟看看书呢?多看书总是有帮助的!

 

6 .武学之道贵在精而不在多

《天龙八步》中的一句话,其实都是一个道理,打个比方说,鸠摩智对于武学所学甚博,结果和乔峰比呢,乔峰就一个降龙十八掌,可以练到天下无敌!有些同学,今天想学 Java ,明天想学 C++ ,过了几天又想学习 C , 不过到头来还是竹篮打水!其实只要有一样你学精通了(要能称的上是精通,弹何容易啊!),其他的很快就能触类旁通了!

 

7 .闻道有先后,术业有专攻

技术上强人太多了,不过不要妄自菲薄。很多同学,包括我自己在学习过程中都有这种妄自菲薄的感觉,真强啊,我怎么什么都不会!其实没关系,慢慢来,对自己说,汝所到之处,吾亦可至!!

 

8 .天行健,君子以自强不息;地势坤,君子以厚德载物

一句话,一条鞭子,鞭策自己前进!

 

 

 

PS: 很久以来就想写这样一篇文章,总结自己一年以来的学习,好好看看一年自己走过的道路,也算是封存自己 03 年的记忆好让以后有所回忆!虽然元旦过后就开始写,但其中写写停停直到今天才把这篇文章完成,如释重负!我个人不善于写作,所以所谓文章也只是心中想到什么也就附之纸上,可能错字别字误用的成语不在少数,之所以发到 CSDN 也是为了那句话:发表是最好的记忆!

 

汪瑜佯

完笔于蜀中某地

2004 年元月 15

posted on 2006-12-12 20:19 DestinyController 阅读(819) 评论(3)  编辑 收藏 引用

评论

# re: 学不可以已--我一年Java之路的回顾,反思以及展望 (转) 2006-12-15 18:59 我的求职信

我思想所以我存在我思想所以我存在我思想所以我存在我思想所以我存在  回复  更多评论   

# re: 学不可以已--我一年Java之路的回顾,反思以及展望 (转) 2006-12-16 13:27 DestinyController

java是一门面向对象的语言,那对面向对象和面向过程不是很清楚的请看看下面的内容,说不定对你有帮助:

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

例如五子棋,面向过程的设计思路就是首先分析问题的步骤:

1、开始游戏,
2、黑子先走,
3、绘制画面,
4、判断输赢,
5、轮到白子,
6、绘制画面,
7、判断输赢,
8、返回步骤2,
9、输出最后结果。

把上面每个步骤用分别的函数来实现,问题就解决了。

而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为:

1、黑白双方,这两方的行为是一模一样的,
2、棋盘系统,负责绘制画面,
3、规则系统,负责判定诸如犯规、输赢等。

第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。

可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。

功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。

到这里就可以很明显的看出面向对象和面向过程的区别所在了。  回复  更多评论   

# re: 学不可以已--我一年Java之路的回顾,反思以及展望 (转) 2006-12-16 18:28 ihaveonlybelief

看到你的文章觉得真的不错~
我也是信息管理专业的学生,现在开始学习java已经有二月了.
我觉得学习java真的需学习的东西太多了.不过学习他真的是件很快乐的事情.
有机会可以交流下吗?
呵呵  回复  更多评论   

只有注册用户登录后才能发表评论。