【翻译】17位谷歌专家称号大牛如何看待Kotlin

2017-06-03 by Liuqingwen | Tags: Kotlin 翻译 | Hits

一、译前说明

貌似 Kotlin 是不是已经过了最火爆的那段时期了?其实不管怎样,我都要把这篇文章尽我最大努力翻译出来给大家看看,尽管 Kotlin 已经被招安,尽管文章的观点因为谷歌 IO 大会而过时,尽管本人翻译水平是那么的不靠谱,但是至少我还是不会曲解人意的,至少他是大牛们的观点,我能做的是尽量把翻译做更好吧。 blush

这篇文章由 Kotlin 布道者: Antonio Leiva 在谷歌 IO 大会( 5 月 17 日)开展之前发布的( 发布时间是 5 月 15 日),相信有一部分同学熟悉这位大神:我姑且认为他是最早出版安卓 Kotlin 相关书籍的大牛,而且毫无疑问他的书是最早关于 Kotlin 方面的安卓书籍被翻译成中文版的。但是,我这里还是要说但是,你可以从文章内容看出来,他认为谷歌接受并支持 Kotlin 为官方开发语言是没有什么可能性的,这也许是他采访 17 位谷歌大牛并发表他们对 Kotlin 看法文章的动机吧。

二、译文

谷歌已经多次表态申明他们并无反对 Kotlin 的使用,而编译器能够正确地编译识别 Kotlin 代码表明谷歌并没有阻止任何人对 Kotlin 的使用。

但是,很多人还是一直在等待谷歌官方的正式支持,但这几乎是不可能的事情。

尽管我们在等待这个时刻的到来,但是我认为了解谷歌安卓开发专家们对它的看法还是很有必要的。

你是听说过,谷歌开发专家 ( GDEs )是谷歌赋予那些在特定领域有着独特贡献的专业人士的荣誉称号。

我只联系上了其中一些专家们(谷歌开发专家人员列表非常的长!),并得到了他们当中 17 位的回答。非常感谢他们的友好真诚的心以及能够抽出时间来为我解答。

我只是问了他们一点点关于 Kotlin 的信息,以及他们是怎样看待 Kotlin 的。毫无疑问,我并没有对他们的看法做过任何修改,因此在文章中你能同时看到有支持和反对(或许并非如此)两种声音。

我由衷希望这些观点能有助于你了解 Kotlin 是如何改变游戏规则的,并且,如果你是一名安卓开发者的话,至少能让你开始考虑使用 Kotlin 吧。

马上进入正题,以下就是我们这些谷歌大牛们的观点,排名不分先后:

1. Annyce Davis

Annyce Davis
Annyce 是一名谷歌安卓开发专家,她在过去 6 年里一直致力于多种多样的安卓生态系统相关应用开发。
同时她也是一名国际会议演讲专家、作者,同他人分享在安卓开发中的经验。

我曾经开发过 Grails 应用,使用的是 Groovy 这门开发语言。 Groovy 相对于 Java 有相当巨大的改进。它非常简洁且避免了很多当时在 Java 6 中出现的代码重复模板工作。当 Kotlin 出现在我的视野时,我立刻被那些我记忆中 Groovy 类似的语法所吸引。它同样的清晰而简洁。

我是一名狂热的学习份子,我如饥似渴的学习 Kotlin 并开始玩转 Kotlin Koans 。我也预定了早期版本的 Kotlin in Action 这本书。最终让我转变的是 Hadi 的 Kotlin 广播。最终我决定认真地对待 Kotlin 并在它的 1.1 版本发布之后开始把它应用到我的产品开发当中。

对于安卓开发者来说它有很多优势。最重要的一点是它的类型系统和空指针异常处理特性。这会强制你明确哪个变量可空,并作相对应的处理。编译器接着跟进并保证赋值总是有效的。空指针异常是我在安卓应用开发中遇到的最常见的一种异常。 Kotlin 在这个方面创造了一个良好的平台

在我看来,另一个巨大的制胜点就是它的函数扩展功能。它能够为 Context , Activity 添加扩展方法,同时它的数据类也使得我的代码更加简洁,可读性也有增强。

使用 Kotlin ,我的代码变得简洁而又健壮!

观点:
Kotlin 对于安卓开发者有很多优势。采用 Kotlin 开发,我的代码变得简洁而又健壮!

2. Sebastiano Poggi

