• java太low,又舍不得jvm平台的丰富资源?试试kotlin吧(一)


    尝试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的互操作

    好水的一篇文章...
    下篇谈谈我对编程语言的看法

  • 相关阅读:
    C#多态联系之虚方法
    FileStream 操作文件复制
    [Android] Android 用于异步加载 ContentProvider 中的内容的机制 -- Loader 机制 (LoaderManager + CursorLoader + LoaderManager.LoaderCallbacks)
    [Android] Android 异步定时任务实现的三种方法(以SeekBar的进度自动实现为例)
    [Android] Android Butterknife 8.8.1 在 Activity 和 Fragment 、 Adapter 中的使用
    [Android] Android v4包CompoundButtonCompatLollipop.class重复问题
    [Android] Android 常见第三方库汇总地址
    [Android] Android ViewPager 中加载 Fragment的两种方式 方式(二)
    [Android] Android ViewPager 中加载 Fragment的两种方式 方式(一)
    [Android] Android : lambda expressions are not supported at this language level(需设置project language level)
  • 原文地址:https://www.cnblogs.com/suijing/p/5538169.html
Copyright © 2020-2023  润新知