Perl 6 大约在 2015 年圣诞节前后公开发布,从那时起,我听到了很多关于它的问题,来自 Perl 社区内外的人们。Jeff Goff 是 Perl 社区的资深成员,也是一位好友,他一直深度参与 Perl 6 的开发,所以我向他询问了一些我从其他人那里听到的问题。
Jeff 今年一直在会议上就此主题发表演讲,包括即将到来的 OSCON London 大会。从我对他的采访中获取内幕消息。
关于 Perl 6,您希望每个人都知道什么?
主要是 Perl 6 已经投入生产环境,并且他们正在修复 20 年来积累的问题。此外,Inline::Perl5 让您可以运行所有 170,000 多个 Perl 5 模块,同时让您可以继续进行新的 Perl 6 开发。
Perl 6 的哪些必备功能尚未以某种形式反向移植到 Perl 5?
并发和完整的 Unicode 支持。
新用户不断启用线程并遇到涉及多解释器模型的问题,然后他们进入支持频道并被告知“不要这样做”。Perl 6 比几乎所有其他语言都支持更完整的 Unicode 规范,虽然 Perl 5 已经领先于大多数其他语言,但借助 Perl 6 的一些提示,它可以超越它们。
从 5.18 版本开始,子例程签名已经足够日常使用。 Moose 及其同类产品以及角色和适当的继承机制负责处理 Perl 5。虽然目前还没有模块可以将 Perl 6 语法忠实地反向移植到 Perl 5,但真正使语法工作的特性根本无法反向移植到 Perl 5 核心。可以模拟 Junctions 和 hyperoperators,但缺乏强/渐进类型使得移植变得困难,这也是 ~~
运算符在几个版本后从 perl5 中移除的原因。
对于您自己的编码,您对 Perl 6 的哪个功能最满意?
我终于可以创建适当的自定义运算符了,一旦我当前想要完成的项目堆栈足够短,我将添加足够的 APL 运算符,使我的方程(见下图)使用 2 到 97 之间的质数填充 @primes 数组。我也在语法方面做了很多工作,但我有计划将自定义运算符和重新定义 Perl 6 自身内部语法的能力结合起来,所以我对这两者都乐在其中。
大型公司应该继续使用 Perl 5,还是有办法让他们切换到 Perl 6?
我打赌 Inline::Perl5 和 Perl 5 的配套 Inline::Perl6 模块,以及 BlueTiger 和 Perl::ToPerl6 等工具,将是长期迁移到 Perl 6 的方法。借助 Perl::ToPerl6 和 Inline::Perl5,我已经成功地将 Dancer2 的大部分测试套件迁移到 Perl 6。使用这些工具,我可以启动一个全新的 Perl 6 应用程序,它使用最初经过实战检验的 Perl 5 模块,并通过允许用户一次替换一个 Perl 5 模块及其 Perl 6 等效模块,为用户提供升级路径。(完全披露:我是 Perl::ToPerl6 的作者。)
您为什么会参与 Perl 6?您在 Perl 社区已经有一段时间了。
“一段时间”有点轻描淡写。我想我大约在 1996 年左右写了我的第一段 Perl 代码?所以断断续续地有 20 多年了。
当我最初参与 Perl 6 时,它被称为 Parrot。我大约在 2002 年从 Simon Cozens 手中接管了发布管理职责。我当时工作的公司允许我每周花一天时间从事 Parrot/Perl 6 的工作,当那家公司倒闭时,我可用的空闲时间也随之消失了。
快进到 2013 年。我开始阅读有关 Perl 6 项目的最新进展,从适当的子例程签名开始,到内置的解析工具,以及适当的宏工具(我们仍在努力开发中,我的最新工具正在解决)。拥有适当的多核和并发支持也很有帮助。我在 Perl 5 领域花费了足够的时间,知道什么会让新手感到困惑,尤其是在这些美元符号到处都是的情况下,以及为什么子例程调用看起来仍然像刚从 Bash 引起的梦中醒来一样。
人们需要了解这些功能,但我没有在 Perl 6 论坛之外看到太多关于它的交流。实际上,这并不是任何人的错。社交媒体网站现在正在将他们的推荐“算法”强加给整个人群。(“你看过猫的照片?太棒了,和这些喜欢猫的人交谈吧!”用户只是点击分享,并且永远不会冒险走出那个孤岛。)并且有些人正在小型会议上发表包含信息的论文,并在 Perl 6 小组之外分享想法。但我看到了增长的空间,可以将事物开放给更广泛的领域。
11 条评论