【关于Java学习的几点看法】

要成为JAVA程序员,用三个月的时间.
要成为J2EE高手,用一年的时间.
要成为JAVA技术应用专家,用三年的时间,其中两年去学习C/C++

现在我再次想说这样的话,如果你从来没有学过C/C++,那么我说一个JAVA技术,你可能永远也不可能真正的理解它的真正的意义:

方法参数中JAVA的对象是如何传递的?
真实的情况是传递"引用的值",如果你不了解C/C++,你是无法理解这句话的.你只能看别人的书上说什么你就记得什么,而实际如何,你根本不懂.

这就是为什么要理解底层架构,协议.不了解你可能在一个公司混得很好,一个学习三个月JSP的人混一个工作是完全可以的,整天做一些ctrl+c,ctrl+v的工作,可以满足一般的"开发",但你永远不会成为了一软件架构师,你无法知道100万用户和30用户的应用之间如何设计不同的架构,你会以为在你的PC机上写出一个BBS DEMO就可以拿去支持100万用户的应用.

记得有一句话叫"把一件事做到极致",从一个JAVA程序员,到现在写作业系统引导程序和驱动程序,我并不会做和个方面的开发工作,但我觉得这是必须的.只有了解每个bit的产生源泉,你才能对你的应用有100%的把握.


一个真正的软件人,不在于你掌握了什么技术,而在于你对软件的认识,和认识过程.
我把认识过程作为软件认识或者叫软件知识的一部份.是以我的经验来说,认识过程是一个非常重要的部分,或许它比软件知识更重要.一个软件人对软件认识的过程,主要反映在两个方面:

认识软件知识体系的方法.
认识软件知识体系的态度.

方法因人而异,合适你的方法就是最好的方法.而我有我自己的学习方法.书(15%)+狗哥(35%)+运行(50%),以我现在的水平,看一本专业的技术书,我仍然会把书中的内容在机器上运行以得到验证.并以此加深记忆,而不是象很多高手那样一周或十几天就能看完<<thinking in java>>那样厚的书(这里只是用它来比较厚度,不是为了推荐它).说实话我没有这种能力.而且,任何技术方面的书中如果有光盘,我首先会扔了它(当然以后可能会从某一地方找到),因为我需要从键盘上输入我想要验证的内容.
而"运行"并不是把书籍提供给你的例程运行一次,那需要对所能考虑到的所以情况反复测试,比如一个API,不同参数,不同环境,以及不同运行次数的性能,在多线程中的安全性和可并发性等等.

我的学习方法很笨,就是大量的上机实践.

对于学习的态度,这一点犹其重要.好学不叫学习态度,为了很多理由,我们都需要学习,谁都能做到.但是如何学习,学什么,真正能反映一个人的学习态度.

按你的计划,根据你的需要而学习,而不是流行什么就学习什么.这一点说起来轻松,可很少人做到.

我是完全从面象对象开始接触程序的.当我还不知道什么叫程序的时候,我听到有一种东西叫JAVA,然后我认识了它.当我用它写出一个还算可以的应用时,我认识到我需要深入到它的底层,我要了解JVM,然后我知道我的知识需要向底层递归,然后我从最最基础开始,数逻,作业系统,数据结构,编译原理,汇编,C/C++等这些看似无关的知识把我对JAVA的理解推向了一个超越的层次.今天,我仍然说我是一个JAVA程序员,我以它入门,又以它最擅长.但我更要说,没有汇编,C/C++这些基础,我不会成为一个真正的JAVA程序员.也不会让我轻松地成为一个C#程序员.所以基础的东西还是很重要的。

学习态度的另一个方面是敢于求真的勇气,在意别人不屑的东西.这一点以后再详说.

我相信你有兴趣看这个栏目,就应该有能力判断,什么是永恒的,什么是瞬夕的.当然你也不会因为我的几句话而改变你.我甚至不愿意对你有什么影响,即使我的观点是唯一正确的,我也无法证明它是正确的,何况它并不一定就是正确的!因为我的思想也在发展.

 

原文地址:https://www.cnblogs.com/ismdeep/p/2598906.html