Sebastiano Poggi
在意大利北部雾都平原做智能手表开发后他开始崭露头角,Sebastiano 带着他那缕卷发来到了伦敦准备大干一场。
作为会议演讲嘉宾以及网络思维传教士的他在 2014 年获得谷歌程序开发专家的称号。最近他沉迷于 UI 和 UX 设计,目前在 Novoda 公司写一些很酷的软件。

我非常、非常的喜欢这门语言!我个人感觉是它让写代码成为了一种乐趣,相反这些在 Java 中确是非常痛苦和厌烦的事情。我算不上一名专家,因为我还没有在我的日常工作中着重使用它,但是我在自己边缘项目中使用过。你听说过传说中的 10 倍效率开发者吗? Kotlin 有时候让我有种自己就是传说中的 10 倍效率开发者的感觉(我一直不相信有谁能够成为 10 倍效率的开发者,但是现在是个很好转变思维的开始)。

这门语言除了明显简洁语法特性之外,我非常喜欢那些额外的 API 和它所打造的整个生态系统。例如,不可变集合,有时候我认为他是非常有必要的,如果在软件开发中没有使用(部分没有使用?) Guava 的话,你根本不可能在 Java 中使用到它;然而这在 Kotlin 中是第一步就被实现了的。而且这意味着很多东西。噢,我有没有提到我非常兴奋地看到了他们在发布了对 LLVM 的支持后还将会发生的一些事情?

就像我刚提到的,我的日常工作并没有包含 Kotlin 的使用。有很多理由可以解释这个项目能够从中受益,但是我们的项目如要采用 Kotlin 地话也非易事,如此大的团队规模是这个产生这个困难的主要原因。我也能观察到 Kotlin 存在的问题:缺乏静态分析工具,也没有现成的设计模式

后者相对来说不是一个大问题,如果你的项目没有那么复杂的话。但是如果有 10 个开发者同时工作在一个代码模块上,而且还拥有将近 10 年的迭代历程,那么有一个较好的现成的模式将会极大地稳定你的军心。当然,你可以使用 Java 的模式,但是并不是所有那些模式都适合 Kotlin 的,因为有不少模式的设计局限在 Java 之上。这是一个很长的话题,我就此打断以让我继续完成我的整个看法。

前面提到的那个问题,对于我来说,是非常关键的一个问题,而且确实是一个致命的问题。原因在于实际开发中你不能使用 PMD , Checkstyle , Findbugs 和其他一些工具(我没有尝试过 Errorprone )这将会形成一种非常危险的状况。比如,你有 3 到 4 个以上的开发者,你不能总是期望一直对代码编写风格上进行严格的监督。更重要的是,你所使用的工具中缺少很多深层次的 BUG 检查机制。我请你举起手来,如果你从来没有使用过静态分析工具(正确使用)的话,我根本不相信!目前,我知道有一些 IDE 带有基本的检查机制,但是那些还远远不够强大(暂时);也有一些项目给 Kotlin 带来了静态分析功能,但是这些项目暂时还不能成为你所能依赖的对象。我很期待看到它们变得越来越成熟,最终能让我们自信地采用他们!

话说回来,我现在正在我自己的小项目中使用 Kotlin ,我非常喜欢它。

观点:
你听说过传说中的 10 倍效率开发者吗? Kotlin 有时候让我有种自己就是 10 倍效率开发者的感觉。

3. Jorge Barroso

Jorge Barroso
Jorge Barroso 是 Karumi 公司的安卓开发者也是公司合伙人。一个独特的小型软件开发工作室,总部坐落在 Madrid ,专注于开发简洁而又稳定的原生程序,同时和团队一起致力于技术提升。
Jorge 有着长达 10 年的软件工程经验,他把自己定义为一个实用主义码农,专注于提升安卓项目的架构,是一名坚定的语义性代码概念和软件开发测试的倡导者。他持续不断的学习并研磨安卓代码技巧,努力了解并适应内部框架的演变。

Kotlin 是安卓开发界的一大进步。安卓缺少一些东西,相比较其他的 Java 平台它是有点落后了,即使是 Java 8 的推出也不能阻止它成为一门我们所喜欢的现代语言。

我觉得目前最大的问题在于移植,很难说服一个公司转型到 Kotlin 并告诉他们价值所在。对于科技型公司这会相对轻松些,因为这是对公司开发者的一种激励和挑战,但是对于小型企业却很难。另外,很多企业担心 Kotlin 得不到谷歌公司的支持,这会导致移植结果半途而废。

