首页 » SEO优化 » perlphp7技巧_Perl 连续前行Perl 7 将是下一代硬核老王点评版

perlphp7技巧_Perl 连续前行Perl 7 将是下一代硬核老王点评版

访客 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

它是默认带有当代行为的 Perl 5,将为往后更大的变革奠定根本。

来源:https://linux.cn/article-12349-1.html作者:Brian D Foy译者:Xingyu.Wang

(本笔墨数:5043,阅读时终年夜约:8 分钟)

perlphp7技巧_Perl 连续前行Perl 7 将是下一代硬核老王点评版

近日 召开的 Perl 大会是在云端举办的 ,在会上 Sawyer X 宣告 Perl 有了新的提高操持。
Perl 7 的开拓事情已经在进行中,但不会有代码或语法上的巨大变革。
它是默认带有当代行为的 Perl 5,将为往后更大的变革奠定根本。

perlphp7技巧_Perl 连续前行Perl 7 将是下一代硬核老王点评版
(图片来自网络侵删)

硬核老王:在经历了 Perl 6 失落败的巨大痛楚之后,Perl 社区终于从阴霾的心情中走出了。
但是失落去的黄金 20 年却是挽回不明晰,否则别说 PHP,都不会有 Python 什么事。
我认为,Perl 7 是一条自我救赎之路,该当,或许,会有新的 Perl 7、Perl 8 吧……

Perl 7 基本上是 Perl 5.32

Perl 7.0 将会是 Perl 5 系列的 5.32,但会有不同的、更合理的、更当代的默认行为。
你不须要启用大多数你已经设置过的默认行为,由于这些已经为你启用了。
这个大版本跳跃为我们一贯以来的事情办法和未来可以做的事情之间设定了一个界线。

硬核老王:可以理解为,Perl 是一个 Perl 5 兄弟们亲手打下的家族企业,而 Perl 6 是表面请来的职业经理人,结果经理人要对家族企业采取当代化管理,差点鸡飞蛋打。
现在好了,Perl 6 分家出去单过了,亲儿子 Perl 7 准备重振家业。

请记住,Perl 是一门“按我的意思做”的措辞,其默认行为可能便是你想要的。
在 Perl 4 和 Perl 5 的早期,这很随意马虎。
但是,几十年过去了,现在的天下更加繁芜了。
我们不断地往个中添加编译指令,但由于 Perl 对向后兼容的承诺,我们不能改变其默认行为。
现在,我们又回到了 C 措辞的旧时期,在开始做一些事情之前,我们必须包含大量的例行模板:

use utf8;use strict;use warnings;use open qw(:std :utf8);no feature qw(indirect);use feature qw(signatures);no warnings qw(experimental::signatures);

这一点在 v5.12 及往后的版本中稍有好转,由于我们可以通过利用设置最低版本来免去设置 strict 指令:

use v5.32;use utf8;use warnings;use open qw(:std :utf8);no feature qw(indirect);use feature qw(signatures);no warnings qw(experimental::signatures);

硬核老王:不可否认,Perl 二十年前如日中天,那个时候,不说终端运行的脚本,便是互联网上紧张的互动程序(CGI),也险些全是用 Perl 写的。
但是在风口时期它的紧张精力都在折腾 Perl 6,而 Perl 5 系列不但很多地方显得老旧,历史包袱也过重。
向前不能保持原有的风雅习气,向后不能跟上当代的软工理念。

Perl 7 是一个新的机会,纵然不指定版本,也可以把个中的一些行为变成默认行为。
Perl 5 仍旧有它的极度向后兼容的行为,但 Perl 7 将以最小的历史包袱得到当代实践的新生。
我个人希望 署名(signatures)功能能够入选到新的版本,但要让 Unicode 成为默认行为还有很多事情要做,以是你可能须要保留个中的一些编译指令:

use utf8;use open qw(:std :utf8);

你可能会丧失落一些你肯定不应该利用的垃圾功能,比如间接工具表示办法。
Larry Wall 说他必须为 C++ 程序员做点什么。

my $cgi = new CGI;# 间接工具,但在 Perl 7 不这样用了my $cgi = CGI->new; # 直接工具

但是,这个功能在 Perl 7 中并没有真正消逝。
它在 v5.32 中已经可以 通过设置关闭 了,但现在有了不同的默认行为。

Perl 5 怎么了?

