学习编程的路该怎么走?

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

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

OK,你是初学者,别选那么难的题目开始。

但绕来绕去说那么多,

其实我已经告诉你学习Java的路该怎么走了,

不知道你发现没有?

面对什么javase,javaee,swing,swt,SSH,.....

名词一大堆,东西一大堆,

谁都会迷茫的。

要学的东西如同大海啸,又高又大地在你面前向你涌来,

你怎么可能不手足无措?

一开始能力还很差,

只能解决简单的问题,

想想自己要从解决什么问题开始,是件超重要的事。

如果像我今天这样的能力,却想怎么开发出登月火箭,那就是犯傻了。

我甚至想都不会去想怎么开发出一架飞机,

或者怎么设计飞机的飞控系统,

因为我的能力离解决这个问题,相差太远。

你想学Java做什么?解决什么问题?

怎么给自己找到下一个问题?

从“怎么用几行Java就能享受著看到电脑解决你的问题并回复答案”开始,

一步一步的走出去。

渐渐地代码行多了,

就得想想怎么分配代码行到多个方法、多个类中、多个文件中,

渐渐地能力有所增长了,

才开始想除了标准JavaJDK外,还要学什么?

简单的说,下一步要学什么,

是跟“你想用Java来实现什么”相关的。

每个人都会跟你说要学javaee,SSH,swing,swt.....

虽然他们说的都没错,毕竟这些东西是时下最流行的,

但随便敲几个字告诉你要学这些东西,是不负责任的。

那些什么“语言不重要,思想才是重点”的话虽然是正确的,

但对于现在能力的你,这话就是屁话。

这世上多的是那些“随口说出正确的结论,但其实对我们一点帮助也没有”的人,

这些“只满足必要条件,不满足充分条件”的描述,

对学习东西没有太大的帮助。

就像看过《笑傲江湖》的人都知道“无招胜有招”是最高境界一样,

但如果你没先读过独孤九剑的总纲,

再学过破剑式、破刀式、破.....式,

并且有老师一点一点的跟你讲解剑理的重点,

并且跟田伯光、黑衣人等人练习过,

怎么达到“无招胜有招”的境界?

没有体会到剑理并加以实践,

“无招胜有招”就只能是街口流氓打架。

最后,要告诉你,这条路其实挺远挺不好走的,

你觉得你真的适合进入这个领域吗?

这一切是一点一点学会,一点一点进入的过程,

没有几年是不会有成绩的,

你真的适合以编程为职业吗?

你真得好好想想。

时间: 2024-10-09 01:14:03

学习编程的路该怎么走?的相关文章

学习编程的过程中可能会走哪些弯路?

整理自知乎问题:学习编程的过程中可能会走哪些弯路,有哪些经验可以参考? @Crossin 回头看学生时代,最大的弯路就是怕走弯路.想不走弯路. 纠结该学什么语言.该研究哪个方向.该做项目还是啃算法,生怕一失足成千古恨,踏上一条不归路. 很久之后才发现,与其纠结选择,不如找个点坚持下去.好比爬山,你在山脚下纠结该从哪条路上去,而实际上,每一条都能通往山顶,每一条都不会是笔直平坦的.你怕错过另一条路的风景踟蹰不前,却不知道只要登上山顶就可以一览众山小. 如果一定要说个经验教诲,那就是尽可能多地写代码

那些年,我们在学习编程的过程中可能会走的弯路!

学习编程可能没有捷径,但一定是有弯路的,按危害程度,依次为: 1.不上机. 2.死磕“经典”. 3.玩鄙视链. “不上机” 这个毛病我都不想多说了,野生程序员 - 收藏夹 - 知乎 里多个回答都已经说过很多遍了.不管你是看书还是看视频,正确的姿势都是左边翻开教科书,右边就同时打开电脑——把代码敲进去,把程序跑起来啊!在书上画叉叉圈圈有个毛用!? @姚冬 的说法我觉得特别到位:编程本质上是门手艺.三天不练手生,手艺是练出来的.你当然要看书,但绝对不是只看书就够了. 自己上机过个手,首先能发现问题,

初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)

初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像在给Qt做宣传,在主页上占了一栏的广告,只是,这时,我还没怎么刻意去留意这个陌生的字眼.在我大二上学期中下期时,即大概是2011年的12月,由于自己刚刚完成了汇编语言的入门学习,正要制订下一个学习目标,所以,又开始找起了资料,同时,也再次开始为自己的就业问题担心,于是,开始搜集一些招聘单位的信息,这时候,

转发---十大编程算法助程序员走上大神之路

十大编程算法助程序员走上大神之路 本文为转发,源地址:http://linux.cn/article-3613-1.html 算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and co

十大编程算法助程序员走上大神路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来. 快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 算法步骤: 1 从数列中挑出一个元素,称为 "

如何快而好的学习编程

作者:刘铁猛    编辑:张·布兰登   翻译:九幽科技 当我写这个话题的时候,我感觉我正在和整个世界对话,就像我在写我的第一个程序“Hello,World”.希望这个话题可以帮助那些想学编程的人(包括你自己)获得一个良好的开端. 关于我 我的名字叫刘铁猛,如果你愿意可以叫我蒂姆.当我在大学的时候,才开始学习计算机编程,在此之前,电脑对我来说就仅仅是一台打印机或者游戏机.但是,当我开始编程,三个因素使我在计算机领域中受益匪浅.分别是: 1.相当迅速地打字 2.知道一些磁盘操作系统命令,并且知道一

零基础如何学习编程

零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛--编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出.编程的入场入口只有一个,出场的出口却很多.自学编程的新人,有很大一部分卡在了入门上,对此,我想写下对编程入门的一些拙见,权当抛砖引玉,或对或错,还望同学们自己鉴定.1.零基础,打算自学编程,应具备哪些的知识?答:对于入门阶段,对知识水平的要求并不算高,或者说很低,

我是怎么学习编程的?

2014年11月14日 这是一个真实的故事,关于我自己的. 一个理智的生命个体是怎么一步步走向疯狂? 我穿着西装,坐在办公室里,脑子里有一个模糊的创业想法.然后,我决定学习编程. 我曾经无意中听到过几个人在那吹牛说自己怎么使用一种叫Ruby的语言轻松实现自动办公.我想"呵,Ruby".我回到家,谷歌Ruby.15秒之后,我随机选择了一个Ruby教程,开始学习. 一周以后,我参加人生中的第一次黑客聚会.在场的每个人都在讨论什么Scala,Clojure,Go.我想,他们学得还真是多.转身

编程之路漫漫,分享经验与你相伴

今天第一次上来博客园写写东西,之前在头条喜欢写一些杂七杂八的东西,但后来发现头条是一个鱼龙混杂的地方,什么新闻都有,要说发表技术的文章估计没有多少人看.毕竟在博客园大部分搜索的人都是一些有着相同梦想和需求的人,希望在这里可以认识更多大牛,也更希望我的分享可以给大家带来帮助,我今后会写一些关于自己学习C#语言.SQL数据库.数据结构及算法.JS.JQ等,以及开发ASP.NET程序过程中遇到的一些自认为觉得有必要留个底方便以后复习的东西,也欢迎各位读者前来交流学习,写的不好,请各位多多指教,人非圣贤