我喜欢这门语言以及它所构建的生态系统,我希望能够在我的日常开发中更多地去使用它,但是,很显然我的工作项目并不允许我这么做。我鼓励大家去尝试一下,不仅仅是 Kotlin 这门语言,还有其他的一些语言,因为这会开拓大家的视野并且在软件编写过程中学到很多东西。

观点:
Kotlin 是安卓开发界的一大进步,我喜欢这门语言以及它所构建的生态系统。

4. Donn Felker

Donn Felker
Donn Felker 是 Caster.IO 的创始人和首席执教官, Fragmented Pdocast 的合伙人,谷歌安卓开发专家,同时也是手机类畅销书的作者。

它很有趣,我很喜欢。它给安卓开发界带来了一缕新鲜的空气。

观点:
我喜欢 Kotlin 。他给安卓开发界带来了一缕新鲜的空气。

5. Mark Allison

Mark Allison
Mark Allison 是自由职业安卓开发者,也是 stylingandroid.com 网站博客作者。

虽然 Kotlin 有很多让我喜欢的地方,但是我认为它在投入项目实际生产中还不够成熟。 Kotlin 中缺乏现有的模式以及最佳实践,这会导致代码很难维护。

这反映在 Kotlin 缺乏静态代码分析工具上。他并不能完美地利用 Java 的静态代码分析工具,这会是技术债务的一个明显的信号灯。 Java 工具不能用在 Kotlin 上是因为这些工具只是专门分析 Java 源码。

观点:
我认为 Kotlin 在项目成品中应用还不够成熟

6. Huyen Tue Dao

Huyen Tue Dao
Huyen Tue Dao 就职于 Atlassian 的 Trello 平台。一半的工作是处理安卓对话框。

我完全地、疯狂地迷恋上了 Kotlin (那个词是“ C ”还是“ K ”?)。在工作上我们已 100% 使用 Kotlin ,而且,当然包括实际产品代码!实际上,只要我能做到的地方我都用 Kotlin 编写代码,这得益于和 Java 的完全互操作性。在享受和利用 Kotlin 的强大的现代语言特性的同时,我仍然可以随意访问平台的 API 以及其他已经编写好的代码集和类库。

因为 Kotlin 是新出的,所以我们现在全部都在探索和定义最佳的实践方式,我不得不仔细审查每一行代码在不同层次带来的作用。这很有趣,也强迫我对一些决定做出更多的深思熟虑和责任担当。

这门语言超乎想象的简洁。我喜欢安卓,但是我们做了大量重复的模板工作, Kotlin 能帮我们减少很多重复的工作。当然过于简洁会导致可读性方面的问题,但是我认为大部分时间里 Kotlin 实际上提升了代码可读性,我们也不至于太过于疯狂地在意我们所需要的最佳实践效果。

观点:
在工作上我们 100% 采用 Kotlin ,而且,当然包括产品代码!

7. Dmytro Danylyk

Dmytro Danylyk
Dmytro Danylyk 是一名开发者,作者和讲师。对安卓开发和平面设计充满激情。目前在 Atlassian 的悉尼工作室工作,对于他来说,这是澳大利亚提供的最好的工作环境了。

Kotlin 打破了那些争执于安卓开发界的游戏规则。它有很多我喜欢的特性比如:空指针安全,数据类,属性,懒加载属性,函数扩展性,协程,不可变性等等。

我很享受使用 Kotlin 编程,因为我完全就不需要使用其他的第三方类库了, Kotlin 已经提供了大部分现成的功能。

感谢 JetBrains 公司给我们提供了强大的 IDE 支持以及众多的学习材料,甚至包括在线 REPL 编程。

观点:
我很享受使用 Kotlin 编程,因为这样我完全不需要使用其他的第三方类库。

8. Anup Cowkur

Anup Cowkur
Anup Cowkur 是一名谷歌安卓技术专家,是 GO-JEK 公司安卓骑行航海产品的技术研发组长。
他在印度 Droidcon , Stockholm 等地演讲过。多篇安卓论文的作者, Bangalore 安卓用户群组的组织者。

我曾经使用过像 Haskell 和 Elixir 这样的语言进行编程,我当时就在想,“为什么我们在安卓上没有那些好东西呢?”

