編譯:伯樂在線/黃小非
谷歌大牛說:為什么 Kotlin 比你們用的那些垃圾語言都好
5月18日,安卓團(tuán)隊(duì)在谷歌 I/O 2017 大會(huì)上宣布 Kotlin 成為官方頭等支持語言。這條爆炸性資訊在當(dāng)天就是 Hacker News 首頁熱門討論。就在同一天,谷歌技術(shù)大牛 Steve Yegge 也發(fā)了一篇關(guān)于 Kotlin 的使用體會(huì)總結(jié)文章,同樣也在首頁熱門,并引發(fā) 200+ 討論。
(Steve Yegge )
為什么說 Kotlin 比你們用的那些垃圾語言都好
哈,這個(gè)標(biāo)題黨的題目讓你點(diǎn)進(jìn)來看了吧。不要奇怪,現(xiàn)在標(biāo)題黨在網(wǎng)上很普遍的。而且這篇文章給出的回答,肯定能震撼到你。
說真的,其實(shí)我不想去攻擊你們的語言信仰……至少不會(huì)“大大地”想。畢竟你喜歡的語言大放異彩的時(shí)期,可能要追溯到冰川時(shí)代了,對(duì)不?如果你喜歡的語言到今天還沒有死,那只能說明這門語言在逐漸地改進(jìn)和更新,保持與時(shí)俱進(jìn)。
但改進(jìn)的速度呢?好吧……假設(shè)你現(xiàn)在用的語言碰巧是 Java,并且你也沉溺于 Java 曾經(jīng)是一門非常優(yōu)秀的語言的想法,那么你就完蛋了。而且是早就完蛋了。盡管人類都不太喜歡思考終極命運(yùn)問題,但是相比于在 20 多年前剛剛問世,Java 8 僅僅是做了部分語言特性的替換,對(duì)此你禁不住要想:“我真的要和這種語言來共度過的余生么?還是說 Java 也就只能這樣了?”
因?yàn)榻K于要開始做 Android 開發(fā)了,我把各種老舊的語言問題又過了一遍。我寫過一個(gè)老游戲 Wyvern,這個(gè)游戲已經(jīng)有一個(gè) iOS 版本了,最近我決定再搞一個(gè) Android 版本。我從來沒料到計(jì)算機(jī)語言會(huì)折騰到讓我“思考人生”(例如“我這是他娘的在浪費(fèi)生命么?”)如果你寫過 Android 程序的話,你就知道在 Android 領(lǐng)域,語言的問題是會(huì)讓你相當(dāng)難熬的。
我第一次嘗試寫 Android 程序是在去年夏天,我的個(gè)老天爺,那感覺簡(jiǎn)直糟透了。其實(shí)是有人警告過我的。他們都說:“那些 API 可是很難搞啊?!倍覅s不聽勸。一意孤行。
我想:這些玩意兒能糟糕到哪兒去呢?反正不就是 Java 么?
歷史代碼的災(zāi)難
真是很不走運(yùn)——因?yàn)楹軓?fù)雜的歷史原因,并且也沒人在意——造成 Android 的核心 API 實(shí)在是糟糕透頂。我是說:真的很糟,真的很糟,真的很糟。你只能關(guān)掉參考書,深呼吸,然后出去猛喝咖啡來壓壓驚。人們之前給我的告誡看來是完全正確的。
Android API 庫就是一個(gè)百寶箱。很多 API 真的是非常好用。我可以說,很多在 iOS 開發(fā)里非常難搞的事情在 Android 里面卻很容易。Product flavors、Downloads 服務(wù)、findViewById() 方法、Preferences activity 等等,這些都是很好的例子。有太多 Android 里面有的東西在 iOS 里面是誒有的,所以在 iOS 里面你總能看到:開發(fā)者自己實(shí)現(xiàn)的惡心的和優(yōu)雅的應(yīng)用庫并存。
但是!注意左邊是一個(gè)大寫加粗的但是!在寫 Android 程序的時(shí)候,人們只關(guān)注那些不好的 API,就像你開車時(shí)候只會(huì)數(shù)路上遇到了幾個(gè)紅燈一樣,綠燈的數(shù)量是沒人關(guān)心的。因?yàn)槿藗冎粫?huì)通過紅燈的數(shù)量來評(píng)價(jià)路途是否通順。
Android 確實(shí)有幾個(gè)很糟糕的“紅燈”API。例如 Fragments,這就是在 Andoird “紅燈” API 中的招牌 API。這個(gè) API 的整個(gè)生命周期的糟糕程度達(dá)到了令人發(fā)指的地步,好吧其實(shí) Activities 和 Fragments 都是如此。說句不中聽的,iOS 反而卻沒有這么糟糕的API。去年夏天我試了試這些API,它們是如此之糟糕以至于我當(dāng)時(shí)就放棄了。我算是徹底服了。去它的,我還是以后找個(gè)人來幫我寫這些程序吧。
接下來的一年半,我就沒再碰過 Android 編程。
來自俄羅斯的救星
我一直聽說,有一種新語言叫做 Kotlin,可以用來寫基于 JVM 或者 Android 程序。發(fā)明這種語言的不是別國,正是戰(zhàn)斗的民族俄羅斯。更具體一點(diǎn)兒,它是由 JetBrains 開發(fā)。JetBrains 可是世界知名的 IDE 開發(fā)商,代表作是 Intellij IDEA,還有他們那可愛而且大名鼎鼎的橘色,綠色,紫色和黑色混合的暗色“Darcula”主題。
圖:一個(gè)千年老妖按捺不住對(duì) Java 8 的興奮
那么為什么要給這種語言起名叫 Kotlin 呢?好吧,有一種說法是因?yàn)?Java 的第一個(gè)字母是“J”,而 Kotlin 則用了Java 的下一個(gè)字母“K”作為開頭。除此之外,有人還猜想(這種猜想可能來自加州大學(xué)伯克利分校),“Kotlin”這個(gè)名字的靈感還來源于“克里姆林宮”,“赫魯曉夫”以及“克格勃”。這些都是前蘇聯(lián)的驕傲,所以他們就用了一個(gè)前蘇聯(lián)軍事基地的名字“Kotlin”來命名這種語言??傊@個(gè)名字不錯(cuò),而且你會(huì)習(xí)慣它的。
伯樂在線補(bǔ)充:Steve Yegge 在前文關(guān)于 Kotlin 的名字來源,應(yīng)該錯(cuò)了。在他自己原文評(píng)論中,也有網(wǎng)友指出了。
正確的應(yīng)該是:① JetBrains 是一家注冊(cè)地在捷克布拉格的公司,在全球共有 6 個(gè)辦公點(diǎn):布拉格、圣彼得堡、莫斯科、波士頓、慕尼黑和新西伯利亞。但主要管理層和開發(fā)者是在圣彼得堡。② 芬蘭灣中有個(gè)島就是「Kotlin/科特林」,在圣彼得堡以西 32 公里。
我發(fā)現(xiàn)去年業(yè)界關(guān)于 Kotlin 只是有不少“嘀咕(buzz)”。注意,只是“嘀咕”,不是天花亂墜地吹牛宣傳。人們只是低調(diào)地“嘀咕”著。好吧,總之,我當(dāng)時(shí)看了一下,然后就覺得這個(gè)語言和我過去 15 年看過的 50 ~ 100 種計(jì)算機(jī)語言一樣,這也是一門可以替代 Java 的語言,當(dāng)然,我認(rèn)為任何理性的語言都能替代 Java。
對(duì) Kotlin 的第一印象
我第一次看到 Kotlin 的時(shí)候,真心覺得這種語言不可能在現(xiàn)實(shí)生活中用到,真的是一點(diǎn)可能性都沒有。其實(shí)我也就是走馬觀花。我的第一印象?這個(gè)語言也沒什么大問題。它很簡(jiǎn)潔,也具有先進(jìn)的特性。如果說它時(shí)髦也行,因?yàn)樗鼛缀跄依擞?jì)算機(jī)語言設(shè)計(jì)上的所有最新潮流。不過這也沒什么大不了,因?yàn)楹芏嗾Z言也都滿足這一點(diǎn)。比如,Rust。Rust 也是一門健壯的,名字起得很好的,但是沒什么人用的語言。
Kotlin 給我的一種奇怪的感覺是“似曾相識(shí)”,后來我才反應(yīng)過來,原來這是因?yàn)樗?Swift 很像。我之所以沒有馬上反應(yīng)過來,是因?yàn)槲业?iOS 程序因?yàn)闅v史代碼的原因不得不用 Objective-C 而不是 Swift 來寫。當(dāng)然現(xiàn)在我也弄明白了:其實(shí) Kotlin 的歷史比 Swift 要悠久幾年,所以正確的說法應(yīng)該是:Swift 和 Kotlin 很像。
不過即便如此我當(dāng)時(shí)也沒準(zhǔn)備用這種語言干活。Kotlin 對(duì)我來說確實(shí)是一種語法優(yōu)雅的語言,但是我覺得我對(duì)這門語言還沒有掌握到足夠的程度,以至于讓我可以用它來應(yīng)付殘酷的現(xiàn)實(shí)工作。
從 Java 叛逃到 Kotlin
我不太記得我是具體怎么愛上 Kotlin 的了。但是我敢肯定的是這絕對(duì)不是有意為之。
我努力回憶了一下,事情是這樣的,我做的那個(gè)游戲的玩家跟我說了好久,讓我開發(fā)一個(gè) Android 版本。這個(gè)游戲是 12 月份在 Apple Store 上架的,然后幾周之內(nèi),大量粉絲就跟我說,他們是 Andorid 用戶,所以沒法玩到這個(gè)游戲。所以,盡管我已經(jīng)“發(fā)誓”再也不碰Android 編程了,但是用戶就是上帝,所以我又開始嘗試了。不過這一次要換個(gè)玩兒法——不能再把胃口壞在 Android 的 Java 語言上了。我需要有個(gè)現(xiàn)成的框架,或者什么類似的東西,來讓工作變得簡(jiǎn)單一點(diǎn)兒。
在 1 月中旬,我做了一個(gè)粗略評(píng)估,然后就決定用 Kotlin 來開發(fā)了,Kotlin 當(dāng)時(shí)可同時(shí)支持 Dalvik 和 Art 兩種 Android 虛擬機(jī)。我覺得我的評(píng)估是基于以下幾個(gè)原因:
Kotlin 已經(jīng)小有名氣;
當(dāng)時(shí)我寫 iOS 版的時(shí)候就想用 Swift(但是沒用成);
Kotlin有一種挺不錯(cuò)的 Android DSL 叫做 Anko,這勾起了我的興趣,雖然最后我并沒有真的用到它。
所以我就用 Kotlin 開始做了。在接下來的 4-5 周內(nèi),我用 Kotlin 重寫了游戲的服務(wù)平臺(tái)。要知道這個(gè)平臺(tái)之前已經(jīng)有 20 多年歷史了。用了一個(gè)月的 Kotlin,我就被完全征服了。我不是要說 Scala 或者其他語言的壞話,但是對(duì)我這種普通碼農(nóng)來說,Koltin 是完美的。我的要求不高,給口飯吃就行,知道不?Scala 固然很好,但是它好得過頭了,就像牛蛙\牛腦\松露蝸牛這些高檔菜那么好。要知道我就是個(gè)藍(lán)領(lǐng),Clojure、Scala 這類的語言對(duì)我來說太高大上了。
我大約花了 3 天時(shí)間來學(xué)習(xí) Kotlin 的各種語法,然后就開始正式編程了,雖然我還是很不熟練,但是我知道這種語言和 IDE 工具足以讓我解決各種麻煩。
當(dāng)我對(duì)這種語言稍微熟悉了一些以后,我就知道,我應(yīng)該不會(huì)再去愛上另外一種語言了,因?yàn)?Kotlin 實(shí)在是太迷人了。你在代碼寫出來的東西讓你覺得很酷。當(dāng)然我以前用其他的語言編程的時(shí)候也體驗(yàn)過類似的感覺,但是那些語言的學(xué)習(xí)曲線一般都非常陡峭。Kotlin呢,它就是大救星:當(dāng) Java 程序員為了 Java 8 弄出來的一大堆新概念撓頭的時(shí)候,Kotlin 出現(xiàn)了。Kotlin 能實(shí)現(xiàn) Java 8 的各種新特性,并且通過對(duì) coroutines 的支持,其實(shí)能實(shí)現(xiàn)更強(qiáng)大的功能,而且語法表現(xiàn)力更簡(jiǎn)潔。Java 8 確實(shí)也能表達(dá)很有意思的邏輯,但是很繁瑣,感覺就像讓你說話之前要先給你嘴里塞沙子。
我想 Kotlin 上手很容易的原因太顯而易見了,要?dú)w功于它的 IDE 支持。現(xiàn)在幾乎所有的 JVM 語言或者 Android 語言的 IDE 支持都是由社區(qū)的幾個(gè)志愿者在維護(hù)(當(dāng)然 Java 除外)。而 Kotlin 則是來自世界級(jí)的 IDE 廠商(Jetbrains),所以 Kotlin 打一開始就是自帶 IDE 支持的。有多少語言能做到從發(fā)明伊始就能有 IDE 支持呢?編程語言的進(jìn)化歷程一般做不到這一點(diǎn)。況且有的編程語言從一開始就是要避開 IDE 這個(gè)因素的(Hi!Rob)另外一個(gè)能一開始就做到 IDE 支持的語言就是 C#,當(dāng)然 C# 毫無疑問是全世界最好的編程語言之一。
伯樂在線/程序員的那些事補(bǔ)注:上面這段中的 Rob,應(yīng)該是指 Go 語言的發(fā)明者 Rob Pike,作者在這里也許是暗諷 Go 語言從發(fā)明到現(xiàn)在都沒有一個(gè)靠譜的 IDE 支持吧。
作為一個(gè)自帶 IDE 支持的語言,你在 Kotlin buffer 敲代碼的時(shí)候,打字基本對(duì)就可以了。IDE 會(huì)幫你補(bǔ)全你沒寫完的部分。你知道嗎,你甚至可以把Java代碼復(fù)制到IDE里面,然后 IDE 會(huì)幫你自動(dòng)轉(zhuǎn)換成Kotlin代碼。如果你覺得 Java 的 IDE 都還不錯(cuò),那么我可以很榮幸地告訴你,Kotlin IDE 會(huì)把這種“不錯(cuò)”推進(jìn)到前所未有的地步。甚至有一個(gè)前微軟工程師跟我說:“我本以為微軟的 Visual Studio 是 IDE 界的標(biāo)桿,是不可超越的。但是我覺得 IntelliJ IDEA 的確要更好。”在我看來,因?yàn)槲覍?duì) Visual Studio 不熟悉,所以我在這里只是引用他說的話。不過我認(rèn)為 IntelliJ IDEA 至少和 VS 是同等水平。
誠然,在現(xiàn)實(shí)工作中我還是要經(jīng)常切換到 Emacs 的。IntelliJ 在你打字很快的時(shí)候還是有點(diǎn)兒反應(yīng)不過來。如果你打字總是只打一半兒的話,那么自動(dòng)補(bǔ)全動(dòng)能的運(yùn)行壓力還是很大。況且對(duì)純文本的處理也很糟糕,這是所有 IDE 的通病。所以 IDE 和 Emacs 你都是需要用到的。不幸的是,目前 Emcacs 對(duì) Kotlin 的支持現(xiàn)在也就那么回事兒,不過相信以后會(huì)越來越好。我現(xiàn)在反正就是在 Emacs 和 IntelliJ 之間來回切換。目前還算是 OK。
就是這樣了。我曾經(jīng)花了大約 10 年的時(shí)間,來找一種語言來取代 Java。我真的找得很努力很辛苦。諷刺的是,在我放棄了以后,這種東西居然出來了。去看看吧。Kudos 對(duì) JetBrains 來說,是一個(gè)驚艷的成就。
Android:Kotlin 的殺手锏
這年頭新生編程語言幾乎很難產(chǎn)生什么巨大影響力。不是說現(xiàn)在沒有新語言產(chǎn)生了,相反是每年都有質(zhì)量不錯(cuò)的新語言產(chǎn)生,但是然并卵,沒人用!要給“不可能”劃定界限很難。但是計(jì)算機(jī)語言的市場(chǎng)已經(jīng)非常飽和了。如果要讓一個(gè)新的語言能夠大火(而且這個(gè)規(guī)律在過去 10 到 20 年都成立),那么這個(gè)語言就必須有一個(gè)“殺手級(jí)”的應(yīng)用。這門語言需要綁定一個(gè)平臺(tái),讓大家都非常迫切地區(qū)使用這個(gè)平臺(tái),這才能促進(jìn)大家學(xué)習(xí)這門語言以便在這個(gè)平臺(tái)上編程。
就目前看來,我們上面所說的殺手級(jí)應(yīng)用——也就是我們上面扯了這么多的東西——卻是 Android 惡心的 API。每當(dāng)你順著 Android 路線往下走,一遇到 API 就會(huì)卡殼,這只會(huì)讓你去詛咒 Android 這個(gè)平臺(tái)。Android 不論有多少優(yōu)秀的 API 都不管用,重要的是,Android 糟糕的 API 太多了,所以你不得不停下來去找”現(xiàn)成”的辦法(solution)。
不過兄弟,Android 里面解決問題的“現(xiàn)成辦法”可是不少。對(duì)于新手來說,有一大堆 Java annotation processors可用,這就為語言的問題埋下伏筆。更不要提一堆迷你的框架(比如 Lyft 的 Scoop)。還有那些和 Android(Java)完全獨(dú)立的框架:React Native、Cordova、Xamarin、Flutter等等。
如果以上說的技術(shù)你都不喜歡,那么你還可以從語言的角度來解決問題。當(dāng)然,那些完全獨(dú)立的框架是基于特定語言的,而并不是Java。
Kotlin 的競(jìng)爭(zhēng)優(yōu)勢(shì)在于它并不是完全隔離于 Java 語言。它基本上是 100% 可與 Java 相互翻譯轉(zhuǎn)換的。這很像C++ 與 C 的關(guān)系一樣(但它們做不到 100% )。Kotlin 也是在不斷進(jìn)化的。所以你可以直接把你寫的 Kotlin 代碼扔到 Android 工程中,連目錄都不用改,然后程序就能正常運(yùn)行了,方便得眼睛都不用眨一下。
其他種類的 Android 平臺(tái)都傾向于迫使你去學(xué)習(xí)一種全新的語言以及對(duì)應(yīng)的平臺(tái),其編程范式,理念和特性都各不相同。Kotlin 則是讓你直接寫出 Android 可運(yùn)行的類,就跟其他 Android 程序員用 Java 寫出來的一樣。其實(shí)其底層的 API 都是一樣的,但是 Kotlin 組織得要好很多。
還記得我去年夏天把 Android 編程書扔了然后再也不打算看了么?,F(xiàn)在 Kotlin 則讓我感覺:Android 編程是快樂的?我甚至覺得可能 Android 那些糟糕的 API 很可能并不是那么糟,只是 Java 把它搞得太惡心了而已。
Kotlin 致力于讓大家繞過 Android API 那些惡心的東西,并且能讓你充分發(fā)揮你的經(jīng)驗(yàn),這一點(diǎn)甚至比 iOS 做得還要好。好吧,至少來說比 Objective-C 做得好,因?yàn)槲矣X得 Swift 肯定也不會(huì)差。知道為什么嗎?因?yàn)?br>
Swift 和 Kotlin 很像啊。
我特別喜歡 Kotlin 的地方有哪些?
嗯,這個(gè)話題其實(shí)要細(xì)說就很大了,我覺得我最好再開一篇文章來寫這個(gè)。這里我就提一下那些高級(jí)(high-level)且共性的點(diǎn)。
Kotlin 很像 Java。它長得不像 Clojure 或者 Scala 那么奇怪(承認(rèn)現(xiàn)實(shí)把,這兩種語言就是挺奇怪的)。所以你學(xué) Kotlin 應(yīng)該很快。這門語言顯然就是寫給 Java 開發(fā)者來用的。
它比 Java 更安全。Java 很多需要 annotation processors 來做的事情在 Kotlin 里則是內(nèi)置的,例如 overriding,nullability等等。而且 Kotlin 對(duì)數(shù)值轉(zhuǎn)換的規(guī)則也更安全,雖然我不太喜歡 Kotlin 的處理方式,但是我還是很感謝這門語言強(qiáng)制我去思考我的數(shù)值表現(xiàn)形式。
Kotlin 和 Java 是可以互譯的。真的是指無縫互譯。我見過很多 JVM 語言最后掛掉,就是因?yàn)槠洳恢С肿宇惱^承機(jī)制。我不知道什么時(shí)候就會(huì)用到靜態(tài)內(nèi)部類,非靜態(tài)內(nèi)部類,或者什么破玩意兒類。Kotlin 在設(shè)計(jì)時(shí)就把和Java互譯的屬性放在第一位,也就是說,把 Java 翻譯到 Kotlin 可以逐漸進(jìn)行,一次可以直接轉(zhuǎn)換一個(gè)文件。
Kotlin 很簡(jiǎn)潔。你要知道我也算是個(gè)高爾夫球手,所以我實(shí)話實(shí)說。如果在一切都相同的情況下,我更喜歡短的程序,只要它寫的邏輯清楚。Kotlin 對(duì)我來說就像是打了一輪好局。平均下來我發(fā)現(xiàn) Kotlin 的代碼長度比相同邏輯的 Jython 代碼短了 5%-10%(這可是我用某種“黃金標(biāo)準(zhǔn)”測(cè)出來的),而且還能保證程序的可讀性和類型安全。
Kotlin 更貼近實(shí)際。Kotlin 支持在一個(gè)文件里定義多個(gè)類,支持一等方法,操作符重載,擴(kuò)展方法,類型別名,字符串模板,還有一堆看上去沒什么新意的語言特性它都支持。而我就是不明白為什么 Java 什么都不支持,連人們需要的語言特性它都不做。
Kotlin 進(jìn)化很快。例如剛剛宣布啟動(dòng)的對(duì) coroutine 的支持,將會(huì)成為提供 asyn/await, geneator 以及所有其他無鎖并發(fā)特性的基礎(chǔ)設(shè)施。
Kotlin 很擅長“拿來主義”。Kotlin 經(jīng)常從其他的計(jì)算機(jī)語言設(shè)計(jì)中抄點(diǎn)子,并且也毫不避諱。他們說:“我們很喜歡 C# 的處理方式,所以我們就自己照著擼了一個(gè)?!?/p>
Kotlin 支持 DSL。DSL 不到深思熟慮萬不得已的話千萬不要引入,但是不得不承認(rèn) DSL 威力巨大。例如你看 Gradle 的 DSL 和 Maven 比,在典型的 Maven 項(xiàng)目里,配置代碼肯定要超過上千行。所以 Kotlin 是來給你降工作壓力的。
Kotlin 的 IDE 是在是太棒了。剛才不久我才在 Emacs 里寫程序文件,結(jié)果 Emacs 報(bào)了一對(duì)錯(cuò)。而我把同樣的代碼拷貝到 IntelliJ 里面,然后按 Alt-Enter 逐一自動(dòng)修復(fù)了 50 多條,然后所有的錯(cuò)誤就都搞定了。這真是幫了大忙啊。
Kotlin 很有趣。我跟你們說,Kotlin 就是有趣。也許這是我發(fā)自潛意識(shí)地在做廣告。Kolint 的關(guān)鍵字和方法名都很有意思。Kotlin 把我從一個(gè)只會(huì)死編程的碼農(nóng)轉(zhuǎn)變?yōu)榱艘粋€(gè)計(jì)算機(jī)語言的愛好者。
總之,你就這么想:我收拾東西搬家,然后碰到了鄰居 Kotlin。我之前也算見過的一堆計(jì)算機(jī)語言,但是只有 Kotlin,能夠讓我在那么短的時(shí)間內(nèi)重寫我的游戲服務(wù)器代碼。而我現(xiàn)在則是在用 Kotlin 重寫我之前寫過的一切。
我也知道還有好多其他的程序員也對(duì) Kotlin 感覺非常好,打算成為 Kotlin 程序員。其中大部分的人應(yīng)該在 1-2 年之內(nèi)水平就能超過我了。我們私下里談?wù)撨^,互相都說“Kotlin 讓編程感覺美好的感覺又回來了?!边€不錯(cuò),再我們尚未對(duì)編程全部失去興趣之前,Kotlin 來了。就仿佛你只要把語言的語法學(xué)會(huì)了。這回把你帶回到那種第一次學(xué)編程的感覺,無論寫什么都覺得自己很牛逼。
再一次,向 JetBrains 致敬。他們對(duì)計(jì)算機(jī)語言做出了巨大的貢獻(xiàn)!我脫帽致敬。
那么 Kotlin 比你用的任何其他編程語言都好嗎?我想對(duì)我來說是的。因?yàn)椋绻闩銮墒窃谟?Java 的話。如果你一整天就是泡在椅子面前寫 Java,那么你會(huì)發(fā)現(xiàn) Kotlin 簡(jiǎn)直就是一股清流。所以也讓我知道你們是怎么想的吧。
免責(zé)聲明:本文只是闡述我個(gè)人對(duì) Android 開發(fā)的觀點(diǎn),并不代表我的雇主(谷歌)或者 JetBrains 的觀點(diǎn)。
伯樂在線/程序員的那些事 摘錄原文的一些評(píng)論:
Igor Tovstopyat-Nelip
好文章!
JetBrains 不在捷克。雖然它是在(捷克)布拉格成立的,但主要在圣彼得堡。他們很多管理層和開發(fā)者都是俄羅斯人,很多是從圣彼得堡大學(xué)畢業(yè)的 。
關(guān)于取名,Java 語言是出自印尼群島中的 Java 島。Kotlin 是芬蘭灣中的一座島,離圣彼得堡很近。彼得大帝在 18 世紀(jì)早期從瑞典那里搶過了圣彼得堡。此后,一直是俄國波羅的海艦隊(duì)的海軍基地。圣彼得堡有北國風(fēng)光之美,海軍神廟(Naval Temple)令人印象深刻。
我們公司(位于亞特蘭大)也試過多種 JVM 語言,Java 是首先?,F(xiàn)在我們更對(duì) Kotlin 感興趣了。大家都非常喜歡。并且 Kotlin 和 Java 是無縫互通的。
Kotlin 也能編譯成 JS,并且值得一提的是,Kotlin Native 也處于火熱發(fā)展中,看起來會(huì)是 Rust 的強(qiáng)勁對(duì)手。
匿名網(wǎng)友:
我過去也一起用過 Eamcs 和 JetBrains 的 IDE(PyCharm 和 Webstorm)。雖然這種組合很怪,但出奇的好。Emacs 適合心靈控制級(jí)別的文本編輯,IDE 適合面向鼠標(biāo)的閑逛和小修改。
Stephen French:
我喜歡 C#,對(duì) Java 落后太多真的失望至極,因?yàn)槲业墓ぷ鲀A向 JVM。Kotlin 看起來非常有意思!