標籤:

如何評價 Kotlin 1.0 正式版的的發布?

Kotlin 1.0 Released: Pragmatic Language for JVM and Android

Kotlin 1.0 正式發布: JVM 和 Android 上更好用的語言

QA with Andrey Breslav on the Kotlin 1.0 Release

Kotlin 1.0.1 is Here!


不邀自來,

先說發布,

我在kotlin m12版本就開始使用kotlin, 在Android項目中, 也不怕利益相關, 魅族的, 大魚(雖然現在離開了此項目)

與 kotlin 內部人員保持了很久的聯繫, kotlin 1.0 正式版新聞, 他們請我翻譯的, 在大家正在拜年的時候, 我一邊和朋友玩擼啊擼, 一邊翻譯了草稿版本 Kotlin 1.0 Released: Pragmatic Language for JVM and Android (不要點這個鏈接, 複製鏈接地址, 這個是草稿地址, 正式版本發布後就指向正式版本了)

你可以從這個鏈接的結構看出, 其實他們請了很多個國家的人本地化, 正式版新聞地址評論中的pingback就可以證明, Kotlin 團隊才20多個人, 1.0 發布的過程, 市場推廣極其艱難, Kotlin團隊的人只會英語和俄語(JetBrains俄羅斯人多), 他們很想要達到鋪天蓋地地傳播效果, 但在中國都不知道哪些網站發布這些新聞, 很多在中國發布事情都順帶問過我, 估計其他國家估計也一樣.

我推薦了 csdn, cnbeta, iteye等國內的IT網站來發布新聞, 並且將兩次翻譯也全權給了他們(一次草稿版, 一次正式版), 兩次翻譯也非常不一樣

在幫助他們的過程中, 我發現, 他們非常想要Kotlin極速火起來, 奈何人少, 力量有限.

實際上他們也非常在意中國的流行度, 還考慮著在中國找大學開 Kotlin見面會.

不過, 編程語言這種東西, 得有產品幫你證明, 幫你背書, 才會吸引更多的開發者.

從發布這件事就可以看出, Kotlin 革命之路, 需要更多有識之士前來安利.

再說 Kotlin 1.0,

首先回到一個通用問題, 我們為什麼用 JVM上的非Java語言?

我覺著: 是因為你 Java 已經用吐了, 熟悉得不能再熟悉了,

那麼 Kotlin 其實就是為這群人準備的! 你有了架構的思維, 有了代碼就應該想資源一樣好好管理的想法, 嘗試了各種方法來優化項目, 提升效率之後, 才會發現 Kotlin 那幫人跟你想的一樣, 還幫你做了很多.

我用過 Groovy 來開發Android, 來開發Gradle插件, 來寫一些腳本, 也學過Scala的Play框架

Kotlin出來後, 我就開始用了, Kotlin與其他的JVM平台語言最大的不同就是, 無縫兼容Java, 在重構或者優化已有的Java項目上, Kotlin無出其右.

再說另外一件事兒, Android Studio的爸爸叫 IntelliJ, IntelliJ的爸爸叫 JetBrains, JetBrains的親兒子叫 Kotlin, 這意味著什麼呢? Kotlin在Android Studio中比Java還好用, 雖然現在還有一點點IDE bug, 其實, Google對Android Studio與Eclipse的態度和JB對Kotlin與Java的態度, 完全一致: 你那破玩意兒太特么傷神了.

現在不是流行 React Native么, 用Kotlin來寫RN應用, 你就可以幹掉JavaScript了, 因為Kotlin除了與Java無縫互操作外, 與JavaScript也能無縫互操作, 寫一個RN應用, 可以全程使用Kotlin語言!

當然, 這只是舉個栗子, 也是我為什麼堅持使用的原因, 可以取代Java, 並且沒有可見的性能影響, 又可以取代JavaScript, 在這件事情上, 挺像 node.js.

Kotlin的函數特性, 無縫兼容Java特性, 又融合了動態語言語法, 統一到了一起: 比Java爽, 比Groovy爽, 比Scala爽, 不是針對誰, JVM的各位, 都是渣渣.

然而, 用於Android開發的時候, 得注意, 這玩意兒會增加你apk, 幾百K的體積, 所以建議超小的應用, 就不要用了, 其餘的, 都可以用.

至於伺服器開發者, 你們看著辦吧, 畢竟Golang爸爸在那兒站著看著我打字.


從身邊朋友處得來的反饋,Kotlin貌似對寫過C++的人比較有吸引力,但對於慣寫Scala、Clojure之類語言的人吸引力不大。

不過對於被三體人鎖死在java6的苦逼程序員來說,kotlin真是大救星……


關於那個百萬美元錯誤,想法很好,但我覺得實際選擇的實現方法很違和。。。

val x = parseInt(args[0])
val y = parseInt(args[1])

// Using `x * y` yields error because they may hold nulls.
if (x != null y != null) {
// x and y are automatically cast to non-nullable after null check
print(x * y)
}

