首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin比Java 更有趣

Kotlin是一种在Java虚拟机上执行的静态类型编程语言,它也可以被编译成为JavaScript源代码。它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。2012年1月,著名期刊《Dr. Dobb's Journal》中Kotlin被认定为该月的最佳语言。虽然与Java语法并不兼容,但在JVM环境中Kotlin被设计成可以和Java代码相互运作,并可以重复使用如Java集合框架等的现有Java引用的函数库。Hathibelagal写道,“如果你正在为Android开发寻找一种替代编程语言,那么应该试下Kotlin。它很容易在Android项目中替代Java或者同Java一起使用。”

2011年7月,JetBrains推出Kotlin项目,这是一个面向JVM的新语言,它已被开发一年之久。JetBrains负责人Dmitry Jemerov说,大多数语言没有他们正在寻找的特性,但是Scala除外。但是,他指出Scala的编译时间过慢这一明显缺陷。Kotlin的既定目标之一是像Java一样快速编译。2012年2月,JetBrains以Apache 2许可证开源此项目。JetBrains希望这个新语言能够推动IntelliJ IDEA的销售。Kotlin v1.0于2016年2月15日发布。这被认为是第一个官方稳定版本,并且JetBrains已准备从该版本开始的长期向后兼容性。在Google I/O 2017中,Google宣布在Android上为Kotlin提供最佳支持。

我第一次接触Kotlin 是在 2016 年 Kotlin 1.0 发布后不久,我现在深深地爱上了这门语言。有些人会告诉你,在 Kotlin 中无所不能,而在Java中同样出色。没有令人信服的理由去从Java转到Kotlin。Kotlin 只是做同样事情的不同工具。软件是思想的产物,而不是键盘的产物。你不是在烘烤手工制作的面包,在这种情况下,配料和合适的烤箱与你的手艺一样重要。工具只支持你的创造力,他们不创造任何东西。

我同意我们不能迷恋我们的工具,但它们很重要。我们用来创建代码的硬件和软件都非常重要。我们选择这些工具不仅是因为它们的实用性,而且是因为使用它们的乐趣。并且不要忘记趋势的吸引力。

程序员与他们的工具(尤其是语言)的关系更为亲密,就像音乐家与他们的乐器之间的关系一样。两者都需要数千小时的艰苦练习。一个有成就的小提琴家不能只拿起大提琴。同样,你不会像从尼康切换到佳能那样从 Haskell 迁移到 C#。后者更接近于将 Windows 笔记本电脑换成 Mac:远没有那么划算。

如果像音乐家一样,我们每天八小时与我们的工具互动,那么它们一定很棒,而不仅仅是好。程序员的优质硬件应该是显而易见的。令我恼火的是,有多少公司仍然不明白这一点。当费用低于高级开发人员的月费时,每个人都应该获得金钱可以买到的最佳设置。使用高级工具会带来乐趣。使用垃圾工具很烦人,就像使用高级工具一样令人愉快。我正在用的机械 DAS 键盘并不快,但仍然是有史以来花在办公设备上的最好的 1500 元。

趋势的吸引力和主人翁的自豪感。如果实用性和质量是最重要的,那么没有人会购买奢侈品牌。时尚将不存在。豪华轿车不会使你从 A 地更快地到达 B 地。作为业余爱好者,花40000块钱购买 Leica compact 是奢侈的,但可以炫耀其著名的红点,并想象自己是专业人士。如果我很有钱,我会搞一个。我也会买一架施坦威三角钢琴,并且爱它胜过爱一个无生命的物体。

让我们看看与程序员拥有的最重要工具:语言的相似之处。

编程是在构成正在运行的应用程序的其他虚拟机的套娃中创建一个新的虚拟机。至于普通实用程序,每种现代语言都是图灵完备的并且可以完成这项工作,但没有人可以合理地争辩说这使它们对每项工作都同样有用。为了不使争论过于复杂,我将留在 JVM 生态系统中。没有任何一种编码工作可以用任何 JVM 语言(Java、Kotlin、Scala、Groovy、Ceylon、Frege 等)来实现,而其他任何一种语言都无法模仿这些语言,但它们的区别很大。

程序员对竞争性工具嗤之以鼻,也许是偷偷地而不是公开地,但他们确实如此。我花了两年时间做一个 Scala 项目,并参加了 Scala 世界大会。众所周知,Scala 的高级句法结构(更高种类的类型、多个参数列表)会引起很多“我的语言比你的好”的傲慢。不要误会我的意思:它非常强大,但学习曲线陡峭。它可能可以免费下载,但是当时间就是金钱时,掌握它就很昂贵。它是编程语言中的徕卡,对一些人来说,这正是它的魅力所在:学习一些困难的东西,然后吹嘘它一点也不难。这是一个由来已久的 Linux 传统。

Kotlin 没有这种势利的吸引力。它被认为是一个对开发人员更友好的 Java,以 Java 本身永远不可能的方式彻底升级旧语法,因为每个新编译器都必须支持 1999 年编写的源代码,这是不可协商的要求。

如果单纯的实用性和趋势的吸引力不适用,那么支持Kotlin 胜过 Java 的论据一定是使用它的积极经验。在编写我的 Kotlin 项目时,我也在为 OCP-17 Java 考试学习。这在比较语言分析中被证明是一个有启发性的练习。

有些功能简直令人愉悦。Kotlin 内置的 null 安全性非常棒,是一个杀手级的特性。不要告诉我你不需要它,因为你是一个有洁癖的程序员。这背叛了对其他人草率的天真否认。你编写的大多数内容都与他们的代码交互。

其他(Java)功能让我很烦。进化禁止破坏性变化,因为每个新婴儿都必须能够存活并产生后代才能发生增量变化。同样,使用 Kotlin 的次数越多,Java 语法中的某些架构决策就越像丑陋的怪癖一样突出,自然(即 Gosling 和 Goetz)无法在不破坏传统的情况下纠正这些怪癖。

正是因为这个原因,Java 中的许多东西都让人感觉笨拙和丑陋。没有人会设计一种在语法上与其他集合类型不同的固定长度数组的语言。数组可以采用原始值类型(数字和布尔值),你需要将其装入列表、集合和映射的对象中。你不会使这些数组可变和协变。我给你一袋苹果,你管它叫一袋水果,插一根香蕉,还给我。太乱了!

使用没有这些设计怪癖的语言的乐趣与使用具有这些设计怪癖的语言一样强烈。我没有为我的反应比理性更情绪化这一事实找借口。

最后,我不想诋毁 Java 设计者多年来取得的成就。他们比我聪明。二十年后,Kotlin 团队很可能会发现他们在 2023 年做出的某些设计决策中把自己画在了角落里。谁知道呢,希望编码只是为了乐趣,而不是为了给任何人留下深刻印象。所有 JVM 语言都可以完成相同的工作,但让你开心的是最好的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230221A00R8500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券