但是,现在有了,我们有了 Kotlin 。

可选类型自动由系统处理,函数成为一等公民,正则匹配(部分)以及不可变类型,这些特性让我能够在安卓上做真正的函数式编程。

观点:
Kotlin 让我能够在安卓上做真正的函数式编程。

9. David Vávra

David Vávra
David Vávra 是安卓和 Firebase 谷歌技术专家。他带领他的初创公司进行安卓架构的开发工作。他是 Prague 地区 GDG 的组织者,非常热爱开源,小程序和实况角色扮演。

我已经在产品开发中使用 Kotlin 进行主程序开发Settle Up )。它已经足够成熟,相比 Java (任何版本) 有很多优势。它完全兼容现有的 Java 工具集和类库,在 Android Studio 中完美工作。

如果我启动一个新的 APP ,我会毫不犹豫地从 Kotlin 开始。一种很常见的反对观点是:“如果我的队友不会的话,那将会产生抱怨以致影响生产效率”。我不同意这种观点,从 Java 转变过来是不费吹灰之力的。而且,那些优势也会在早期的进度中就能显现出来。比方说,使用 RxJava 库极其麻烦。

对于现有的 APP 移植——这就要看情况了。打个比方你可以只用 Kotlin 写一部分代码,如果你想充分利用这门语言的优势的话,你最好做到 100% 的转变。这很难说服项目的持有者。

唯一 Kotlin 需要的是一个谷歌官方的“批准盖章”。谷歌目前没有任何动作,除了或许可能会在文档中添加 Kotlin 版本的代码(就像 Swift / ObjectiveC 那样)。如果成为现实的话,我们将会看到 Kotlin 成为主要生产力。为今年的 I/O 大会祈祷吧!

观点:
我在产品开发中使用 Kotlin 开发主程序。它已经足够成熟而且有很多优势。

10. César Valiente

César Valiente
César Valiente 是微软公司的一名安卓工程师,前 Wunderlist 公司核心安卓开发人员。 FLOSS (免费开源软件)的布道者。谷歌安卓开发专家。演讲家。他是一个非常好相处的人。

我认为 Kotlin 是一门神奇的现代语言。

它的学习曲线非常平滑,你可以在某一天上午研究一下,然后当天结束后你也许就能用它写一些代码了。用它写代码很享受,使用起来也很有趣,它非常简洁,拥有其他现代语言所拥有的特性,它由 JetBrains 公司的牛逼技术团队持续不断地开发,也得到了社区的大力支持,而且, Kotlin 是开源的哦!

我不会花很多时间来解释 Kotlin 的那些让程序员生活得更美好的特性,对于这些特性,你可以看一下那描述地相当好的文档,对于练习的话,你可以直接在我们的 IDE 中使用 Koans 或者到网上找那些不断由社区发布的不可思议的新东西。

在安卓方面, Kotlin 给我们安卓开发者带来了一缕新鲜的空气,给了我们重新享受软件开发的新理由,并且在每天的工作之中很重要的一点是使用 Kotlin 你会写少编写很多的代码,避免了大量重复模板,代码的可读性也变得更好,得益于你写代码所花的时间越来越少,你的效率也变得更高,而且就像我之前说的, Kotlin 会给你带来享受乐趣!

问题也摆在那里,至少对于安卓社区来说,那就是:现在 Kotlin 可以投入生产了吗?我的答案是……当然可以啦, JetBrains 去年就发布了 1.0 的稳定版本。

你会认为 JetBrains 公司的那些天才们在还不能投入生产前就发布 Kotlin 吗?当然不会。他们自己就使用了 Kotlin 做项目,并且其他的一些被认可的大公司也在使用 Kotlin 投入生产了。

好吧,好吧,貌似一切都是那么美好,也应该会有那么一点不好的地方,是吧?当然是的,这其中一个问题是社区急切渴望的静态分析工具。静态分析工具对于开发团队来说非常重要。我们在 Kotlin 上仍然缺少这样的工具,当然你可以做构建,测试等实质性的重要事情,但是目前 Kotlin 仍然不能使用那些在 Java 中极其重要的工具比如 Checkstyle, PMD ,findbugs 等。(好吧,我们在 IntelliJ 中有内部代码分析功能但是这还不够强大)。

