pi币什么时候可以重置钱包,pi币什么时候可以网上交易

  

     

  

  默认是带有现代行为的Perl 5,为以后更大的变化打下基础。   

  

  来源:https://linux.cn/article-12349-1.html作者:Brian D Foy译者:Xingyu。王(本文字数:5043,阅读时间约8分钟)   

  

  最近的Perl会议是在云中举行的,会上Sawyer X宣布Perl有了一个新的前瞻计划。Perl 7的开发已经在进行中,但是在代码或语法上不会有大的变化。默认是带有现代行为的Perl 5,为以后更大的变化打下基础。   

  

  硬王:在经历了Perl 6失败的巨大痛苦后,Perl社区终于走出了阴郁的情绪。但是失去的黄金,20年后是找不回来的。否则Python什么都不会发生,更别说PHP了。我认为Perl 7是一条自我救赎之路,应该有新的Perl 7和Perl 8.   

  

  Perl 7基本上是Perl 5.32Perl 7.0会是Perl 5系列的5.32,但是会有不同的、更合理的、更现代的默认行为。您不需要启用已经设置的大多数默认行为,因为它们已经为您启用了。这个大版本的跳跃在我们一直以来的工作方式和我们未来能做的事情之间设置了一个界限。   

  

  铁杆老王:可以这么理解,Perl是Perl 5兄弟打下的家族企业,而Perl 6是从外面请来的职业经理人。结果,这位经理不得不对家族企业采用现代管理,并且差点丧命。现在,Perl 6被分离出来,一个人走了,自己的儿子Perl 7准备重振家业。   

  

  请记住,Perl是一种“按我的意思做”的语言,它的默认行为可能正是您想要的。在Perl 4和Perl 5的早期,这很容易。然而,几十年过去了,现在的世界更加复杂。我们不断向它添加编译指令,但是由于Perl对向后兼容性的承诺,我们不能改变它的默认行为。现在,我们又回到了C语言的旧时代。在我们开始做一些事情之前,我们必须包含许多常规模板:   

  

  使用utf8使用严格;使用警告;使用开放式qw(: STD : utf 8);无特征qw(间接);使用特征qw(签名);无警告qw(实验:3360签名);这在v5.12和更高版本中略有改进,因为我们可以通过使用set minimum版本来免除set strict指令:   

  

  使用v5.32使用utf8使用警告;使用开放式qw(: STD : utf 8);无特征qw(间接);使用特征qw(签名);无警告qw(实验:3360签名);硬王:不可否认,Perl在二十年前是全盛时期。那时候,别说终端运行的脚本,就连互联网上的各大交互程序(CGI)几乎都是用Perl编写的。但是,在狂热的时代,它的主要精力都在折腾Perl 6,Perl 5系列不仅很多地方陈旧,还有历史的包袱。我们无法保持原有的精致习惯向前,也无法跟上现代软工观念的落后。   

  

  Perl 7提供了一个新的机会,即使没有指定版本,也可以将其中一些行为改变为默认行为。Perl 5仍然有其极其向后兼容的行为,但是Perl 7将以最小的历史负担获得现代实践的新生命。就个人而言,我希望新版本可以选择signatures函数,但要使Unicode成为默认行为还有很多工作要做,所以您可能需要保留一些编译指令:   

  

  使用utf8使用开放式qw(: STD : utf 8);你可能会丢失一些你绝对不应该使用的垃圾函数,比如间接对象表示。拉里沃尔说他必须为C程序员做点什么。   

  

  my $cgi=新CGI;# indirect object,但是在Perl 7中不使用my $ CGI=CGI-new;# direct objects然而,这个特性在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 的怀抱。

  

点击“了解更多”可访问文内链接

相关文章