采访:试图捕捉 Paul "LeoNerd" Evans

Paul “LeoNerd” Evans 是一个 CPAN 作者,博客作者,以及 Perl 核心贡献者。他在 Perl 5.32 中引入了 实验性的 isa
操作符,并在未来的版本中引入了 try
/catch
语法。
简单介绍一下你自己和你的背景,你愿意分享什么就分享什么。
让我们看看——我将按时间顺序相反的方式来做。
目前我是一个自雇承包商,我的时间在 Perl 和其他计算机相关的事情以及电子学之间分配。我在做那之前的大部分工作都是基于 Perl 的,唯一的例外是一个名为“Google”的小型互联网创业公司——你可能听说过?遗憾的是那里几乎不做 Perl。
你是如何第一次接触到 Perl 编程,然后后来又如何开始为 Perl 的核心进行黑客攻击的?
我在大学最后一年时稍微接触了一些,当时我应该在学习类型系统和其他学术知识,但我发现黑客攻击 C 和 Perl 代码片段更有趣,这让我的导师们非常失望。我的第一个工作是在 Perl 上,从那以后我就一直坚持下来了。
核心黑客攻击都是从编写 Perl 代码开始的,到编写模块,再到不可避免地需要为这些模块编写一些 XS 代码。你越深入这个领域,就越会发现你需要了解解释器内部的工作方式。我在这方面花费的时间最多的可能是制作 Future::AsyncAwait 模块——它必须与解释器核心紧密集成,以便成功挂起和恢复函数运行,这是 async
/await
语法的基础。
您于2016年首次将 Syntax::Keyword::Try 模块上传到 CPAN,当时(现在仍然如此)有许多具有类似功能的其他模块。您在 Syntax::Keyword::Try 文档中比较了它们的差异,但有没有哪些特定问题激发您贡献另一个模块?
两个原因。第一个原因是出于我自己的需求而编写的,这是一个学习练习,看看我是否能理解和使用最近添加到 Perl 中的这个新奇的“自定义关键字”机制。一旦我有了工作原理的证明概念,我很快就找到了如何正确编写它的方法——在这个意义上,try
和 catch
块的正文是真正的块,而不是像当时所有的纯 Perl 和自定义语法模块那样伪装成闭包。这意味着它的调用开销更小,不与 @_
交互,与 return
和 next
/last
/redo
交互得更好,还有许多其他优点。从那里开始,我没有花费太多时间就拥有了我觉得比之前任何东西都有真正技术优势的东西,所以我尝试鼓励其使用。特别是 Freenode 的 #perl 频道 在帮助这项工作中发挥了非常重要的作用,他们将其推荐给新用户。
最近,您主导了将本地 try/catch 语法添加到本地 Perl,并发布了 Feature::Compat::Try 模块,为早期版本提供相同的语法。目前,前者是通过特性保护来启用的;您预计什么时候这不再成为问题?这会对使用其他 try/catch 语法模块的代码造成问题吗?
我认为我们还需要一段时间才能看到默认启用它的 Perl,但我希望它很快就能进入带编号的版本包中。也就是说,我希望仅仅
use v5.36;
就足以启用 try
语法,如果我们决定将主要版本提升到 7,那么这将持续有效——只需说
use v7;
就足够了——再加上我希望到那时看到的其它所有花哨的有趣功能。
您如何看待 Syntax::Keyword::Try 未来的作用?它将成为未来原生 Perl 异常特性的试验场吗?
它已经是这样了。Syntax::Keyword::Try 有更多功能,不仅仅是我在 5.33 中移植到核心的“最小可行产品”部分。两个主要的事情浮现在我的脑海中——类型化的异常分派,以及 finally
块。我最近一直在研究一个更通用的 finally
的 defer
语法。
如何处理类型化分派的问题是一个更普遍的问题,需要在更广泛的语言环境中解决——可能包括对签名、match
/case
语法、变量或对象槽类型断言等的考虑...
除了 Perl 中的异常之外,您接下来有什么计划?我一直在阅读您与 Curtis “Ovid” Poe 合作的工作,以及您的 Object::Pad 模块——您愿意谈谈这个吗?
是的,目前对象系统似乎很有趣——所以我的一些想法是关于 Corinna 和 Object::Pad。但我还在做其他一些事情。我已经在上文中提到了 defer
。此外,我还有一些关于 match
/case
方向的想法,以及一些其他的小点。这些最初将作为 CPAN 模块完成,以实验这些想法。我在最近的 “Perl in 2025” talk at FOSDEM 中提到了许多这些。
标签
Mark Gardner
Mark 帮助专业 Perl 开发者构建现代、有纪律的应用程序,以便他们可以成为能够写出易于维护的代码的专家。他在 PhoenixTrap.com 上写博客,并在 HostGator 担任软件工程师。
浏览他们的文章
反馈
这篇文章有什么问题吗?请在 GitHub 上打开一个问题或拉取请求来帮助我们。