JetBrains用Kotlin布了一個(gè)大局
2011年,在經(jīng)過了一年精心開發(fā)之后,JetBrains發(fā)布了他們的JVM編程語(yǔ)言Kotlin。2016年2月15日,Kotlin 1.0發(fā)布,這是第一個(gè)正式穩(wěn)定版。在2017年5月的Google IO開發(fā)者大會(huì)上,谷歌宣布Android平臺(tái)正式支持Kotlin,Kotlin從此成為Android的一等開發(fā)語(yǔ)言。

Kotlin也被戲稱為Android上的Swift,并與Java之間展開了一場(chǎng)沒有硝煙的角逐戰(zhàn)。很多人認(rèn)為,JetBrains之所以推出Kotlin,主要是想開發(fā)出一門比Java更好的編程語(yǔ)言。因?yàn)樗麄冇X得Java難以為他們帶來更高的開發(fā)效率,Java既笨重又啰嗦,開發(fā)同一個(gè)功能通常需要寫更多的代碼。
有人說Kotlin可讀性比Java好,語(yǔ)法也比Java更勝一籌。但可讀性和語(yǔ)法體驗(yàn)都是很主觀的東西,我們又如何從客觀角度去衡量一門語(yǔ)言的“可讀性”呢?既然沒有人做過此類實(shí)驗(yàn),那么就沒有任何客觀的數(shù)據(jù)可以支撐這一觀點(diǎn)。而語(yǔ)法會(huì)影響可讀性的說法也是站不住腳的。相信每個(gè)人都學(xué)過幾門編程語(yǔ)言,在開始學(xué)習(xí)一門新語(yǔ)言時(shí),確實(shí)會(huì)有一段時(shí)間難以看懂代碼,但隨著閱讀代碼量的增加,逐漸熟悉了這門語(yǔ)言之后,就不會(huì)被語(yǔ)法方面的東西牽絆住了。即使學(xué)的是Lisp,一旦熟悉了它的語(yǔ)法,適應(yīng)了Lisp的括號(hào)之后,也就感覺不到它們的存在了。所以,Kotlin提供的語(yǔ)法糖對(duì)可讀性產(chǎn)生的影響也是微乎其微的。
相反,在閱讀了大量別人的代碼之后,我們似乎可以得出這樣的結(jié)論:如果開發(fā)人員可以使用某一門語(yǔ)言寫出可讀性很高的代碼,那么他們也完全可以使用其他語(yǔ)言寫出具備同樣可讀性的代碼。換句話說,代碼的可讀性和語(yǔ)言無(wú)關(guān),它完全取決于開發(fā)者的編碼能力和代碼閱讀者的理解能力。
現(xiàn)在讓我們回過頭來,思考一下JetBrains所說的要提高生產(chǎn)效率是為了什么?對(duì)于一家企業(yè)來說,提升生產(chǎn)效率當(dāng)然是為了節(jié)約成本,賺取更多的利潤(rùn)。JetBrains是一家非常成功的軟件公司,這一點(diǎn)是不可否認(rèn)的。但要說如此成功的一家公司居然要靠一門編程語(yǔ)言提升生產(chǎn)效率來提升競(jìng)爭(zhēng)力,那自然是說不過去的。更何況,他們從2011年開始就持續(xù)投入資源開發(fā)Kotlin,如此大費(fèi)周章,難道只是為了要開發(fā)一門看似會(huì)帶來更“高”生產(chǎn)力的編程語(yǔ)言?對(duì)于JetBrains這樣的公司來說,投入研發(fā)的資金動(dòng)不動(dòng)就要幾百上千萬(wàn)美元,員工薪水、市場(chǎng)推廣等方面的費(fèi)用都不是小數(shù)目。而且這么多年了,如果他們沒有給股東賺到錢,恐怕到現(xiàn)在已經(jīng)不復(fù)存在了。再則,Kotlin是不是實(shí)實(shí)在在給他們帶來了生產(chǎn)力的提升還是個(gè)很大的未知數(shù)。
JetBrains是一家靠出售開發(fā)工具為生的公司,在商言商,如果我們從他們的商業(yè)策略角度來分析問題,或許能夠找到更恰當(dāng)?shù)睦碛蓙斫忉尀槭裁碕etBrains要極力推廣Kotlin。
IDE是JetBrains最主要的產(chǎn)品線,而編程語(yǔ)言對(duì)IDE來說至關(guān)重要。但編程語(yǔ)言的商業(yè)化太難做,因?yàn)榍袚Q編程語(yǔ)言對(duì)于企業(yè)來說代價(jià)巨大,所以很難說服企業(yè)改用其他編程語(yǔ)言。從IDE廠商的角度來看,他們需要為支持的每一種語(yǔ)言開發(fā)工具?,F(xiàn)在的開發(fā)語(yǔ)言這么多,每個(gè)開發(fā)者和企業(yè)又都有自己的偏好,所以IDE廠商必須憋足了勁開發(fā)一大堆工具。對(duì)于JetBrains來說,最重要的是要想辦法把開發(fā)者籠絡(luò)到同一門易于維護(hù)的語(yǔ)言上,而最好維護(hù)的語(yǔ)言莫過于自家開發(fā)的語(yǔ)言了。
反過來說,IDE對(duì)于編程語(yǔ)言來說也是至關(guān)重要的。編程語(yǔ)言難以商業(yè)化,那么IDE呢?不同的IDE有不同的功能特性和外觀,開發(fā)者也會(huì)有自己的喜好,所以IDE也是難以互相替代的。不過相比編程語(yǔ)言,要切換IDE還是相對(duì)容易的。那些不愿意掏錢為個(gè)人項(xiàng)目購(gòu)買IntelliJ許可的開發(fā)者完全可以使用開源的IDE代替,比如Eclipse、Atom等等。所以說,JetBrains可能面臨流失用戶的風(fēng)險(xiǎn),因?yàn)橛脩粲刑嗫蛇x擇的IDE。不僅如此,如果出現(xiàn)了一門新語(yǔ)言,大家蜂擁而上,那么JetBrains能夠分到的市場(chǎng)份額可能更小了。所以,JetBrains要想在IDE大戰(zhàn)中保持市場(chǎng)份額,最重要的是不要讓開發(fā)者有機(jī)會(huì)切換到其他IDE,那怎樣才能做到這一點(diǎn)呢?答案就是把開發(fā)者牢牢綁死在自家的語(yǔ)言上。
除了以上兩點(diǎn),推廣Kotlin對(duì)JetBrains來說還有第三個(gè)好處,那就是順便提升他們的非IDE工具的市場(chǎng)份額。除了IDE產(chǎn)品,JetBrains還推出了持續(xù)集成服務(wù)器產(chǎn)品TeamCity和問題跟蹤系統(tǒng)YouTrack等。一般來說,使用了Kotlin和IntelliJ的用戶也很有可能會(huì)使用他們家的其他產(chǎn)品。
這樣看來,JetBrains所說的提升生產(chǎn)力只不過是個(gè)幌子,他們的終極目標(biāo)是鎖定用戶,牢牢地釘住市場(chǎng)份額。