從開始專心學習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。