嘗試kotlin的起因
因為各種原因(版權,人員招聘),公司的技術體系從c#轉到了java,我花了大概兩周的時間來上手java,發現java的語法還是非常簡單的,基本看着代碼就知道什么意思.學習java的過程中,大部分時間都花費在了maven配置,理解spring的ioc上面.
學習的一段時間,我對java的感覺也正如前人的總結,稀爛的語法,完美的生態.spring在更高層面去約束你的代碼設計,測試,事物,分布式,lucene,hadoop...jvm世界有太多的財富等着我去挖掘.但,我實在是不太喜歡java啰嗦,表達能力貧弱的語法.我決定試試jvm上的其他語言.
首先我並不考慮弱類型語言,后端開發不像前端,業務流程比較長,model復雜,強大的類型系統可以起到注釋代碼,控制復雜度的作用,所以我第一個目標是scala.然后我發現我就掉坑里了,scala毫無疑問是我學過的最復雜的語言了,光是看它的文檔,就大概花了我一周時間,豐富的特性,強大的類型系統,fp范式.那段時間我無聊了會在hackerrank上刷刷oj,使用下來,確實感覺scala很強大,語法簡練,集合操作方便.但后來我並沒有在公司項目上使用它,因為我感覺這並不是一門適合用來做工程開發的語言,語法糖太豐富,不同的人寫的代碼風格會差異非常大,比如有的人寫helper類,有的人喜歡用trait,還有的人想試試scala的多繼承,再就是運算符重載,省略()的函數調用方式...
這里插一嘴,每次看見園子里抱怨c#葯丸的,我都覺得挺無聊的.c#在國內互聯網屆江河日下,這是不爭的事實,但我們又不拿巨硬的薪水,誰給錢多就給誰站隊就是了.發現我好像還沒進入正題啊.馬上開始~~
話說有天逛知乎的時候,聽到了kotlin發布release 1.0的消息,看看別人的評價還不錯的樣子,我也決定試試.
如何評價kotlin
這是我當時使用兩天后的體驗,到現在也幾個月過去了,kotlin在公司的項目上基本也算穩定了,所以想把一些東西總結下.
對kotlin的第二印象
正如我上面那個帖子說的,kotlin是個很特殊的語言.在我使用的過程中,我感覺jetBrains團隊的目標也很明確:讓越來越多的人用kotlin,然后間接推廣他家的idea,所以kotlin是一門非常討好開發者的語言,它的設計風格並不明顯,並沒有什么花哨的特性,從頭到尾的標簽就是:簡單,方便,實用.如果其他語言有什么特別好的設計,kotlin也無節操的直接拿過來的,而且還會將一些特性進行增強和限定.
比如大家非常喜歡的c#的擴展方法,kotlin也有,而且kotlin的擴展方法更靈活,不需要限定在靜態類里面,像js擴充原型鏈一樣方便.
又比如scala寫lambda可以用_代替參數的聲明,kotlin也有it關鍵字,scala的方法只有一個參數的時候,可以省掉(),kotlin也可以,但必須對這個方法進行顯示的聲明infix 避免濫用.
這篇文章並不介紹kotlin的語法,這點jetBrain也做得很好,有興趣的人刷下這兩個項目,基本就沒啥問題了.
kotlin-koans : kotlin語法的練習題
Kotlin-examples :簡單介紹kotlin的配置和與java的互操作
好水的一篇文章...
下篇談談我對編程語言的看法