编程语言到底如何才能学透彻,达登峰造极之境

最近,有的程序员去面试的时候,被问到是否学得“透彻”。透彻这个词其实很难去界定的,更没有一个统一的标准来衡量,到底要到一个什么程度才能算透彻?

我是java的程序猿,我也去问过别人如何才能学得透彻,也是很迷茫的。人家说什么要明白jvm的运行机制,要去查看jdk的源码。其实我不是很赞同他们的观点。要作为一名初级的java开发工程师,你需要做的就是完全熟悉jdk的常用api,数据库的基本操作,基本的效率常识问题等需要掌握,常用的框架需要熟悉,如:spring,struts2,hibernate,springmvc等;这些基本都是成为一个初级开发工程师必须掌握的知识。当你完成了上面所述,你自然的想去弄清楚jvm的运行机理,来提高自己代码的执行效率,去查看jdk中的源码来提高自己的编程能力,等等都是水到渠成的事情。没有编写几行代码就去研究什么源码啊,机理啊,效率啊,其实是出于下策的。

编程语言的学习是一个漫长的过程,欲速则不达,饭要一口一口吃,路要一步一步走,不能一步登天。你不能开始学java就直接想一遍学精。在这个过程中需要慢慢积累经验,把基础打扎实。不要认为写出了一个简单的小程序,就觉得自己已经学的很好了,这只不过是编程学习过程中的一个小小实践。

首先你得会用,囫囵吞枣式的学,然后就要想着要知其所以然了。多练习,然后多遇到困难再解决,深入了解各个java包,深入理解虚拟机的各种机制,知道作者这样设计java的优点,最好了解别的语言,如c++,以便与java作比较。

1、语法方面。了解所有语法,会简单使用。

2、语言暴露成面。开始略深入的了解常用的集合源码。了解源码,需要数据结构和部分算法支持。

3、搞定所谓的OOP。

4、框架设计方面。开始看一些框架源码,慢慢深入,开始了解设计模式技巧,其中设计模式和技巧已经几乎脱离了某种语言。

5、自己动手实现一些简单框架。

6、开始深入研究Java多线程机制 JVM啥的。开始完整的啃AQS系列。

7、开始理解JVM GC机制 ,研究学习相关原理。需要图论啥的支持。

8、下载OpenJDK看JVM源码,在C/C++成面理解/分析JVM的实现。

9、字节码,然后用Java和所学的编译原理,在Jvm上实现一门语言。

然后还有辅助的东西,就不说了,实在是太多了。总之,要学透彻,很难的,一般精通就已经是超神的境界了。涉及的东西也不仅仅是java本身内容,到后期更多的是编译原理,计算机系统原理,数学算法相关内容,设计模式技巧。然后天时地利人和都全了,才能行云流水一般的玩起来。

但是这样就透彻了嘛,你别问我,我也不知道。我也还在追求登峰造极的路上。这里的大神应该很多吧,大家共同努力!