包括auto cast

fun getStringLength(obj: Any): Int? {
if (obj is String) {
// `obj` is automatically cast to `String` in this branch
return obj.length
}

// `obj` is still of type `Any` outside of the type-checked branch
return null
}

看上去,設計者的意圖是,編譯期將 if 作為動態檢查的關鍵字並在編譯期理解if的檢查內容來決定是否編譯成功,但。。。覺得很奇怪,為什麼代碼的邏輯會影響到編譯的成敗呢。。。

上面兩個特性,我認為應該是以hard的語言關鍵字的形式來體現的,而不是一個非常soft的if。比如這樣:

val x = parseInt(args[0])
val y = parseInt(args[1])

// Using `x * y` yields error because they may hold nulls.
notNull(x, y){
// x and y are automatically cast to non-nullable after null check
print(x * y)
}

//or change x to not null permanently
x = notNull(x){x}else{return}
y = notNull(y){y}else{return}

以及這樣:

fun getStringLength(obj: Any): Int? {
obj canbe String obj2 canbe Int ...{
// `obj` is automatically cast to `String` in this branch
return obj.length
}

// `obj` is still of type `Any` outside of the type-checked branch
return null
}

隨手寫了一下,也不是特別滿意,要點是,我更喜歡關鍵字聲明,而不是if的邏輯檢查。

哦,補充一下,其他的我都還挺喜歡的,可以考慮用用看,感覺像是簡化版的scala。


相比起其他像c#,python,Groovy等語言,Java是一杯低糖咖啡,Kotin只是往咖啡裡面加糖而已。

加語法糖。java的語法糖太少了,例如各種自動推理。Kotin官方文檔說設計這門語言主要是為了實用性。

再例如官方文檔上的這個例子:

鏈式調用其中一個返回值為空的時候,java寫起來真心累啊,每一步都需要if去判斷空,但這裡Kotin一行搞定,看到這個例子的時候真心感動...

可能孤陋寡聞吧,總體感覺Kotin真心像Python

親,你愛喝加糖的咖啡嗎?反正我樂意試試。


專註於伺服器端開發,可以通過我的這個例子:Spring Boot in Koltin實踐 了解下koltin與spring boot的結合使用


喝了滿滿一罐的c#糖


爹好才是真的好。


許多的語法糖自己寫起來很爽,但是用於大項目就會有大家寫的代碼不一樣的問題。還有會增大apk的體積。不過我還是非常看好Kotlin的。

歡迎各位有識之士參與Kotlin的中文文檔項目

Github地址:GitHub - cctanfujun/kotlin-web-site-cn: 中文Kotlin編程語言網站,製作中,歡迎加入(Chinese Kotlin website)

就算不提PR也要來點個Star啊!


沒什麼感覺,與其學著用不同的工具做同樣的事,不如多琢磨怎麼用好一個工具做不同的事


隨著Kotlin成為Andorid的First language , 未來兩年之內必火, 立此帖為證!


要不是我現在迷戀crystal了, 我就跳kotlin的坑了. 畢竟都是簡單易學的語言.


kotiln有什麼網站可以學習嗎?求推薦


Kotlin和Swift都有很多跟scala很像的東西,scala是一種很好的語言,然而過於複雜,與java的交互也不夠友好,Kotlin之於Java,猶如Swift之於Objective-C,都引入了scala及其他語言的優點,同時語法簡單,與Java/Objective-C的交互友好。

以上是本人最近學習這些語言的見解。


我只能說,我想進入的一家創業公司已經大面積在使用了。


感覺還是不錯的一個語言 繼續關注下


kotlin 加了一些語法糖, 加了一些隱式規則, 有往 "寫代碼酸爽, 讀代碼崩潰" 的動態語言發展的趨勢.

語法糖是簡化了代碼, 但這些 "隱諱" 的代碼在讀它們的時候還是得在腦子裡人肉展開, 我覺得語法糖在 ide 很弱的年代很有現實意義, 但現今 ide 都可以智能提示了, 還要那麼多語法糖, 只是徒增讀代碼的負擔而已.

相比起來 java 代碼啰嗦, 但幾乎沒有隱式規則, 讀起來幾乎一目十行, 而且 ide 的自動完成可以做到你敲兩三個字元就提示一個表達式, 所以 kotlin 對 java 在編碼方面並沒有很大的優勢.


我只喜歡強類型靜態語言, Kotlin和Scala 都很不錯。 但是,Scala實在是太難了,招聘非常困難,Kotlin正好。


繼續回去寫scala


反正到最後,你會發現還是好好寫Java才是正途


最大的亮點就是默認引用類型不允許非空,終於有語言修正了這個「百萬美元錯誤」


推薦閱讀:

Kotlin 終於成為了 Android 的官方支持語言
Kotlin實現的自己列印代碼自己
#Kotlin# Activity 之朝花夕拾
如何評價 Android 官方支持 Kotlin 語言?

TAG:Kotlin |