注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

你真的精通Java吗?  

2012-10-03 01:06:23|  分类: java技巧 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

简历和自我介绍上经常能够读到“精通Java”这样的话,有人和我说,精通Java的人太多了,精通Java已经不能算亮点、不能给自己加分了。可是事实真是这样吗?

对于语言的学习,我有一种观点,一是纵向,即要选择一门自己认为合适的语言学到有相当的深度。二在于横向,即要学习不同类型、不同历史和不同门派的语言:

  1. 既有底层的语言,也有高级语言;
  2. 接触一些动态语言、函数式语言;
  3. 了解一些不同语言的编程范型和编程方式,比如基于原型编程、面向切面编程、命令式编程等等;
  4. 最好能关注一门年纪尚浅,甚至小众的语言,了解一门语言的发展。

横向类比能够带来对一门语言的不同认识,但是,有广度而没有深度的专家是可笑的,深入地学习一门语言是不可缺少的。就以Java为例,依我看来,至少有这样几个递进的过程:

语法语义

这是最基础的部分,都说Java简单,语法容易学习,但是,真要细说起一些细节来,也真够我啰嗦了。我见过一些所谓的“精通Java”的人,他们却不知道strictfp关键字,说不清volatile和transient的作用,不知道怎么去定义一个注解(@interface)。你觉得这些要求苛刻吗?对这些以“精通”要求自己的人。

熟悉语言的应用范围

不同的语言有不同的擅长应用领域。就像想用Java去写操作系统或底层代码是多么不靠谱一样,在这个过程中应当熟悉语言的优势劣势,这里你自己会提出自己的见解。譬如Java最NB的地方在哪里?

  • 跨平台?可是很多语言都可以跨平台;
  • 开源?那开源的语言多了去了;
  • 高性能的虚拟机?包括先进的编译解释优化技术;
  • 还是那么多用Java实现的类库、框架呢?

把那些用Java实现的类库和框架脱离出Java语言本身来归类,未必是恰当的。熟悉Java就必须阅读许多类库和框架的源码。

学习语言的实现机制

就像精通Java的程序员需要了解Java虚拟机一样,也许不需要对虚拟机规范一清二楚,但是起码要知道CAFE BABY吧?起码要了解JIT的机制吧?起码要明白垃圾回收策略中的CMS吧?起码要能尝试自己编译一把JDK吧?起码要能去定位那些无响应的Java程序问题吧?在这个过程中,从了解一门语言,将逐渐进化到去了解一门语言所处的平台

整理语言发展的历史

为什么学习编程语言也要关注它的历史?因为去了解一门语言的发展历史(比如这篇关于Java多线程编程的历史),可以明白在这过程中碰了什么壁、犯过什么错、有哪些大的变更,学过别人家什么东西……这对于分析现今这门语言与其他语言的碰撞、展望一门语言的未来大有益处。在这个过程中,会不由自主地将其和不同时期的其他语言比较。如果给你一次重新设计这门语言的机会,你一定能够提出不少改善的意见来。

我从来不相信精通Java是一件容易实现的事情。有一股风潮,说搞底层研究的人看不起搞上层业务的人,写C的人认为写Java的人没水平,做后台的人觉得做前台的没技术含量……我说,何必呢?

技术无贵贱,只是专注的领域不同而已。

文章系本人原创,转载请注明作者和出处(http://www.raychase.net

  评论这张
 
阅读(901)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017