2017年,Kotlin
的發展可謂十分迅猛,稍微關注it界的人都知道谷歌宣佈kotlin
成爲安卓的一級語言,不過那時候我並無關注,由於我不是搞安卓的... 哈哈開個玩笑,其實以前也有據說過這個語言的名字,但當時對我來講就真的是一個名字而已。java
直到前幾周我無心間看了一篇爲何我要改用XXX語言
這種系列的文章,接着花了幾天的時間去了解了一下以後,我忽然意識到,oh my god, kotlin
, 這就是我一直想要的。算法
用相見恨晚這個詞來形容我以爲還挺貼切的,爲何呢?我喜歡函數式編程,我認爲用函數式的思惟去解決問題可讓複雜的問題變得十分簡單,這就好像之前讀小學初中作數學題有直接一步一步解決的思路,也有列方程而後求函數方程的解法,後者在描述與解決問題上十分清晰與簡單,列出了方程式以後只須要求方程的解就好了。編程
我日常使用的語言是java,在java7時代我使用guava來進行一些少許的函數式編程(由於大量的匿名內部類真的無比難看),好在java8引入了lambda讓表述清晰了不少,不過java8中的還不夠。因而隨着興趣,我學習了lisp,一門超級簡潔的語言,可我發現,在實際工做中的做用微乎其微,更多的是思想上的提高。我開始尋找可以切合我自身實際狀況的函數式語言,因而乎很天然的就想到了jvm平臺上有沒有這種語言呢,果真是有的,例如Clojure
和Scala
,這兩個前者是lisp在jvm上的方言,後者據說是強化版java,身爲一個java並想着實踐的人,我更傾向於scala
,又是一個偶然我看到了scala
實現一些經典算法的例子,大部分的實現只須要1行或者2行,着實讓我驚了個呆,因而立刻開始學習...但是漸漸的我發現,scala是否是有一些太複雜了,例如類型系統與各類符號組合,我再次驚了個呆。驚歎完我在想:哎仍是老老實實搞java吧,爲何老是想這些有的沒的呢?框架
對於java,我我的最喜歡的有2點,一是生態環境很是良好,開源,擁有大量而又成熟的類庫,框架,解決方案並持續更新。二是我喜歡靜態語言,而java是強類型的靜態語言,雖然這使得你要多寫不少字符,不過這樣編譯器會讓你少犯不少低級錯誤,同時對於維護來講,java把語法規範的很死,大大下降了維護的難度,由於你們寫的代碼都是長的差很少的(在同一種編程範式下),固然你也喪失了必定程度的自由:) 與之成爲鮮明對比的就是scala
,scala
同一種解決問題方式的寫法有NNN種,而且總有你看不懂而且不怎麼想看的....jvm
扯的有點遠,不過總結上文,從我我的狀況來講,在我心目中對我來講最合適的語言是這樣的ide
lisp
,haskell
),但至少要more than javascala
),語法自由度應當是大於java
小於scala
我一直以爲這樣的要求會不會是一種奢求,然而並非... kotlin完美的符合我所但願的全部要求(這就是我爲何以爲相見恨晚的緣由),對比上面幾點,kotlin都是符合甚至超出的函數式編程
除此以外,kotlin還擁有函數
我目前的工做是獨立負責一塊內核模塊,所以個人自由度仍是挺高的,因而在我花了大約一週的時間(得益於idea的自動轉換,大部分時間都在重構上,由於自己就是函數式的寫法因此重構也很快),將代碼轉換成了Kotlin
版本的,過程很是流暢,運行起來的效果也絲毫沒有受到影響。學習
因此若是你和我同樣有上面的這些苦惱的話,不妨試試Kotlin,真的很不錯。idea