网上看到有人问:自学javase也有段时间了,看过些基础视屏,但是现在自己还是什么都不会,一点方向也没有!之前发过贴也说过这个问题,很多前辈指导说去做小项目,可是自己在网上找的那些小项目,源码都看的稀里糊涂的!
以下是我的回复
从看到你的问题,我就在想怎么说明白这件事。
有的人真心想帮像你这样的人,
但并不知道怎么明白告诉你,给你指明白这条路。
像我这样的人都是第一天摸到电脑编程就兴奋得要死,
发现电脑能以另一种方法,
兴奋得每天都在期待学校电脑课到来(一周只有两个小时,我高中的时候)。
到底电脑编程有什么魅力?
当年高三学到“圆的计算公式”时我在想“电脑是怎么利用这个公式画圆的?”
当时学到两种方法:1.用“勾股定理”;2.用三角函数;
因为“勾股定理”容易理解,所以就先用它,但画出来的圆一点不好看。
只好用三角函数,结合圆的公式重新写一个,最终很完美的把圆画出来了。
那几天兴奋得睡不著觉。
电脑编程最美的地方就是“”,
把你想到的方法的答案快速地回复给你,
。
不只如此,
经过这么多年编程语言的演进,
使这个工具在具有逻辑性的同时,
提升利用数理逻辑解决问题的优美程度。
愈晚期发明的编程语言,
在这方面的改进愈明显。
因此“原则上”Java在这方面是胜过C和C++的(原则上哈!)
除非你要解决的问题非C/C++不能解决(比如对速度有很高要求,或者是系统底层编程),
否则应该尽量的选用较晚发明的编程语言(或者在这方面持续改进自己的语言,Java属于这一种)。
说到这里,
似乎仍然没有回答你的问题:学习Java的路该怎么走?
呃,其实说了,不知道你发现没有?
学习编程的关键点就在这里:
。
比如学习JavaSE、学习面向对象,
你真的学会了吗?到底掌握了多少?
你得反复用编程工具(比如Eclipse)编写简短的代码,
运行验证结果,
看看跟自己理解的有什么差异,
验证自己到底懂得多少,
验证自己懂的到底对不对。
只有验证自己确实学会了一些关键点,
才应该不断往更高深的部份学习下去。
你说“网上找的小项目的源码都看不懂”
其实,大部份别人写的源码我也看不懂。
非得“很痛苦而且很用力看”最终才能看懂。
学习编程的过程并不是看一些别人写的源码就能成长快速的。
要成长快速,正确的方法是先沉下心花几个小时把基本的语法看会,
然后在这个基础上问问自己,
以目前学会的,能出什么题给自己,
应用目前学会的怎么解决它?
怎么快速验证它真的被解决了?
还有没有更好的解法?
说说当年的一件事:
当年在学校电脑室,第一次接触多人共用的Unix环境,
虽然已学习DOS多年,
但面对Unix终端完全不知道自己要干什么?
怎么迈开学习Unix的第一步?
那时候我就像你现在一样迷茫。
直到有个学长告诉我:你可以写个程序,监看当前有谁登录系统。
当时我们Unix账号就是我们的学号,
我用Shell脚本写一个十多行的程序(花了我约3小时)在后台运行,
每当有人登录系统,我坐在电脑室最后一排,
立刻知道他/她是谁(用学号到学校发的通信录查询,就知道他/她的名字)
真是太有意思了。
那之后我一直不断的想:我还能用Shell脚本做什么?
每天给自己想一个题目,
然后去找书(那时候Unix只有英文书喔,百度还没出生)设法找到解法。
虽然啃英文书很痛苦,
但是跟找到解法解决想解决的问题并最终获得成就感比,
那种痛苦不算什么。
比如Unix环境中有电子邮件系统(OK,现在电子邮件没什么了不起,但那时候这东西刚出来),
我便想这电子邮件系统怎么把邮件从遥远的另一台电脑寄到这里的?
找了很多资料,都说用Shell脚本做不到,只有C能,
于是为了搞明白邮件系统是怎么实现的,
开始了学C的漫长过程。
现在我告诉你:Java能开发邮件系统,也能开发QQ系统,
你会不会想知道怎么做到的?