JetBrains用Kotlin布了一个大局
2011年,在经过了一年精心开发之后,JetBrains发布了他们的JVM编程语言Kotlin。2016年2月15日,Kotlin 1.0发布,这是第一个正式稳定版。在2017年5月的Google IO开发者大会上,谷歌宣布Android平台正式支持Kotlin,Kotlin从此成为Android的一等开发语言。
Kotlin也被戏称为Android上的Swift,并与Java之间展开了一场没有硝烟的角逐战。很多人认为,JetBrains之所以推出Kotlin,主要是想开发出一门比Java更好的编程语言。因为他们觉得Java难以为他们带来更高的开发效率,Java既笨重又啰嗦,开发同一个功能通常需要写更多的代码。
有人说Kotlin可读性比Java好,语法也比Java更胜一筹。但可读性和语法体验都是很主观的东西,我们又如何从客观角度去衡量一门语言的“可读性”呢?既然没有人做过此类实验,那么就没有任何客观的数据可以支撑这一观点。而语法会影响可读性的说法也是站不住脚的。相信每个人都学过几门编程语言,在开始学习一门新语言时,确实会有一段时间难以看懂代码,但随着阅读代码量的增加,逐渐熟悉了这门语言之后,就不会被语法方面的东西牵绊住了。即使学的是Lisp,一旦熟悉了它的语法,适应了Lisp的括号之后,也就感觉不到它们的存在了。所以,Kotlin提供的语法糖对可读性产生的影响也是微乎其微的。
相反,在阅读了大量别人的代码之后,我们似乎可以得出这样的结论:如果开发人员可以使用某一门语言写出可读性很高的代码,那么他们也完全可以使用其他语言写出具备同样可读性的代码。换句话说,代码的可读性和语言无关,它完全取决于开发者的编码能力和代码阅读者的理解能力。
现在让我们回过头来,思考一下JetBrains所说的要提高生产效率是为了什么?对于一家企业来说,提升生产效率当然是为了节约成本,赚取更多的利润。JetBrains是一家非常成功的软件公司,这一点是不可否认的。但要说如此成功的一家公司居然要靠一门编程语言提升生产效率来提升竞争力,那自然是说不过去的。更何况,他们从2011年开始就持续投入资源开发Kotlin,如此大费周章,难道只是为了要开发一门看似会带来更“高”生产力的编程语言?对于JetBrains这样的公司来说,投入研发的资金动不动就要几百上千万美元,员工薪水、市场推广等方面的费用都不是小数目。而且这么多年了,如果他们没有给股东赚到钱,恐怕到现在已经不复存在了。再则,Kotlin是不是实实在在给他们带来了生产力的提升还是个很大的未知数。
JetBrains是一家靠出售开发工具为生的公司,在商言商,如果我们从他们的商业策略角度来分析问题,或许能够找到更恰当的理由来解释为什么JetBrains要极力推广Kotlin。
IDE是JetBrains最主要的产品线,而编程语言对IDE来说至关重要。但编程语言的商业化太难做,因为切换编程语言对于企业来说代价巨大,所以很难说服企业改用其他编程语言。从IDE厂商的角度来看,他们需要为支持的每一种语言开发工具。现在的开发语言这么多,每个开发者和企业又都有自己的偏好,所以IDE厂商必须憋足了劲开发一大堆工具。对于JetBrains来说,最重要的是要想办法把开发者笼络到同一门易于维护的语言上,而最好维护的语言莫过于自家开发的语言了。
反过来说,IDE对于编程语言来说也是至关重要的。编程语言难以商业化,那么IDE呢?不同的IDE有不同的功能特性和外观,开发者也会有自己的喜好,所以IDE也是难以互相替代的。不过相比编程语言,要切换IDE还是相对容易的。那些不愿意掏钱为个人项目购买IntelliJ许可的开发者完全可以使用开源的IDE代替,比如Eclipse、Atom等等。所以说,JetBrains可能面临流失用户的风险,因为用户有太多可选择的IDE。不仅如此,如果出现了一门新语言,大家蜂拥而上,那么JetBrains能够分到的市场份额可能更小了。所以,JetBrains要想在IDE大战中保持市场份额,最重要的是不要让开发者有机会切换到其他IDE,那怎样才能做到这一点呢?答案就是把开发者牢牢绑死在自家的语言上。
除了以上两点,推广Kotlin对JetBrains来说还有第三个好处,那就是顺便提升他们的非IDE工具的市场份额。除了IDE产品,JetBrains还推出了持续集成服务器产品TeamCity和问题跟踪系统YouTrack等。一般来说,使用了Kotlin和IntelliJ的用户也很有可能会使用他们家的其他产品。
这样看来,JetBrains所说的提升生产力只不过是个幌子,他们的终极目标是锁定用户,牢牢地钉住市场份额。
本文文字及图片出自 微信公众号
你也许感兴趣的:
- 【译文】Java 21 – Kotlin 是否正在消亡?
- 【译文】Kotlin 的黄金时代及其不确定的未来
- Kotlin 负责人:我们是如何一步步设计 Kotlin 的?
- 为什么 Java 后端开发没有大规模采用 Kotlin?
- 要不要大规模采用 Kotlin 替代 Java?我们做了这些考量
- Kotlin 对战 Java:新秀会击败老将吗?
- Android 开发者应该从 Java 转到 Kotlin 吗?谷歌告诉你
- Kotlin 1.3.30 改进汇总
- Effective Java in Kotlin第一条: 考虑用静态工厂方法而不是构造器
- Kotlin使用率达35%,Java要退位了?
你对本文的反应是: