“社区制定标准至关重要”:Marchin Moskala关于Kotlin



几年前,有很多“看一看有趣的Kotlin语言”博客文章,解释了这些基础知识。 在2019年,您不再需要阅读基础知识,但是现在出版物以完全不同的格式出现。 多年来一直在用这种语言教人们的Marcin Moskala现在正在出版“有效的Kotlin”这本书-即不仅是“如何编写Kotlin”,而且是“如何以最佳方式编写Kotlin”。

不久Marchin将会在Mobius 向我们提出报告 。 因此,我们向他询问了有关新书,报告,对Kotlin人的培训以及有关该语言的行业动态的信息。 关于“有效”和“有效”这两个词之间的区别。

-首先,请向我们介绍一下您自己。 在开始教育人们和创建Kt之前,您做了什么? 学院

-我从小就开始编程。 我从10岁起就开始使用Visual Basic,因为我想做游戏。 后来,在培训期间,我为自己找到了Android,并致力于Android开发。 在接下来的几年中,我为三星,Warta和mBank(作为Apreel的雇员),Docplanner和Gamekit等公司工作。 并且还发现了科特林并坠入爱河。 我开始发表有关他的演讲,写文章和书籍。 不久,公司开始求助于我,因此Kt出现了。 学院。

-您是否拥有JetBrains合作伙伴身份,这意味着什么? 您需要满足什么要求? 您经常与JetBrains聊天吗?

-主要要求是充分了解Kotlin并传播有关知识。 一个人也必须是可靠的,并且如果知道他就不会是多余的。

我与Kotlin小组的一些成员以及布道者保持联系,但是我不确定这与伴侣的身份有多少关系。 通常,此状态是JetBrains报告某人知道某项特定JetBrains技术的一种方式,并且该人提供的证书很有价值。

-您教科特林人,因此您会从不同的人那里得到很多反馈和疑问。 他们说什么,最常问什么?

-人们真的很喜欢他。 他们特别注意到它的简洁性,并且非常容易做到这一点。 并且它们的顶级函数和lambda表达式中的隐式接收者(隐式接收者)感到担忧。 在我看来,第一种选择没有问题,但是第二种选择又如何呢……我认为人们正在过度使用它,而我们才刚刚开始意识到问题的严重性。

-不同人的Kotlin代码中是否存在任何常见的错误或反模式?

-我认为这只是隐藏收件人的一种过度渴望。 好吧,您知道,DSL内的各种DSL,都在内部应用……越来越多的接收者秘密地使用它。 编写代码时很棒,但阅读时却不是。

-最初,每个人都是从Java来到Kotlin的。 现在,您需要教一些根本不懂Java但想学习Kotlin的人吗?

-是的,我训练了很多JavaScript和Swift开发人员,一个摇动团队,甚至一个C语言开发人员,对于Kotlin来说,这是一个巨大的飞跃。 Kotlin还对pythonists进行了很多思考-我希望他们也加入进来。

-您会推荐在2019年学习Kotlin作为第一语言吗? 还是初学者仍然需要处理Java,所以会很难吗?

-如果有人想从事Android开发,绝对推荐。 如果我有更多的时间,我会写一本关于现代Android开发的书,它完全没有涉及到起源,而是立即提出了新的方法:Kotlin,AndroidX,Room,WorkManager,ConstraintLayout和带有ViewBinding的MVVM(以及不久之后的Jetpack Compose) )...如果没有Java,支持库,DatabaseHelper,AlarmManager,我们可以过得很好。

后端更加复杂,但是在现代Kotlin框架(例如Ktor)中,后端也令人兴奋。 因此,对于学生来说,这也是一个有趣的选择。

-在学习中对不同的语言的评价不同:在这方面,Python通常受到称赞,Java有时受到批评。 与Java相比,教学Kotlin有什么感觉?

-一方面,在科特林,做某事要容易得多。 当您教Kotlin时,将多个类和函数放在一个文件中的功能大有帮助。

另一方面,Kotlin具有比Java更多的功能,因此学习它们需要时间。 尽管在某种程度上,这些习惯用法仍然体现了Java的重复模式:例如,数据类,对于Java的初学者来说将是困难的,而对于Kotlin而言,添加数据修饰符就足够了。 我想说学习Kotlin通常更有趣。

-有时Kotlin仅被视为“ Android语言”,但在其他领域也有雄心。 您从培训中看到了什么:移动开发人员对培训的所有需求,或者支持者也适用?

