不要和Java“結(jié)婚”
軟件大神Bill 聽說(shuō)張大胖要和女友Java舉辦婚禮,他非常吃驚,趕緊跑去阻止,可是為時(shí)已晚,張大胖已經(jīng)把戒指戴到了滿臉幸福的Java的手上。
Bill警告張大胖:“你的苦日子開始了!”
張大胖不以為然,他太喜歡Java了,喜歡Java那嚴(yán)謹(jǐn)?shù)恼Z(yǔ)法,優(yōu)美的Lambda表達(dá)式,漂亮的注解,無(wú)所不包的類庫(kù)。還有,一個(gè)簡(jiǎn)單的單例模式用Java都有七種寫法!這是其他語(yǔ)言根本無(wú)法比擬的!
他發(fā)誓以后只愛Java一個(gè)人,不僅愛她眾多的優(yōu)點(diǎn),也包容她各種各樣的缺點(diǎn)。
不僅愛Java,他還愛屋及烏,很喜歡和Java的七大姑八大姨打交道,像Spring了,MyBatis了,Tomcat了,Netty了, 都是他家里的??汀?/p>
張大胖用這種方式向Java媳婦表達(dá)自己的忠貞不渝,生是Java的人,死是Java的鬼。
他的Java媳婦也經(jīng)常給他灌迷魂湯:我們Java家族常年在TIOBE上排名第一,靜態(tài)類型,正統(tǒng)的面向?qū)ο缶幊陶Z(yǔ)言,后端開發(fā)、移動(dòng)開發(fā)、大數(shù)據(jù)開發(fā)的絕對(duì)統(tǒng)治者!
不僅如此,每當(dāng)張大胖流露出一點(diǎn)對(duì)其他語(yǔ)言的好感,Java都會(huì)對(duì)他毫不留情地予以打擊,直至他懸崖勒馬,回頭是岸。
有一次逛街,張大胖瞥了一眼迎面走過(guò)的Python,就被Java媳婦狠狠踹了一腳:一個(gè)動(dòng)態(tài)語(yǔ)言有什么可看的?! 你看看那強(qiáng)迫癥似的縮進(jìn),丑陋的self,性能大累贅GIL,怎么能和我相比?
張大胖怕回去跪搓板,趕緊附和:就是就是,雖說(shuō)都有字節(jié)碼,但是Python那虛擬機(jī)就是個(gè)玩具,完全不能和Java虛擬機(jī)相比。
早些年張大胖對(duì)Ruby頗有好感,覺得語(yǔ)法優(yōu)雅,元編程強(qiáng)大,至今家里還偷偷存放著給Ruby的幾封情書。
那一天安裝Visual Studio Code,張大胖不知道發(fā)了什么神經(jīng), 居然用Ruby而不是Java 寫了一行代碼:
print "Hello World";
很不幸,Java媳婦就在身后,雷霆震怒。
張大胖還想抵賴,紅著臉辯解說(shuō)這是Python代碼,結(jié)果被明察秋毫的Java媳婦當(dāng)場(chǎng)識(shí)破:“Python程序根本就不用分號(hào),Python3的print函數(shù)必須加括號(hào)才能調(diào)用,還有你這文件擴(kuò)展名明明是.rb還想抵賴......”
除了罰他用Java刷一百道LeetCode題之外,Java媳婦還翻箱倒柜徹底給家里消了毒,把C,C++, Python等各種代碼,包括那幾封情書都當(dāng)作垃圾掃地出門, 這讓張大胖傷感了好幾天。
不過(guò)Java媳婦對(duì)JavaScript網(wǎng)開一面,不知道是不是名稱中也帶個(gè)Java的緣故, Java媳婦寬宏大量地規(guī)定張大胖以后可以基于HTTP的RESTful的服務(wù)和JavaScript進(jìn)行書信往來(lái),書信的格式必須是JSON,必須交由她先審查再定奪張大胖能不能看。
后來(lái)Java覺得用JSON交談不妥,又升級(jí)為GraphQL, 張大胖真搞不懂她心里在想什么。
時(shí)間一天天地過(guò)去,張大胖掉進(jìn)了Java的溫柔陷阱,落入了Java織就的信息繭房。他覺得Java語(yǔ)言的一切都是好的。
張大胖無(wú)論寫什么程序都用Java。寫服務(wù)器端程序,肯定用Java, 寫桌面程序,還得用Java。就是寫個(gè)處理文件的小程序,也是Java,雖然用Python可能10行以內(nèi)就能搞定。
有一次,公司要開始一個(gè)新的項(xiàng)目,嘗試用Go語(yǔ)言的技術(shù)棧,根本不了解Go語(yǔ)言的張大胖極力反對(duì):用什么Go語(yǔ)言啊,Java多好,生態(tài)系統(tǒng)多成熟!
不僅如此,他還每天琢磨著去“統(tǒng)一”公司的編程語(yǔ)言 ,公司有個(gè)爬蟲程序,專門把競(jìng)爭(zhēng)對(duì)手網(wǎng)站上的數(shù)據(jù)給爬下來(lái),本來(lái)是用Python開發(fā)的,因?yàn)镻ython在這方面的工具非常多,開發(fā)很方便??墒菑埓笈钟幸惶炀尤挥肑ava給它重寫了,把經(jīng)理氣得夠嗆。
張大胖拒不承認(rèn)動(dòng)態(tài)語(yǔ)言在快速開發(fā)方面的優(yōu)勢(shì),看不到迅速完成一個(gè)系統(tǒng),推到市場(chǎng)上驗(yàn)證所產(chǎn)生的價(jià)值,他總是拿“動(dòng)態(tài)一時(shí)爽,重構(gòu)火葬場(chǎng)” 來(lái)攻擊Python,Ruby等動(dòng)態(tài)語(yǔ)言。他不停地上網(wǎng)和別人論戰(zhàn),維護(hù)Java的正統(tǒng)地位。
張大胖經(jīng)常聽到同事在討論新的技術(shù),比如火熱的Go語(yǔ)言的Goroutine,Erlang的Actor模型, 還有LISP的函數(shù)式和元編程,JavaScript的閉包,柯里化...... 每次張大胖都嗤之以鼻, 什么Goroutine,什么Actor,最有用的還是Java的線程!
慢慢地,大家不再搭理他,周末去喝酒也不帶著他了,可憐的張大胖被孤立了。
落寞的他回到家,打開《Java 4-ever》這部老電影開始復(fù)習(xí),他一邊喝著酒,一邊陷入了深深的沉思......
后記:
寫這篇小品文是因?yàn)槲铱吹接行┤颂V迷于一種語(yǔ)言,對(duì)別的語(yǔ)言根本看不上眼,不屑一顧,就以張大胖和Java結(jié)婚做了一個(gè)比喻,批駁一下?,F(xiàn)在這個(gè)世界上哪有無(wú)所不能的語(yǔ)言呢?每個(gè)語(yǔ)言都有自己的優(yōu)點(diǎn)和適用范圍,如果只是固守一個(gè)語(yǔ)言,不去看看外邊的美好世界,就太可惜了。ps: 《Java 4-ever》 是油管上一個(gè)非常搞笑的短片,點(diǎn)擊閱讀原文可以觀看。
【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】