Kotlin最近火了, 在Google IO大会 Kotlin宣布Kotlin将会成为Android官方开发语言之后, Kotlin这样一个JVM上的新*(其实从诞生到现在已经有5年历史的)语言. 终于出现在程序员的视野里, 成为一门成熟的热门的语言.

对于大多数C#程序员来讲, 比如像我这样一个多年在.Net平台从事开发工作的程序员来说, 大多数时候往往都是对Java社区和JVM平台上的各种语言包括JAVA本身的发展抱着一种隔岸观火的态度. 我们目睹了早已被我们用烂的Java lamda特性终于在15年千呼万唤始出来. 旁观了Scala的社区的各种爆炸的冲击与最后归于小众. 耳闻了Oracle与Google在Java上的各种大小官司.

虽然追溯源泉 J#和Java本是同一套标准的不一样的实现, 但最终C#和Java这两大基于虚拟机指令集的语言, 发展成了编程语言上的两大阵营. Java的JVM阵营虽然是第一大, 但C#为代表的.Net阵营却还是站在众多语言中占据着一席之地.而且这两大阵营的人很少相互窜门(换技术栈). 原因各种各样, 对于.Net程序员来说, 他们很少换到Java的原因基本上可以归纳为:

1.两个平台都为Server Side 语言, 定位重叠.会一门就够. 有功夫学习一门Java(虽然很容易上手)还不如学一套Client语言(Js)更为互补.

2.C#程序员主力搞windows开发, 基本没有跨平台需求. 而C#开发windows应用上手容易又是一家人的产品,自然得心运手.

3.C#的语言是有微软一家说了算,商业化的开发,在语言特性上总是会觉得比Java更好用更Fancy一些.所以迁移到Java总觉得不舒服.

4.虽然Java社区很活跃,但是好的社区产品基本都有.Net移植版, 没有硬性需求非要迁移到Java

5.产品一旦开发,从C#换到Java基本上得照抄一遍,相当于推到重做,没有渐进式迁移的说法.所以一上了船就不好下.

说了这么多理由,对于一个C#开发人员来说,第三个理由应该是最接地气的为什么不学习Java的原因了--编程语言就是我手中的利剑, 用得顺手用的习惯了自然用不惯其他语言,何况还有这种优越感.

作为一个开发人员, 开发语言+IDE就是他的武器, 社区生态和类库就是他的剑谱刀法. 用顺手的剑耍最熟练的武功. 名剑配剑谱, 名刀配刀法.这是最正常不过的事情了.

然而Kotlin的出现,让我看到了这样一个打破界限的机会

要说起Kotlin的出身,那真可是出身名门,开发C#的,都会知道Reshaper. 开发Java的,也没有不知道InteliJ的. 而这两个IDE, 都是出自Jetbrains这家公司. 2012年 Jetbrains不在满足于只生产IDE, 瞧瞧的开始制作起自己的语言来. 5年时间过去Kotlin已经到了1.1

那么这门语言到底有什么特点呢?他解决了同平台Java的哪些痛点呢?

  • 对Null Reference Exception说不
  • 对泛型的类型消除说不
  • 函数一等公民, 高阶函数
  • 不再强制异常检查
  • 原生就有属性 Getter Setter

熟悉C#的程序员都会发现, 这里很多的思想居然就是C#和Java的不同. 也就是C#程序员在迁移到Java时的痛点( C#严格意义上称不上Null Safe 语言, C#8的Staic Null Checking 才称得上是Null Safe. Null Safe在这里不做解释).

而没有这些痛点以后, 学习Kotlin变得更平滑更愿意接受了. 而事实上的是, 以前总感觉C#语言特性发展总比Java快的这种感觉, 在学习了Kotlin之后发现Kotlin确实比C# Fancy太多.

那么,打破了刀剑的界限, 使用和C#一样顺手的Kotlin, 获得了熟悉Java阵营的各种生态的机会. 拓展自己的开发平台, 不小心还掌握了一门Mobile开发语言.这种好事, 好学的你为什么不去尝试一下呢?

介绍就到这里, 传送门就到这里. 进去了怕是只要半天的时间, 从此就打开一扇通往新世界的大门.

在这里也给自己努把力,希望自己能继续的更新这个专题, 通过学习Kotlin并和C#做些对比,使得同行们能够更容易的了解这门新的语言.

Kotlin Koans 教程:http://kotlinlang.org/docs/tutorials/koans.html

Kotlin 门户:http://kotlinlang.org/

