網頁

2011年10月2日 星期日

小結 Java 開發學習所感之一

這篇主要是個人學習開發 Java 程式中的一些感想小結,不是也不應該成為尖銳批評與語言戰爭的新戰場。

我個人最早開始寫的語言是 C ,後來學了一陣子 C++ 。雖然將語言的學習階段定出量化標準似乎不當,但如果要取得標準,我的進展大概可歸為「正在學習使用 template 自動產生類別」的程度。學習的過程中我很認同 C++ 的某些設計,尤其是讓程設者可以在效能、機器底層與易用、安全與設計模式的高層觀點間取捨的特色,但我也認同有些程設強者討厭 C++ 複雜、難確定其行為與語法冗長等缺點。不過大致上我還頗欣賞這門當時所謂的主流語言。

但對於 Java ,那又是另一回事了。

我完全無法認同某些人所吹噓,Java 是 C++ 接棒人的說法。這兩門語言的設計思想與目標就我看來完全不一樣,其在程設市場中被使用的專案與推動軌跡也不相似;更不用說 Java 剛開始出現時,為人所詬病的效能問題。當 C 程設者已經在嘲笑 C++ 過於緩慢與臃腫時,Java 的出現使得 C++ 程式員得以站在同樣的高處。更不用說取消了指標,這對 C 與 C++ 程設者而言更是完全不可思議的。

當然後來的故事大家都知道。既然語言的設計目標完全不同,Java 以跨平台與「易用」征服了教學與商用市場的心。事實證明初學者寧願躲在神妙的全自動垃圾回收器與 reference 之後,也不願意弄髒自己的手去碰觸可怕的 Segementation Fault 。這對疲於應付作業與考試的老師而言當然是一大恩賜,對毫無意願與資源訓練新進人員的軟體公司更是萬能藥方。而對推廣 Java 的各大公司而言,如此商業性質的語言相關資源,從 JVM 到各種教材不啻為其行銷部隊開啟了一路狂飆的綠燈﹍﹍等等,我說了「商業性質的語言資源」嗎?

事實上就我的感覺,Java 語言資源的商業性質不只是單單 JDK 授權證的口水戰而已。對利用語言資源賺取利益的公司而言,最好的情況莫過於洗腦程設者「這門語言非常重要,攸關你們每個人將來的工作與人生幸福。但它如此優秀的性質代表你無法靠社群與自學的方式學好。忘了他們吧,只要購買某某商用 JVM 、商用編譯器、IDE 、商用解決方案與十幾本充斥 Buzz Word 的書,你也能成為 Java 大師!」

然後就變成我們今天這個樣子。就連最簡單的教學,以往只要 `vim foobar.cpp ; g++ ./foobar.cpp ; gdb ./a.out` 今天卻要等上數百 MB 的下載與數分鐘的時間等待第一個、往往是毫無用處的 IDE 「歡迎」介面開始。接著就像忘記程設者學習的是 Java 語言而不是 Photoshop 一樣,滑鼠與鍵盤忙碌著按照各樣指示打開各種視窗,或敲擊著連解釋也沒有的神秘字串,最後鏘鏘!印出了 「Hello, World」!連 CLASSPATH 與 PATH 都不需要知道,你已經學會了 Java!又或者是某個神秘的函式庫,在講解自己的 API 如何如何好用與威力強大,當程設者興奮的要將這個函式庫引入專案時,卻只見到第一句「如何將此函式庫與某某 IDE 作結合」...。IDE 往往成了我們的 Java 生命,泉源,愛人,甚至主子。沒有 IDE ,Java 程設者就像瞎眼的可憐人一樣站在黑暗中。更不用說如果沒有其他廠商大肆吹噓卻又複雜臃腫至極的各種技術,「一般的」Java 程設者要怎麼活在這殘酷的世界中。

事情是怎麼變成這樣子的?在我開始手動了解如何完全不靠 IDE 與其他輔助技術,僅僅依靠 `javac` 與 `java` 讓我的「Hello World」可以執行時,我思索著。很顯然不完全是 IDE 開發者的錯,也不是 Java 語言設計者,以及任何其他出於減輕自己與他人負擔,以至於設計出更多機制、結構與算法的人的錯。至少他們的用意原本都是讓已經熟知整套機制的程設者日子更好。或許問題是出在我們身上,我們這些已經過累、過煩、過於希望只要毫不思考地按下一個鍵,世界變得更好的程設者之過。我們在心中給魔鬼留地步,那些嘶吼著利益與詭詐的瑪門就爬了進來,污染一切,以至於教給更多新來者的只剩下知道按下 IDE 上的一個鍵,卻當世界崩潰時不知所措。那也許只是一個 BUG ,或是一個細微的調整,超出了一切現成打點好的解決方案之上,卻也暴露出了現有一切舒適的抽象層是如何不可靠的一面。

我希望我不要成為那樣的 Java 開發者。即使我對 Java 並無好感,但如果開發一個語言要被過多的技術綁手綁腳,實在過於悲哀。

沒有留言:

張貼留言