本節書摘來自異步社群出版社《程式員的呐喊》一書中的第1章,第1.3節,作者:【美】steve yegge ,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
程式員的呐喊
這是我第一篇比較出名的牢騷,是以印象很深。2005年年中的時候,我離開亞馬遜加入google,順便把一些内部分享的舊文章轉到了公共部落格上。12月的時候,這些文章通過reddit和hacker news的推薦慢慢獲得了一些關注——一下子我貼的每篇部落格都吸引了幾千人的閱讀量。
與此同時,當時我在google做一個很讨厭的java項目。這塊代碼我就是看不對眼。之前做過的幾個java項目都還可以忍受,但這個實在是設計過頭了。在這裡我就不點名了。不過代碼真的寫得很爛,它本身幾乎就是個玩笑。它采用的是那種java界很流行的代碼風格,追求組合性(composability)和不可變性(immutability)這兩種java都不怎麼支援的特性。更糟糕的是,這些還是java 5之前的代碼。
我感覺那支團隊非常愛自己的工作,因為他們不斷地制造這樣的代碼。等讀到我的解析,你就明白怎麼回事了。
不管這麼說,反正我是受夠了,每天晚上都和我朋友托德·斯塔姆夫(todd stumpf)發牢騷,他也在google上班。我一直想尋求某種方法來描繪這些代碼,讓團隊能像我一樣看到他們的代碼有多糟糕。
終于我想到了一個辦法,有一天晚上,我寫了一個諷刺性的寓言故事,啰裡啰唆地寫了很多不寫也不妨的解釋。發表後一下就炸鍋了,所有人都瘋了。當時大多數java程式員都極為震驚,好多人被沖昏了頭,連生氣都顧不上了。其他人則幸災樂禍地跟着起哄,完全沒意識到自己就是下一個。(我在接下來的幾年裡,幾乎把所有語言都涮了一遍。)
反正在我寫這篇東西的時候,都已經過去6年了,他們還是沒把lambda加進來。我覺得我锲而不舍的奚落多少還是有點用的,他們終于打算在 java 8 裡引入lambda了(假設這次不跳票——從曆史經驗來看并不樂觀)。java社群非常害怕這個已經存在于其他語言裡好幾十年的東西,這是對“未知”事物的恐懼,而這份壓力也迫使支援者們遲滞不前。
現在看起來java或許終于要有動詞了,和我寫這篇東西之間隔了整整7年。