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. JSON异步及跨域

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 零基础到精通Web渗透测试的学习路线

    小编相信很多新手都会遇到以下几个问题 1.零基础想学渗透怎么入手? 2.学习web渗透需要从哪里开始? 这让很多同学都处于迷茫状态而迟迟不下手,小编就在此贴给大家说一下web渗透的学习路线,希望对大家 ...

  3. poj2828 Buy ticket

    Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...

  4. 文档API生成神器SandCastle使用心得

    一.功能描述 关于Sandcastle网上的参考资料相对较少,Google出来很多资料都是全英文的,相对于我这种英语渣渣看起来还是很费劲的. 言简意赅,Sandcastle主要功能是能够将C#类生成类 ...

  5. 搭建互联网DNS构架

    author:JevonWei 版权声明:原创作品 构建"." DNS."com" DNS及"danran.com",用户通过"电 ...

  6. Net分布式系统之七:日志采集系统(1)

    日志对大型应用系统或者平台尤其重要,系统日志采集.分析是系统运维.维护及用户分析的基础. 一.系统日志分类 一般系统日志可分为三大类: 1.用户行为日志:通过采集系统用户使用系统过程中,一系列的操作日 ...

  7. django源码解析一(请求处理流程)

    1.我们都知道WSGI是一个规范,规范了server和application之间通信的一些约束,server端在监听到请求之后,会把请求转给application去处理,他们之间关联起来的桥梁是一个e ...

  8. WPF的TextBox水印效果详解

    一种自以为是的方式: 本来只是想简单的做个水印效果,在文本框内容为空的时候提示用户输入,这种需求挺常见.网上一搜 都是丢给你你一大段xaml代码.用c#代码实现我是不倾向了 既然用wpf就得Xaml啊 ...

  9. html标签缺省(自带)样式大全

    html标签默认样式整理 作者:佚名  来源:互联网 时间:07-30 16:54:48 文为大家整理了html标签默认样式属性及浏览器默认样式等等,喜欢css布局的朋友们可以学下,希望对大家有所帮助 ...

  10. java记事本1.2版

    功能:实现了新建,打开,保存,退出,复制,剪切,粘贴等功能 效果图: