RubyRussia会议发言人Marcus Schirp的访谈

大家好! 一个多星期后, RubyRussia会议将在莫斯科举行。 在今天的采访中, Evrone开发人员Mikhail Morgunov与我们的一位发言人Markus Shirp进行了交谈 ,他是受欢迎的Ruby Mutation Testing工具的创建者。


第一个问题是关于Mutant的 关于此工具,我们需要了解什么? 关于RubyRussia的报告将涉及什么?

我将讲讲突变测试工具-Mutant的故事。 我想向听众介绍一些关键概念:人们将了解覆盖范围的不同水平,含义和价值。

这将阐明我们习惯并认为正确的Ruby中的那些内容,但实际上它们存在问题。 因为Ruby常常给我们提供了一个很好的机会,使自己陷入困境。

您是如何开始开发突变体的?

这个故事与我在DataMapper上的工作及其DataMapper 2的下一个实现有关,最终被称为ROM。 Projectlide Dan Kubb编写了一个名为axiom的关系代数库来支持这些新发展。 当他写公理时,他使用了“有限发展”策略。 它包括许多用于度量和突变测试的工具。

我们随后用于突变测试的工具称为Hackle。 他在操作和概念上存在某些缺陷。 一旦我想到:“该死,我什至不会尝试修复它! 让我们编写一个新的版本,并解决DataMapper2中存在的扩展突变测试的所有问题。”

那是5年前或6年前,因为Mutant经历了几次迭代。 所有这些都与我编写开源的愿望无关,而与我从事的商业项目的要求有关。 因此,Mutant的开发高度依赖于我的咨询活动。

每次启动一个新的Ruby项目时,我都需要确保每段代码。 而Mutant是我用于此目的的工具。

也就是说,商业客户想使用Mutant吗?

是的 事实证明,您所看到的所有功能都是商业客户最近几年要求我添加的功能。 有些功能不是公开版本,因为客户端没有授予我打开其源代码的权利。 但是有时候客户会说:“如果有人从中受益,那是没有问题的,”我真的很喜欢。

此刻,我离开了DataMapper2。 我从来没有写过有趣的功能。 这些仅仅是商业用途的副作用。

我个人并不喜欢Ruby,这只是我的工具。 突变是提高Ruby效率的一种方法。 输入Mutant的门槛很高,但是当您开始时,它会很有帮助。 需要培训是可以忍受的。

这是使用免费宝石时事物的本质:)

95%的免费宝石只是爱好项目。 它们不适合商业用途。 作者使它们出于个人利益。 我不怪他们。 但是我建议商业项目的开发团队在从RubyGems中获取一些东西时要牢记这一点。

我只在GitHub上阅读README Mutant文件 但是到目前为止,我了解得很少。

出于这个原因,我需要花更多时间编写自述文件和其他入门级文档。

出于个人原因,我在社区沉默了3年:我还有两个孩子,我搬到了另一个国家。
RubyRussia是我休息后可以与社区交谈的第一场会议。 我想将我在准备报告和研讨会上花费的时间用作补充文档的材料。

等待我们的是什么?

10月6日将进行有关Mutant的讨论,10月7日将举行研讨会。 它将基于来自使用Rails和rspec的开源项目的实际示例。

据我了解,您使用其他编程语言,而不是Ruby?

这并非完全正确。 我经常使用Ruby,但前提是有充分的理由。 通常,这是对遗留应用程序的挽救,这些遗留应用程序将在其自身代码的压力下崩溃。

在这种情况下,您不能一步一步地替换Ruby。 做增量重构/“扼杀” Ruby代码是我的主要工作。 在此过程中,我的手处于Ruby的肘部,这里Mutant是链接重构/修改周期的主要工具。

您喜欢哪种语言?

主要是Haskell。 对于我来说,就可用性和适用性而言,这是开发商业价值程序时最平衡的语言。 Haskell类型检查器可立即保证许多属性。 我在Ruby中必须争取的属性。

还有其他几种很酷的语言和扩展。 我认为从属类型将“通过类型检查后的正确性”提高到一个新的水平。

您认为Ruby和Rails有未来吗?

Ruby和Rails的入门门槛很低,这可以帮助人们迅速达到应用程序赚钱的地步。 人们相信Ruby和Rails具有这种品质,但是这些技术有未来。

一个小小的异端声明:由于语言和框架的创建者做出的选择,Rails应用程序无法增长,原因是框架继承了复杂性。 但是,如果您有商业理由要这样做,则可以执行此技术职责。 只是有一个现成的计划来偿还这笔债务。

您如何看待Rust?

我真的很喜欢他 现在我不经常使用它了-没有充分的理由,因为与我拥有的其他选项相比,正在运行的项目无法从Rust的优势中获得任何收益。

我主要做后端开发。 或者我们称其为“具有主题逻辑的大规模RPC”。 首先,重要的是保证程序的正确性,而其次才是性能。 Rust在计算上非常高效,但为此需要手动控制低级零件。 这需要花费时间,最好将时间用于优化高级I / O模式(RPC分组,最小化往返行程,验证事务属性等)。 最好在以语言为代价优化单个基元之前执行此操作,这给了我更多的优化机会。

如果我要进行更多的计算工作,例如视频编解码器,Rust将是我选择的工具。

还有最后一个问题。 您对新手程序员有什么建议?

作为一个新手程序员,找到一个宠物项目并将其与编程之外的兴趣相集成。 在学习编程开始赚钱之前,必须将其带走足够长的时间。

非常有趣! 那应该工作!

是的,这就是我的开始方式:)

大提示! 感谢您的采访! 在Ruby俄罗斯见。

我们也在会议上等你! 顺便说一句,剩下的门票不到30张,因此,如果您决定去,我们不建议推迟注册。 如果您想更深入地研究Mutant,那么我们将在10月7日的研讨会上等待Markus。 该网站上的所有详细信息。

您可以在hype.codes上阅读英文原版

在这里要感谢支持俄罗斯主要Ruby活动的伟大公司:

一般合伙人-Toptal
黄金合伙人- 盖特库克帕德
银牌合作伙伴-InstamartUCHi.ruJetBrainsQlean
铜牌合作伙伴-BookmateInSales

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


All Articles