经典Java EE企业应用实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

0.3 学习Java,应该如此疯狂

“如果要学会游泳,就一定要勇于下水!”不要以为有什么书可以让你一跃成为高手!不要以为有什么培训可以让你一跃成为高手!不要以为有什么老师可以让你一跃成为高手!武侠小说中的主人公偶然掉进一个山洞,某个前辈等在那里传他一甲子功力的事在编程世界并不存在!

下面是笔者在“疯狂Java实训营”中经常重复的几条原则,这些原则将会指导你更容易找到编程的感觉。

没有动手不读书

当你打算学习编程时,首先第一步就是要准备敲代码!当你看一本书时,看一篇技术文章时,一定要想着如何把书上、文章中的内容转变成程序代码。

在程序员的眼里,不管你的理论看起来多么光鲜,听起来多么美妙,但如果这些理论不能有效地转变为代码,那这个理论将没法在计算机内运行。

类似地,不管你看书看得多么心领神会,不管你心里多么自信地告诉自己:我懂了,我真的明白了!但如果你没有用代码把那些内容表现出来,那么你依然还不懂。

经常有学生跟笔者反映:老师啊,我听课完全可以听懂;你上课一边写代码,一边解释也很清楚,我也很容易听懂,但我自己写起来就很费劲。笔者总是苦口婆心地重复:听懂和能做之间还有很大的一段距离,而这段距离需要你自己努力去跨越。跨越这段距离的唯一方法就是:疯狂练习,疯狂coding。

你是程序员,不是打字员

有些人就想:既然你说要敲代码,那我就敲吧!我对着书或别人的代码一个字母、一个字母地输入,然后再运行。但这没有作用,除非你仅仅想练习打字速度!可惜你要做的是程序员,而不是打字员。

正确的方法是:学习者应该先认真阅读书中、文章中的代码,尽量去理解这个程序,然后在不再看书、文章的情形下独自编写这个程序。如果程序太长,一次阅读、理解有困难,可以将一个程序分为几段分别对待,但千万不要对着书、文章逐字、逐行地输入,这没有意义。

疯狂本质是享受

疯狂的感觉从哪里来呢?疯狂的感觉应该来自一行一行的代码编写和排错,应该来自海量的调试与优化中。可能有人觉得这种方式太痛苦了。但正如笔者在《疯狂Java讲义》前言中指出的:烈日下挥汗如雨地打球苦不苦?废寝忘食地玩游戏的人苦不苦?他们自然乐在其中!

如果你没有疯狂地写代码、疯狂地调试,你怎么知道那是一种痛苦,而不是一种享受呢?等你真正有了这种疯狂经历之后,你发现一个程序从无到有、从粗糙到精致地慢慢显现出来,而你就是这个程序的创造者,这个过程会带给你怎样的快乐啊。

除了需要这种疯狂地写代码、疯狂地调试之外,如果你需要提高,还应该阶段性地修改自己的代码,没有任何程序是完美的,除非它只是一个Hello World(专指学习编程的第一个程序)。每过一个阶段,当你再次回头去看你写过的程序时,你会发现有很多可以改进的地方。

当你对现有的程序不断地改进、不断地优化时,你会发现自己的技术功底也在不断地增加,这估计也就是孔子所说的“温故而知新”吧。

专注自己的选择,注重分享

经常有人今天在学C语言,过了几天听人家说Java更好,于是又开始学习Java了,过几天又转去学其他编程语言了,其实这样东挖一个坑、西刨一个洞的学习方式非常危险,最后可能投入了大量时间却什么都没学好。

其实学习是需要专注的,开始选择一门技术之后,就应该专注于这门技术,不要摇摆不定。

学习过程中总会不断地获得一些成绩,例如自己开发的一个小程序,自己有一点好的心得。记住把这些成绩记录下来,拿出来与他人分享;在分享过程中,既可能帮助他人,也可以让自己获得成功的喜悦,从而坚定自己的专注。

多交流技术,少参与争论

现在的网络非常发达,网路对学习编程有巨大的帮助,充分利用网络可以更快、更好地学习编程技术。利用互联网主要体现在两方面:

学习过程中遇到问题时可利用搜索引擎搜索相关问题的解决方法。

利用论坛、社区、即时通信工具与其他程序员交流。

利用网络交流时,一定要多参考他人编写的优秀代码;当你发现别人的代码写得更好时,你可以从模仿开始学习。其实模仿本身就是一种很好的学习方式,毕竟我们不是要求每个人都去发明、创造新东西,实际编程时靠的往往就是模仿。

利用网络上的资料时要记住:互联网上的信息是鱼龙混杂的,有对的,有错的——如果互联网上有一个人发表了一篇包含错误的文章,过不了几天这篇文章就会被许多网站转载,从而导致互联网上充满这样的错误信息。因此利用互联网上的信息时要加以分析。

当利用网络与其他人交流时要记住:多交流技术,少参与争论。互联网上有一种人,他们自己整天也不做什么事情,专门以攻击、评价他人来获得精神上的满足感。你写一篇文章,他们可以挖出一两句话加以奚落;你写一个程序,他们可以挑出一行代码加以嘲笑;很多人往往容易陷入与他们的争论中,其实这是完全徒劳的。

如果你只是想学习技术,记住不要和他们争论。你应该从那些纷繁、芜杂的信息中挑出技术信息,吸收有用的东西就可以了。如果看到有人奚落、嘲笑你或你的程序,忘记他!

拒绝迷信,拒绝牛人

曾经有个朋友这样评价国内互联网上的网友——“国内的网民大致可以分为两类:一类无限自卑,逢人就称牛人,动辄“跪求”XXX东西,全然不知自重,不知“男儿膝下有黄金”的古训;另一类无限自大,遇人、遇事直斥之垃圾,大致意思是普天之下,他们那个小圈子才最强。其实这两种人本质是一样的,无限自卑的人进入某个圈子,见过的人、事多一点之后往往就变成了无限自大的人。”这个说法有些极端,但也有一定的道理。因为这两类人笔者都见过不少。

实际上,这两类心态都不利于程序员的成长。对于程序员来说,应该用程序的眼光来看待问题,遇到问题时要自己多分析、多试验,而不是盲目迷信网站、论坛上所谓的牛人。

“牛人”说的难道一定是对的吗?姑且不论这个“牛人”是真是假,就当这个“牛人”真的很牛,他每天有这么多时间上网来仔细思考每个人说法,他自己没有职业吗?不需要上班吗?

在编程世界里,只有拒绝迷信,拒绝牛人才可以找到属于你自己的正确答案。当看到一个说法、一个观点之后,记得自己多写几个程序从多个角度来验证这个说法,验证这个观点;如果自己无法理解这些说法、观点(不管是谁提出来的)——那并不代表这个说法、观点就多么“牛”。也许那个提出这些说法、观点的人自己也没有搞清楚,自然解释得难以阅读。