没有人要把 Perl 5 从你身边夺走,它将进入长期掩护模式 —— 比最新用户版本的两年滚动支持韶光的两倍都要长得多。
这可能要从现在支持到十年后了(或者说 Perl 5 已经人过中年了)。

硬核老王:这样挺好,旧时期的连续留在旧时期,新生代的轻装前行。

什么时候开始?

这项事情现在就在进行,但你不须要担心,大约六个月后,才会涌现第一个候选版本。
我们的目标是在明年发布 Perl 7.0 的用户版本,并在这期间发布一些候选版本。

这也是一个随意马虎实现的承诺,由于 Perl 7 基本上便是 v5.32,默认行为不同而已。
没有大的重写,也没新的功能,只管目前一些实验性的功能可能会稳定下来(请把“署名”功能选入!
)。

CPAN 怎么办?

CPAN( 综合 Perl 档案网(Comprehensive Perl Archive Network))有近 20 万个模块。
人们正在利用的处于掩护状态的模块该当还能用,对付其它的模块会有一个兼容模式。
记住 Perl 7 紧张是 v5.32,以是你该当不须要修正太多。

你可能不知道 Perl5 Porters 险些会针对所有的 CPAN 模块测试其新版本。
这个用于检讨变动可能对 Perl 社区产生影响的工具已有很长的历史了。
作为一个模块的作者,我常常会收到来自不同人的,紧张是 Andreas Koenig 或 Slaven Rezić,他们说我的模块中的一些奇怪的东西可能会在新的 Perl 版本中出问题。
常日,我总是须要更新一些东西来办理这些问题。
追踪现有代码中的问题已经不是问题了。
修复代码该当不会那么繁琐,由于它仍旧是 Perl 5,但有更好的实践。

硬核老王:知道当年 Perl 为什么刁悍吗?有一个紧张的缘故原由是,Perl 有个无所不包的 CPAN 仓库。

会不会有一个单独的 Perl 7 的 CPAN?没有人说不能有,但是在跳转到 Perl 7 的过程中,开拓职员不肯望重做已经可以事情的东西。
这个变革该当是可以掌握的,只管即便减少副浸染。

其余,PAUSE( Perl 作者上载做事器(Perl Authors Upload Server))在过去的几年里得到了不少人的喜好。
这使他们可以更随意马虎适应未来的须要。
从事这方面事情的人都是履历丰富、才华横溢的人,他们让代码库变得更加随意马虎管理。

为什么要跳到大版本?

一个紧张版本可以与用户订立不同的左券。
跳转到一个紧张版本可以用新的默认行为来改变这个左券,纵然这与过去有冲突。
如果你乐意的话,总会有办法将所有这些设置都重置为旧的 Perl 5 默认行为。
不过在语法和行为上,Perl 7 的代码(大部分)仍旧是 v5.32 的代码。

Sawyer 谈到了 Perl 用户的三个紧张细分市场:

绝不会改变他们的代码的人利用新功能的人从零开始的人

Perl 5 的社会左券是 极度后向兼容(extreme backward compatibility),并且在这方面取得了惊人的成功。
问题是,极度后向兼容对那些不会更新代码的人有效,但对其余两部分人没有帮助。
要利用新功能的人不得不在每个程序中加入挺长的例行模板部分,而从零开始的人们则想知道为什么他们创建一个程序就必须包含这么多,才能不让 StackOverflow 上的人由于少了那些编译指令而呵斥他们。

硬核老王:迎合新血才是最主要的,让旧代码和旧人们自己过吧。

为什么是 7,而不是 6?

这个答案分为两部分。
首先,“Perl 6” 已经被现在称为 Raku 的产品所采取。
良久以前,我们认为这件非常年夜志勃勃的重写事情将取代 v5.8。
但末了,这件事并没有发生,Perl 措辞依旧连续过着自己的生活。

因此,下一个可用数字为 7。
如此而已。
这只是序列中的下一个基数。
版本跳跃这事情并不稀奇:PHP 直接从 5 升到了 7 —— 难道是我们从 PHP 社区偷学到的跳跃技能?看看一下历史上的其他奇怪的版本变革:

从 Solaris 2.6 到 Solaris 7从 Java 1.4 至 Java 5从以 Postgres 9.x 为紧张版本变成了以 Postgres 10 为紧张版本Windows 3.1 至 Windows 95(98、ME、2000、XP、Vista、7、8、10)TeX(每个新版本都更趋近于圆周率 π )

