从开始专心学习Java到现在,已经7年了,非常幸运的,在这7年中,除了1年的“半工半读”和1年的.NET项目,累积有5年都是从事的Java为主的应用开发,应该说,Java伴随我走过了从入行到站稳脚跟最关键的几年。从某种意义上讲,我应该感谢Java。
然而,随着时间的推移,接触到的不同的东西越来越多,自己对不同问题的看法和解决问题的思路越来越成熟,Java虽然是全能型的语言,也变得越来越无法满足日常工作和娱乐的需要,在一些特定的场合,也越发别扭,有时我甚至会怀念学生时代的Pascal/Delphi和后来的C/C++。回过头去看自己,从刚入行时的Java fanboi,到现在这样一个pragmatist和purist的结合体,是多么有趣的转变。
在过去的2年多,除了Java和.NET,陆陆续续接触到并有过简单使用经历的编程语言,有bash、PL/SQL、JavaScript、PHP、Perl、Ruby/JRuby、Scala、Python/Jython、Groovy等等,不过都没有系统的学习过,基本就是拿来主义,什么好用用什么,解决手里的问题为主。
也许是工作性质的原因,日常要处理的非技术性任务越来越多,留给具体编程的时间现在一天比一天少,编程带来的乐趣和解决技术问题带来的快感,就显得十分珍贵。所以我下定决心一定要系统的学习1~2种和Java/.NET不同的编程语言。一开始这个选择并不容易,我曾经还
半调侃式的和一个朋友讲:“Python, Ruby, Scala, Groovy, 一个都不能少”,经过一段时间的权衡之后,还是比较自然的作出了最后的选择:Python和Groovy。
Python这个选择其实并不难,留意Python这门语言,其实说起来也有差不多3年了,它完全符合“和Java/.NET不同的编程语言”这个条件,而且应用面很广,也十分成熟,功能也非常强大,加上大量现成的类库,能够胜任很多不同类型的编程任务。基本上这是一个不用任何思想斗争的选择。
Groovy这个选择相对没有那么直接,至少在我真正用Groovy上手做一些东西之前,对它并没有特别的感觉,甚至质疑它存在的价值,因为有Jython和JRuby的选择,为什么一定要Groovy呢?到最近开始接触Groovy,才逐渐了解到它的出身(Groovy的作者受到Python的启发,不过后来Groovy发展的越来越接近Ruby),和它在“兼容”Java代码的前提下为Java语言带来的巨大的表达力提升。对于有Java基础的人而言,Groovy十分容易上手,而且可以帮助我们简化很多繁杂的任务,比如自动构建和自动化测试,而这正是我目前需要处理的。
最后简单说说其他几个落选的原因(除了时间有限之外):
bash - 目前掌握的基本够用,发现不够时,完全可以用Python代替。
PL/SQL - 基本很少使用了,偶尔需要维护,今后深入用的机会也不多。
JavaScript - 对“网页”版的编程语言可能有天生的偏见,尤其是作为Java fanboi,当然对它“盗用”Java这个名字是有意见的。
PHP - 用的机会很少,而且过于quick&dirty,不是我喜欢的风格。
Perl - 虽然功能强大,但是感觉语法有些terse,不是很适应,能处理的任务,基本上Python也可以。
Ruby - 语法和设计理念还是有一些认同,但是对Unicode的支持和部署环境的支持都还不是很让人信服,另外,拿孟岩的话说,Ruby是一门魔幻语言,我不喜欢过于魔幻的东西,而更习惯具体直接的代码。
Scala - 也是一门和Java平台关系密切的语言,不过有些“学院派”,函数式编程固然是亮点,但短期内看不到太多的学习价值。
所以,综上所述,最后再点一下题,08年秋季的学习计划是:系统学习Python和Groovy。