如何评价 Kotlin 语言
展开全部
总体说, 对于大部分普通程序员, 可算比较完美了(综合考量语言自身\平台及库\IDE等工具\背后支持公司). 目前主要风格还是偏OO, 如果可以再偏FP一点会更好. 像是一个Scala与C#的合体, 比Scala简单得多; 比C#更干净, 因为没有历史包袱. 我多多少少写过代码的语言超过10种, Kotlin与F#是感觉最舒适的, 另外Kotlin是少有的和Go/Python一样写代码时不需要程序员动脑的语言, 很适合开发普通项目.与Scala有根本设计思路上的不同, Scala是一切尽量自己来, 实在不够用了再用java的; Kotlin是尽量用Java的, 不够用了再扩展, 尤其体现在二者的容器库上, 导致Kotlin的学习曲线极低, 这对于我这样的普通码农是一大优点, 而高手们可能更看重Scala强大的容器库和完备的FP功能, 所以个人估计它很难吸引Scala程序员.比较喜欢的几点:既有FP的everything is an expression风格, 可以直接用if等表达式赋值, 又可以用label控制return, 使得return可以用于lambda中, 进而在lambda中使用卫述句直接return, 减少巢式嵌套, 这点做的比Scala漂亮. 我个人非常喜欢使用卫述句, 一直为不能在FP语言中用卫述句而感到遗憾, Kotlin很好的解决了这个问题.可以像F#/Go一样直接在package内写函数, 不需要所有东西都放进一个object/class之类的, 代码看着很舒服. 说起来, Kotlin的设计定位有点像jvm下的Go, 追求简洁实用, 但比Go好用(主要在泛型/FP两方面). 目前虽然没有自己的actor库, 但可以用akka, 这点就显示出jvm的多语言群殴优势了.目前编译器和插件还不如Scala的成熟, idea下曾碰到过IDE内部错误之类的问题, 自动完成也经常出问题, 不过实际影响很小. 另外比较意外的是没有union而一定要用data class或Pair/Triple, 也没有type alias, 原来代码里用的太多, 改起来有点烦, 但想一想Scala的编译时间和类型系统, 忍了吧.估计会先在Android上开始流行, 慢慢扩展到server端. 但要达到Scala目前的流行程度, 短期内是不可能了, 希望今年能出1.0.以后有新感想了再说2015.06.01补充一段其设计者对于集合库的说明:“Scala 的经验表明,有自己的集合库 — 总的来说很不错 — 可以带来明显优势,但在需要与Java代码互操作时也存在缺点:所有数据都需要转换/包装,因此代码有点难看,性能有时会大打折扣。鉴于此,Kotlin采用了另一种策略:我们使用简单的Java集合,但通过提取“虚拟”只读接口并引入声明位置变量使它们有不俗的表现。这样,既可兼顾兼容性,又可得到一个好用的库。Kotlin 依赖于Java库,但可以增强Java库的功能,主要是通过扩展,但有时使用编译器支持的技术(集合/数组/基元),这在保证兼容性的同时保持了语言的纯净.” -- Andrey
Breslav
Breslav
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询