至少我们没跳到 Perl 34!

硬核老王:言外之意,你们跳得,我也跳得~而且,你们不以为版本 6 这个数字有点不吉利么,而版本 7 这个数字就好多了。

有什么消逝了么?

消逝的东西不多。
有些东西在默认情形下会被禁用,但同样,这实质上是调度旋钮和拨盘指向不同地方的 Perl 5.32。
纵然在 Perl 5 的地皮上,有些东西你也该当学会不须要。
以下这些都是第一轮变革的可能目标:

间接工具符号裸词文件柄(标准文件柄除外)伪多维数组和哈希值(老的 Perl 4 花招)Perl 4 风格的原型定义(利用 :prototype() 代替)

硬核老王:是该学会放弃了,又不是区块链,什么旧的都不能丢下。

增加了什么?

增加的也不多。
Perl 7 紧张是 Perl v5.32,但默认启用了所有的功能。
你不须要做任何事情就可以得到大多数新功能,比如 postfix 解引用 ,新的 isa 操作符 ,或者其他一些功能。
这便是一个紧张版本可以供应的新社会左券的好处。
这是一个硬边界,新功能可以在一边默认存在,而不滋扰另一边。

硬核老王:多增加点新的编程措辞技能吧!
哪怕是语法糖。

那我现在该当做什么?

如果你须要一个旧版的 Perl 来运行你的代码,你连续好了。
那些旧版本是不会消逝的。
就像 Perl 5.6 到现在仍旧可以利用,如果那是你希望运行的版本的话。

如果你的代码在那些约束和警告下运行没有问题,而且你利用的是当代 Perl 风格,可能你大部分代码都不用动。
如果你有一些裸词的文件柄,就开始转换这些,间接工具符号也一样。

如果你的代码比较缭乱,你也不是没有机会。
在从 Perl 5 到 7 的过渡过程中,会有兼容模式来帮助你(但不是 Perl 5 到 8)。
一个编译指令可以把那些旋钮和拨盘设置回旧的设置(但这最多也便是一个版本的事情)。

use compat::perl5;# 行为类似 Perl 5 的默认行为

对付模块来说,还有一些问题须要办理,但也会有一个兼容机制来办理这些问题。

硬核老王:代码实在写的烂(辩白:我这不是烂,是 Perl 的古怪传统),那没办法,只能给你一次机会。

好是,这些东西已经被紧张的 Perl 利益干系者在生产环境中进行了测试。
这不是纸上谈兵:我们已经在做了,一些粗陋的地方正在调度打磨。

而且,v5.32 中已经有了一些这些旋钮和拨盘,比如,你可以这样关闭间接工具表示:

no feature qw(indirect);

预期会有更多的旋钮或拨盘,或许像这样:

no multidimensional;no bareword::filehandle;

我在《 为 Perl 7 做准备 》一书中网络了所有这些信息,这是我通过 Perl School 和 LeanPub 供应的最新产品。

硬核老王:本文作者 brian d foy 也是《 精通 Perl(Mastering Perl)》 的作者,我是这本书是中文译者之一。

一句话总结

Perl 7 是 v5.32,设置不同而已。
你的代码如果不是乱七八糟的,该当可以用。
估量一年内会有用户发布。

硬核老王:作为一个老 Perl 程序员,这个让我又动心了,负责考虑是不是再投回 Perl 的怀抱,哦不,是 Perl 7 的怀抱。

点击“理解更多”可访问文内链接
标签:

相关文章

我国土地利用分类代码的构建与应用

土地利用分类代码是我国土地管理的重要组成部分,是土地资源调查、规划、利用和保护的依据。土地利用分类代码的构建与应用显得尤为重要。本...

SEO优化 2025-02-18 阅读1 评论0

微信跳转微信支付便捷支付体验的秘密武器

移动支付已成为人们日常生活中不可或缺的一部分。作为我国领先的社交平台,微信支付凭借其便捷、安全的支付方式,深受广大用户的喜爱。而微...

SEO优化 2025-02-18 阅读0 评论0

探寻会计科目代码背后的奥秘分类与

会计科目代码是会计信息系统中不可或缺的组成部分,它将企业的经济活动进行分类和归纳,为会计核算、财务分析和决策提供重要依据。本文将从...

SEO优化 2025-02-18 阅读1 评论0