因此,如果你在一个大团队里工作,那么静态分析工具在你的日常基本工作中是非常重要的(理应如此),那么你也需要更深入地去关注这一点。如果你是在一个小团队工作,或者你能掌控一切的话,那么就不要犹豫了吧!

总而言之,我想说的是 Kotlin 真的很强大,你会更加觉得有乐趣而且你也会更加高效(至少对于 Java-Android 组合来说),尽管静态分析工具还是大家需要考虑的问题,但如果你不需要这个工具也能进行的话,那么请勇往直前,尝试一下吧,你也会爱上它的!

观点:
在安卓方面, Kotlin 给我们安卓开发者一缕新鲜的空气,给了我们享受软件开发的新理由。

11. Nelson Glauber

Nelson Glauber
Nelson Glauber 是 Mokriya 的一位高级安卓开发工程师,也是巴西东北部继续教育扩展课程手机开发方向的教授。 2014 年谷歌第一次提名他为拉丁美洲的安卓开发专家。 2015 年他加入了英特尔创新者计划。
他在多个国家和区域的活动中做过演讲,为自己的个人博客和一些专业杂志撰写过关于手机开发方面的文章。他也是《精通安卓:从入门到高级》这本书的作者(葡萄牙语),出版于 2015 年 1 月份。

Kotlin 是一门令人印象深刻的语言。这门语言有着令人惊奇的特性,相比 Java 语言它去掉了一大堆模板代码。更不用提它能兼容市面上大部分的类库了(包括 Java 代码编写的)。另外这门语言很容易被使用的一个理由是:它和 Android Studio 能完美而稳定地兼容

对于 Java / 安卓开发者来说它的学习曲线非常低(可能对新手不会)。我从去年开始学习 Kotlin ,通过阅读 Antonio 的书(顺便提一下这本书真的很棒),从那时候起,我就已经在我的个人项目和课程中采用这门语言了。

不幸的是,我目前并不能在我的产品开发中采用它,但是我丝毫不怀疑这门语言已经足够成熟并已准备好在大型产品开发中高效率地使用。

在我看来,你还未曾使用这门语言的唯一理由是:一旦你开始用 Kotlin 编程,你就根本不会再用 Java 了

观点:
一旦你开始用 Kotlin 编程,你就根本不会再用 Java 了。

12. Ryan Harter

Ryan Harter
Ryan Harter 是 Pixite 公司的安卓开发组组长,这是一个开发创意软件的小公司。他做了大量图形设计方面的工作,同时也很享受实现一些人们所喜爱的流畅、愉快的互动的相关开发工作。

大概在一年之前我就开始使用 Kotlin 编写代码了。有了一些经验后,我发现它很稳定,并且这门语言的一些特性所提供的便利为迁移和转变提供了足够的理由。得益于与 Java 的互操作性,一旦遇到任何 Kotlin 中我不能解决的问题,我都能回滚到 Java 中解决。

这门语言最强大的,说来也是简单的一个特性是函数扩展功能,它确实简化了我的工作流程。在我的图形工作中,我最终需要做很多算法和矩阵相关的内容,这意味着需要很多的工具类。函数扩展功能极大地简化了这一点并且让我的代码变得更加简洁。混合着函数编程功能让我的工作流程变得更加享受。

我给那些需要考虑迁移的开发者们一个最大建议是: Kotlin 并不意味一切也非完全不是。它能很好地和现有的 Java 代码一起工作,因此你可以浅尝辄止然后在适当时机到来之时再深入。

观点:
Kotlin 最强大的特性是函数扩展功能,的确简化了我的图形工作流程。

13. Ubiratan Soares

Ubiratan Soares
Ubiratan Soares 是一名软件工程师,经验丰富的安卓开发者。

从目前开发者体验的角度来讲, Kotlin 是安卓的未来

Kotlin 目前正在做的就如同 Gradle 三年前对安卓开发者所做的一样;作为安卓开发者社区的一员,我们应该拥抱 Kotlin ,广泛传播 Kotlin ,让 Kotlin 更加强大并吸引大量开发者,因为用更好的方式开发安卓软件能让我们的客户满意,也让我们的工作更美好这些都是我们应得的。

观点:
作为安卓开发者,我们应该拥抱 Kotlin ,广泛传播 Kotlin ,让 Kotlin 更加强大并吸引大量的开发者。

14. Philippe Breault