-一年前,几乎所有人都是针对Android开发人员的。 现在,我想大约有50到50。对Kotlin协程和有效Kotlin培训的兴趣也越来越高。

-关于有效Kotlin的问题:您的新书称为同一本书 ,而关于Mobius的报告是Efficient Kotlin。 这样的相似名称是否意味着新报告是对整本书论点的简短重述?

-编程中的“有效”和“有效”一词具有非常不同的含义,例如“安全”和“安全”。 关于大多数不同的最佳实践,“有效”更为笼统。 “高效Kotlin”仅涉及性能和内存优化,本书的第三部分专门讨论这一点。 对于Mobius而言,这更好,因为该会议以经验丰富的开发人员的高级报告而闻名。 报告时间有限;整本书无法覆盖其中。



-“有效的Kotlin”和“有效的Kotlin”原则适用于所有开发人员,无论他们在Kotlin上写什么,或者那里有什么特殊性?

-所有人:不仅是Android和后端,甚至包括那些使用Kotlin / JS和Kotlin / Native的人。

-“有效的Kotlin”这个名称立即让我想到了Joshua Bloch的“有效的Java”。 你的书看起来像她吗?

-有很多“有效X”格式的书,并且所有书都是基于同一原理构建的:以具体示例说明如何更好地编写代码。 我受到了有效Java的启发,其他人受到了有效C#,有效Python,有效C,有效JavaScript的启发。 但是对这些书没有严格的约束-所有这些书都是不同的语言,因此需要不同的建议。 虽然,如果您阅读全部内容,然后阅读《有效的Kotlin》,则可以将我的任何建议与其他“有效”书中的建议联系起来。 并且还提供了其他有影响力的书籍中的技巧,例如代码完成,干净代码,干净架构,计算机程序的结构和实现等。 我的目标是采用适合Kotlin的最佳技巧,并以最易懂的方式介绍它们。

-已经出版了许多有关Kotlin的书籍,但通常是以“如何在Kotlin上做某事”而不是“如何以最有效的方式来做”的形式出版的。 您是否认为社区一开始需要Kotlin的基础知识,但是现在它已经掌握了并且想要提高质量?

-是的,我认为社区已经发展到现在需要最佳实践的程度。 根据官方网站的数据,全世界已经有超过200万名Kotlin开发人员。 好多 已经有很多“如何...”格式的文章和有关Stack Overflow的答案,但是越来越多的人由于CTO不得不使用Kotlin,或者成为了它的第一语言。 现在设置标准至关重要,因为Kotlin允许很多,并且如果我们不阻止人们做疯狂的事情,他们可能最终会喜欢它并开始认为它令人困惑且难以理解。

-最佳做法始终是有争议的话题,人们对“最佳”的看法有所不同。 您的培训或报告中是否有讨论?

-是的,这些讨论启发了我写《有效的科特林》。 如我所说,人们经常在意某些功能。 我通常会听并让他们讲话。 结果,总是有可能就该功能的优缺点得出结论,然后由团队决定如何处理它。

“您正在出版第二本书。” 处理它们的过程是什么样的? 例如,您如何确定谁将发布它?

-我在《公约》上发表的第一篇论文。 我对合作并不满意,所以我决定使用LeanPub自行发布Effective Kotlin。 到目前为止,经验非常好。 我有出色的志愿者审核人员,优秀的设计师和不错的排版。 问题只出现在亚马逊的账户上,但是我希望我有时间在本书的最终版本发布之前进行处理。

-您建议开发人员写书吗? 这对开发人员有多大用处?

“上这本书,您需要知道它几乎肯定会比您预期的花费更多的时间。” 估计每页1-2小时。 而且,如果您是一名开发人员,那么与您本次编程相比,这本书带来的收益是不大可能的。 另一方面,您会学到很多东西。 要自信地写作,您需要仔细研究主题并真正理解每个论点。 这是一次独特的体验。

-最后一个问题:如果您可以在Kotlin中更改一件事情,那会是什么?

-我想我可以摆脱部队了。 他有点烦。 特别是在与其他语言进行交互时。

最后,回想一下本文中提到的链接。 《有效的科特林》一书在Leanpub上出版 ,Marcin的新报告的描述(他将于12月到达Mobius)在会议网站发布 (您也可以在此处查看其完整程序 )。

Source: https://habr.com/ru/post/zh-CN472000/


All Articles