Perl 6 必备功能

4 位读者喜欢这篇文章。
One lightbulb lit out of several

Opensource.com

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 自身内部语法的功能合并,所以我对两者都乐在其中。

My Perl equation

大型公司应该继续使用 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 6 等效模块替换一个 Perl 5 模块,为用户提供升级路径。(完全公开:我是 Perl::ToPerl6 的作者。)

你为什么参与 Perl 6?您已经在 Perl 社区工作了很长时间。

“很长时间”有点轻描淡写了。我想我第一次编写 Perl 代码是在 1996 年左右?所以断断续续 20 多年了。

当我最初参与 Perl 6 时,它被称为 Parrot。我在 2002 年左右从 Simon Cozens 手中接管了发布管理职责。当时我工作的公司允许我每周花一天时间在 Parrot/Perl 6 上工作,当那家公司倒闭时,我可用的空闲时间也随之消失了。

快进到 2013 年。我开始阅读有关 Perl 6 项目的内容,从适当的子例程签名开始,到内置解析工具,以及关于适当宏工具的提示(我们仍在努力,我的最新工具正在解决)。拥有适当的多核和并发支持也很有帮助。我在 Perl 5 领域花费了足够的时间,知道什么会让新手感到困惑,特别是关于这些美元符号到处都在做什么,以及为什么子例程调用仍然看起来像刚从 Bash 引起的梦中醒来一样。

人们需要了解这些功能,但我没有在 Perl 6 论坛之外看到太多关于它的交流。这真的不是任何人的错。社交媒体网站现在正在将他们的推荐“算法”强加给整个人群。(“您看了猫的照片?太好了,与这些喜欢猫的人交谈!” 用户只需点击分享,永远不会冒险走出那个孤岛。)并且有些人正在小型会议上发表包含信息的论文,并在 Perl 6 组之外分享想法。但我看到了增长的空间,可以将事物开放给更广泛的领域。

User profile image.
Ruth Holloway 长期以来一直担任系统管理员和软件开发人员,很久以前在 VAX 11/780 上开始了她的职业生涯。到目前为止,她的职业生涯的大部分时间都在为图书馆的技术需求服务,并且自 2008 年以来一直是 Koha 开源图书馆自动化套件的贡献者。Ruth 目前是 Clearbuilt 的 Perl 开发人员和项目负责人。

11 条评论

我真希望一些大型组织(如 Booking.com)开始赞助 Perl。我们仅凭贡献就做了很多事情,想象一下当它开始受到关注时会有哪些改进。

Chankey,

Perl 5 和 Perl 6 都受益于 Booking.com、Craigslist、LiquidWeb 和 cPanel(我现在工作的地方)等公司的赞助,以及来自世界各地小型公司和咨询公司的众多赞助。当然,更多的赞助会更好,如果您知道有哪家公司是 Perl 的重度用户并且愿意帮助赞助 Perl 开发,请让他们与 Perl 基金会联系,网址是 http://www.perlfoundation.org

回复 ,作者:Chankey Pathak(未验证)

Ruth-

我希望听起来不会完全粗鲁(因此非常不 Perl),我想指出我曾两次向 Perl 基金会捐赠了少量资金。好吧,我不能成为赞助商,但心意最重要,对吧(好吧,不,我知道,但是...)。我的捐款都没有收到简单的“谢谢”。

小贡献者不应期望奉承,但我认为一句简单的“代表 Perl 社区……”就足够了。我甚至愿意为了事业的利益承担这项琐事。好吧,我现在就溜走了....

回复 ,作者:druthb

很多时候这只是一个询问的问题。正如其他人所指出的那样,Perl 有很多支持,但其用户往往不如 Python 或 Ruby 帮派那样爱发声。现在是时候开始改变这种状况了,即使我个人是一个严重的内向者,我也在努力走出去,即使不能带路,至少也要向人们展示这是可以做到的。

回复 ,作者:Chankey Pathak(未验证)

我喜欢 Perl 5,但我们正在开发课程材料,以帮助孩子们和青少年参与学习 Perl 6 编码。我的理由是,对于刚开始学习编码的人来说,语言的“修复”是值得的。Perl 社区需要培养新的兴趣,但大多数有 UNIX 和 Linux 经验的人最终都会发现 Perl。 :-) 很高兴看到更多早期接触 Perl 6 的途径!

第一次听说 Inline:: 模块。谢谢!

不客气。为想要从 Perl 5 横向迁移到 Perl 6 的人员提供迁移工具非常重要,其中一个工具是重用现有代码的能力。例如,Perl 6 有 Bailador 框架,它有点像 Perl 5 中 Dancer2 的克隆。问题是很多人(实际上我敢说几乎所有人)都使用 Template Toolkit 来生成他们的 HTML 内容。一旦我完成*当前*项目,我将要做的是围绕 Template Toolkit 做一个包装器,让 Bailador 用户可以在 Perl 6+Bailador 中使用他们当前的 .tt 文件,而无需求助于现有的 Template6。Template6 很棒,虽然它满足了 TT 用户的大部分需求,但您需要重写现有的 Perl 5 .tt 文件,这将阻碍采用。所以我将首先包装 TT,然后完成我正在开发的完整 Perl 6 替代品。

回复 ,作者:sethkenlon

对于那些有兴趣学习 Perl 6 的人,这里有很多资源:http://perl6.org

Perl 中的 APL 运算符?请让我的心平静下来!您认为使用 Perl 6 作为宿主语言完全实现 APL 或其衍生语言(A+、J、K)是否可能?

Creative Commons License本作品已根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.