Philippe Breault
Philippe Breault 是居住在 Montréal 地区的一名法裔加拿大开发者。他是一名谷歌安卓开发专家,喜欢尝试去说服每一个人转移到 Kotlin 上。你可以经常在推特上看到他。

Kotlin 带来了一缕新鲜的气息,对于安卓开发者来说。

我喜欢用 lambda 表达式所完成的工作。让 Kotlin 编译器支持内联函数,这是很有意义的,对于我们安卓开发者来说,使用内联函数能够在多级循环中避免不断地实例化新物体。

它同样也很简洁:没有冒号,同一行对变量的赋值不需要重复写出类型,属性代替 getters/setters 等等。它让代码更加易于理解

唯一一件我希望看到的事情是能够提升安卓 Gradle 插件和 Kotlin 插件之间的交互性。目前为止,如果你试图停留在两方交锋边缘的话,它可能每过一会儿就会崩溃。

言下之意,每个安卓开发者都应该关注一下这门语言或者,最好是尝试一下吧!

观点:
每个安卓开发者都应该关注一下这门语言,甚至最好是尝试一下吧!

15. Iñaki Villar

Iñaki Villar
Iñaki Villar 在 5 年前就是一名安卓开发者,他曾今在西班牙开发银行软件有三年之久。之后他搬到爱尔兰为航空公司和 GSM 运营商开发软件。现在他定居泰国为 Agoda 工作。他是一名谷歌开发专家,活跃于安卓社区。

Kotlin 给安卓平台带来了新的酷点子。这不仅仅只是意味着使用其他语言来编写一些类或者 Activities 。

目前我们正在把自动化框架部署到 Kotlin ,我们非常享受用声明的方式定义我们自己的 DSL 的过程,这让开发人员和质量评估员能够写出更加流利的测试代码。

观点:
Kotlin 给安卓平台带来了新的酷点子。这不仅是意味着用其他语言编写类。

16. Dan Lew

Dan Lew
Dan Lew 是 Trello 的一名安卓开发者,一名极客玩家。

Kotlin 能够在不牺牲安全和性能的前提下写出比 Java 更加简洁和易读的代码。 Kotlin 是编译成二进制代码的,所以它能保持和 Java 一样的效率。它和 Java 一样能够在编译时进行代码检查(还有更多,比如内置空指针检查等)。更重要的是, Kotlin 的语言特性和标准函数库能写出更加简洁、有效的代码。

此外, Kotlin 的生态系统很强盛。很自然的, JetBrians 的工具支持也非常好。除此之外,这门语言一直在维护和提升之中。 JetBrains 在每次更新时也都没有打破 Kotlin 的兼容性。而且, Kotlin 能友好地和 Java 互动,这使得从 Java 迁移到 Kotlin 变得很容易。

最后,作为一名安卓开发者,对于我的选择来说还有一个很重要的理由是: Kotlin 能独立于操作系统进行更新。由于 Java 的功能是绑定在安卓对应系统上的,所以你经常会错过一些新的语言特性和标准的 API 库。恰恰相反,你立刻就能采用所有 Kotlin 新版本刚发布时的新特性。

观点:
Kotlin 能够在不牺牲安全和性能的前提下写出比 Java 更加简洁和易读的代码。

17. Enrique López Mañas

Enrique López Mañas
Enrique López Mañas 是一名谷歌开发专家,独立 IT 顾问。他从 2007 年就开始学习并从事手机技术开发工作。他是一名狂热的开源社区和免费开源软件贡献者,在德国跻身于 Java 开源贡献者中的前十名。他是谷歌 LaunchPad 加速器的成员,他积极参与其中,影响了来自全球各地的数百家最好的创业公司。他也是大数据和机器学习的爱好者。

我自从成为一名 Java 成员后就自然而然的开始了安卓软件开发。 Kotlin 这门语言出现后,我就决定做一些尝试。在那个时刻确实是一个充满意义的选择。对于我个人而言,要从 2009 年那个时间开始。

Java 诞生于 1995 年。从那个时候开始陆陆续续发布了一些版本更新,扩大和提升了一些基础的特性,一直到现在的 Java 8 版本。 Java 是在 22 年前设计的,并考虑了整个技术发展的演进,一直到现在都还有一些难以忽略的问题。作为一个开发者,我经常会尝试其他的语言。其中最值得一提的解决 Java 这些问题的一门语言是 Scala 。而另一个转折点是我看到了 Swift 这门语言。我也在 iOS 上编写代码,我注意到了 Swift 是如何克服像空异常这类很明显的问题的方式,这让我关注到了在 Java 中经常被忽略的一些问题。