作为一个C#程序员, 你应该上手Kotlin的更多相关文章

  1. Coding girl一个老程序员谈到的一个女程序员的故事

    因为有人说我给一个女程序员的建议不靠谱,我不服,因为我的工作经历中的一些女程序员都很不错,比那些男程序员都强,所以,我在新浪微博和twitter上征集女程序员的故事和想法,这两天来,我收到了好几封邮件 ...

  2. 文章推荐一个Java程序员跟大家谈谈从业心得

    一个Java程序员跟大家谈谈从业心得 2017-10-21 java那些事 java那些事 java那些事 微信号 csh624366188 功能介绍 分享java开发中常用的技术,分享软件开发中各种 ...

  3. 一个老程序员PHP程序员说的话(用来提醒自己)

    我,一个老程序员,也是一个学生,把玩过甚多语言,大多不精.我既非名牌学校,也不是高学历,仅代表一部分比较蛋疼的人.接触PHP也是很早了,从04年的OFSTAR开始的,到现在六年了,期间也接触过不少的语 ...

  4. 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能

    一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...

  5. 一个.net程序员教你使用less

    我是一个.net 程序员,虽然说一直做后台,但是web 前端也会去学,虽然说技术只是层窗户纸,但是像我这种多动症患者,不捅破我心难受啊! 好!废话不多提,下面直接正题,至于less 是什么这里不多讲因 ...

  6. 一个.Net程序员:既然选择了编程,只管风雨兼程(转)

    一个.Net程序员:既然选择了编程,只管风雨兼程 一次会议记录是不会有人感兴趣的,做标题党也是不道德的.所以,走了个折衷的路线,标题不叫会议记录, 内容不纯总结,技术加吐槽,经验加总结. 对于一个程序 ...

  7. 做为一个Java程序员,你需要哪些傍身的技能?

    最近总有些断断续续的思考,想想从我入行以来,我到底学会了什么,做成过什么,以后要做什么,如何提升自己······· 工作3年了,常听人说3年,5年,10年是程序员的坎,每过一个都会有新的想法,新的改变 ...

  8. MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录

    MySQL内存表(MEMORY)说明 | 一个PHP程序员的备忘录 MySQL内存表(MEMORY)说明

  9. 0~5年一个Java程序员的晋升之路

    在程序界流行着一种默认的说法叫“黄金5年”,也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕变成可以以不变应万变 ...

随机推荐

  1. Vim入门学习之Vim解析

    Vim解析... ----------------------- 首先你要会从官网上下载你想要的Vim版本:   官网: http://www.vim.org/==================== ...

  2. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

  3. mapper.xml是怎样实现Dao层接口

    上午写了一个简单的 从xml读取信息实例化一个Bean对象.下午就开始想mybatis是怎么通过xml文件来实现dao层接口的,一开始想直接用Class.forName(String name)然后调 ...

  4. LeetCode315—Count of Smaller Numbers After Self—Java版归并算法

    这是我在研究leetcode的solution第一个解决算法时,自己做出的理解,并且为了大家能看懂,做出了详细的注释. 此算法算是剑指Offer36的升级版,都使用的归并算法,但是此处的算法,难度更高 ...

  5. 《阿里巴巴Java开发手册v1.2》解析(编程规约篇)

    之前在乐视天天研究各种底层高大上的东西,因为我就一个人,想怎么弄怎么弄.如今来了新美大,好好研读一下<阿里巴巴Java开发手册v1.2>.还要对这么看似简单的东西解析一番.毕竟现在带团队, ...

  6. Python之set

    set set集合,是一个无序且不重复的元素集合 set的优势 set 的访问数度快 set 原生解决数据重复问题 # 数据库中原有 old_dict = { "#1":{ 'ho ...

  7. css控制竖直文字显示

    假如有一天,你把水平文字看腻味了...... 我建议你不妨试试垂直文字显示,就像这样: 我 是 竖 直 显 示 的 : 哈哈! 言归正传,怎么把一段话,垂直显示呢? 方法1: //把下面代码另存为ht ...

  8. 使用jmeter执行多条sql语句

    注意2个地方 1. [JDBC Connection Configuration] 在配置DataBase URL的时候,加上allowMultiQueries=true参数如: jdbc:MySQL ...

  9. HTML+CSS画一朵向日葵

    前几天看到一张图片,倔强的向日葵.(BGM,<倔强>) 看着挺有感触,就想用CSS做一个向日葵. 最终效果图如下: 主要的难点就在花瓣的处理上,css暂时没有做到这样的尖角圆弧. 我想到的 ...

  10. UIButton和UIimageView

    1.按钮控件使用的类是UIButton 点击按钮会触发某个事件 2.按钮控件的初始化 UIButton *button = [UIButton buttonWithType:UIButtonTypeC ...