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