基于它的特性,安卓天生支持所有 Java 7 版本的功能,但是只支持一部分 Java 8 所展示的特性。这意味着减速了安卓生态系统平台的发展。好在 Kotlin 现在可以帮助填补这个空白了。

Kotlin 是一门现代语言(版本 1.0 发布于 2016 年 2 月份)。它的最初目标就是解决 Java 中的不足,就如同 Scala 做的,不过它只解决了一部分现有的问题(比如编译时长)。 JetBrains 在 Kotlin 中做了一些了不起的事情,而且上个版本中在编译时长这点上有很大的进步。作为 Kotlin 新手,我当初所担心的问题现在在我心里都已经有了解答:

—— 和 Java 的互操作性: Kotlin 能够直接和 Java 的类进行交互。这是一个基本出发点:我的确需要重用我的代码库并应用到 Koltin 当中。

—— 转换工具:尽管不能盲目的相信 Java 自动转成 Kotlin ,但是它确实做的非常好了。当我在转化 Java 类库的时候,我想到的结果是能够让我很轻松地重用 60%-70% 的代码。我的目标并不是想一夜之间把整个 Java 代码库转换成 Kotlin 的代码,但是只要一步一步的照做,那么在应用了自动转化之后,进行代码修改的时间是最少的。

对于 Kotlin 自身来说,在使用 Java 多年后,能够尝试一些新鲜的事物会是一种非常美好的体验。如果你是一名 Java 程序员,那么 Kotlin 的语法会让你感到非常熟悉自然的。又或者你是一个 Swift 程序者,你也会有同样的感受,而且你会有一个优势就是更加容易理解其中的一些概念,比如可选空等。那些吸引我的 Kotlin 特性有以下这些:

—— 可选空值:这能够让你的产品开发避免三分之二的异常,非常具有吸引力。而且在你使用 Kotlin 之前你根本不会意识到 Java 是那么的一团糟。

—— 函数式编程:对的, Kotlin 是支持函数式编程的,和 Scala 一样。

—— 默认值和命名参数:这又是那些你如果不去尝试,你就根本不知道你会错过的东西。在 Kotlin 中你可以为函数的参数设置默认值,同时给每个参数一个命名。这让代码的易读性和可读性呈指数级地提升。

—— 智能转换:是不是对先用 instanceof 然后再做转换的做法累觉不爱了?这些看上去是非常冗余的,但是按道理也应该很容易被避免。现在 Kotlin 自动为您做到了。

还有很多 Kotlin 值得讨论的特性,继续深入的话都能够分条别类地写成长编大论了。概括地说: Kotlin 是一门提升和完善 Java 缺陷的一门语言。他的学习曲线对于 Java 开发者来说非常缓和。这不是一个 要么/或 的问题,因为你完全可以在你的 Java 基础上同时使用它们俩。 Kotlin 将大大提高你的效率,从中长期来看这会让你成为一名更加优秀的程序员

观点:
Kotlin 将大大提成你的效率,从中长期来看这会让你成为一名更优秀的程序员。

00. 某某大神级人物

某某大神级人物
某某大神级人物是谷哥一名技术探索专家,精通 AE 、 PS 、 AI 、 PR 等的安装和卸载,熟练 Java 、 Ruby 、 Swift 、 Python 、 Objective-C 等的单词拼写,掌握 Windows 、 Linux 、 MacOS 等系统的开关机,并同时掌握 VA 、 VC 、 VD 以及 VE– 、 B# 、 SBython 和 JB 语言的大神级人物,目前正在 Psychiatric Syndrome 公司开发自己独特的产品,使用的是 Cobol-R 和 Lisp-C 语言混合开发。

哦,啊,你好,我有说过吗?我很喜欢 Kotlin ,对,是的,但是还是不能撼动 PHP 的地位,确定。它真的,噢,对,他真的算是一门好语言!我同意,我同意。

但是,我却不赞同你过早的使用它或者你可以采用一种观望的态度,你可以让其他人先踏入坑,你再踩着他们进场,难道不是更好吗?

