学习编程的路该怎么走?

网上看到有人问:自学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系统,

你会不会想知道怎么做到的?

学习编程的路该怎么走?