当然,这样做你也就不至于浪费很多时间,人生苦短,都用 Python ,是吗?至少,因为我觉得 Kotlin 还不够强大,还不够成熟,而且,对的,很重要的一点,我想说的是,噢,对,你难道不知道吗?它是,是这样的,它居然没有一个靠谱的静态代码分析工具。这让我这种在上千人面前工作的人很懊恼!

这是不可以接受的,谷歌也不会接受这种语言,这让安卓开发者们很难堪,是的,对的,你没猜错, Kotlin 不会成为主流语言。

我第一次看到 Kotlin 的时候,我就觉得这门语言有能力成为热门讨论的话题语言,但是,请相信我,这会让你很囧,真的,它那函数表达式写起来非常像 Callback Hell ,噢,知道 Callback Hell 吗?我不想在这里解释很多,你可以谷歌或者百度搜索,这是一种地狱,你会在写代码的时候感觉自己陷入了地狱之中,真是,真是很不好,很不好的一种体验,难道不是吗?

有人说他是空安全的,我不认为,你会认为加了一个 ? 就是空安全了吗?至少我不这么认为,这种看法太过于草率,是的,太草率了,如果真的加了一个问好或者叹号就能达到空安全的目的,那么你是不是说价格破折号就能达到 DEBUG 的目的?显然这太滑稽了。

我承认,这门语言有点现代化,比如我就喜欢他和 Forthron 友好的交互性,它能转化成 VB 语言,是世界上除了 PHP 和 Python 之外最好的语言,他还能生成 Object-B 语言,对的,你没听错,它能生成在电视机、电冰箱、空调上使用的 Object-B 语言(对,他们都是 Object ),他不需要打分号,我不得不说这是一种突破,我曾经写的代码里有三分之一的代码量是分号,这是让我唯一感到高兴的一个新特性。难道我错了吗?噢,好吧。

够了,够了,我不掩饰我喜欢 Kotlin 语言的扩展功能,它甚至能把 Int 扩展成接口,把数字扩展成 38 进制,还能把异常扩展成工具类。这是现代语言应该有的特性,就像 SQL 一样能够写 GUI 也能够写服务器。总而言之,它很像一门现代语言,我不得不承认。

即使如此,我并不推崇它,世界上还有更好的语言,你说不是吗?像 PHP 这种世界级流行语言,它能做所有的事情,能写类、能扩展接口、能写出优雅的函数、能够不断更新、可以写界面也可以写后面,能泡妞,能下饭,还能够带你上天堂。所以,我们可以观望,有时间我们可以更多的学习 AutoCAD 、 AutoDraw 这种高级自动化语言,这不是更美好吗?你说是吗?

噢,对了,我也许忘了,对对,但是我不能忘,你知道 Swift 吗?他是 MAC 公司的现代化语言,我想你应该知道,现在已经在开发版本 4.0 了,我很欣赏 MAC 公司的这门语言以及他们的员工所做的一切,但是,对,但是, Kotlin 才发布 1.0 版本, Kotlin 明显有抄袭 Swift 的可能,你可能已经想到我要说什么了,对的,如果你继续使用 Kotlin 可能会面临被 MAC 公司起诉的危险哦,嗯,那很不值得,我的天啦。

总之,对,我是不是说太多了?噢,没关系,我还好,你是不是很累了?你是不是随机采访了 17 位码农对 Kotlin 的看法?噢,我的天!他们对你说了什么?他们都做了什么?噢,该死,他们之中居然连一个戴眼镜的近视眼都没有看到,他们肯定没认真面对过显示器吧?他们怎么能对你发表意见呢?好吧,你还好吗?噢,我很好,对,没关系,真的没关系,什么?我的主治医生来了吗?噢,那不好意思,抱歉,我想说我很抱歉,再见,我的朋友!希望今天的话能对你有益!再会!

观点:
无观点……

三、写在最后

我已经在圈子里看到有朋友翻译过这篇文章了,我也提到了,他的翻译虽好但是每位谷歌大牛的简历确是贴图,如果你对谷歌专家称号的大牛怀有敬仰之情的话,我觉得就算我翻译的一般,你也会有限考虑我的文章的,哈哈。 sunglasses

作者: Antonio Leiva
我很喜欢 Kotlin ,我已经学习 Kotlin 好几年,在安卓开发中采用并理解所有这些知识,那样你可以不费吹灰之力地掌握它。Twitter | Google+ | Linkedin | Github
原文地址: https://antonioleiva.com/google-kotlin/


Comments: