标签 Perl 下的文章

Perl 7 依然遥遥无期

两年前,Perl 语言项目宣布了 Perl 7,与 Perl 6 的激进改变不同,Perl 7 实际上是 Perl 5.32 配上更符合现代趋势的一些默认设置。原计划在 2021 年发布 Perl 7,但显然我们还没见到,甚至没有一个明确的发布时间表。Perl 语言指导委员会还在继续引入新特性,直到某天他们觉得有了足够大的进步才会发布 Perl 7。

消息来源:perl
老王点评:Perl 当年太成功,但这个成功也成了巨大的包袱,以至于激进的 Perl 6 失败了,继承传统的 Perl 7 也迟迟难产。两年前宣布 Perl 7 的消息时,我还 很期待,但是,虽然不愿意这样说,Perl 不如就让它一直留在 Perl 5 吧,作为历史里程碑挺好。

微软将 WSL2 带入 Window Server 2022

2021 年,为了回应用户提出的将 WSL 向后移植到 Windows Server 2019 的请求,微软说 WSL “对开发来说非常棒”,“对 Windows 客户端来说非常完美”。但又警告说,“如果我们把它放在 Windows Server 中,人们会在生产场景中使用它,而它并不准备用于这种场景”。微软推荐的方式是运行完整的 Linux 虚拟机。但今年,微软的态度在改变,WSL2 发行版已经可以在 Windows Server 2004 和 20H2 版本上运行,而现在,随着最新的预览补丁,Windows Server 2022 现在也支持 WSL2 Linux 发行版了。

消息来源:theregister
老王点评:微软对 Linux 的野心一点点露了出来,先是一个号称为了开发者方便的子系统,以后就可能是一个集成了完整 Linux 功能和优点的子系统了,并且,可以用于企业生产环境。

攻击者窃取了十万 npm 用户账号登录信息

攻击者在 4 月中旬的攻击中利用 OAuth 应用令牌窃取了近十万 npm 用户账号登录信息,取得了密码哈希和电邮地址。哈希密码是用弱哈希算法,如加盐 SHA1 生成的,因此容易破解,但好在 GitHub 从 3 月 1 日起对所有账号自动启用了电邮验证,控制账号的尝试会被自动阻止。在分析和检查之后,GitHub 确信攻击者没有修改或上传新版本的 npm 软件包。GitHub 重置了所有受影响用户的密码,并向受影响组织和用户发送了通知。

消息来源:solidot
老王点评:再强的密码也拦不住平台用脆弱的方式存储。

下载这份编程速查表,开始学习 Perl 的力量。

 title=

Perl 发布于 1988 年初,是一种后现代的编程语言,它通常被认为是一种脚本语言,但它也能进行面向对象的编程。它是一种成熟的语言,拥有 数以万计的库、GUI 框架,它有一种叫做 Raku 的衍生语言(即 Perl 6),以及一个活跃而热情的社区。它的开发者以其灵活性为荣。根据它的创造者 Larry Wall 的说法,Perl 并不对它的用户强加任何特定的编程风格,而且有不止一种方法来完成大多数事情。

Perl 非常健壮,它曾经被广泛使用,这使它成为新的程序员可以尝试的伟大语言。

Perl 基础知识

在 Linux 和 macOS 上,你已经安装了 Perl。在 Windows 上,请从 Perl 网站 下载并安装它。

Perl 表达式

Perl 源代码的基本单位是 表达式,它是任何能返回一个 的东西。

例如,1 是一个表达式,它返回 1 的值。表达式 2 返回 2 的值,而 a 返回字母 a

表达式可以更复杂。表达式 $a + $b 包含变量(数据的占位符)和加号(+),它是一个数学运算符。

Perl 语句

Perl 语句是由表达式组成的。每个语句都以分号(;)结束。

比如说:

$c = $a + $b;

要尝试运行你自己的 Perl 语句,请打开终端并输入:

$ perl -e 'print ("Hello Perl\n");'

Perl 语句块

Perl 语句块可以用大括号({ })组合起来。块是一种有用的组织工具,但它们也为那些你可能只需要在程序的一小部分使用的数据提供了 范围。Python 用空白定义范围,LISP 用小括号,而 C 和 Java 用大括号。

变量

变量是数据的占位符。人类每天都在使用变量而没有意识到它。例如,“它”这个词可以指代任何名词,所以我们把它作为一个方便的占位符。“找到我的手机并把它拿给我”实际上是指“找到我的手机并把我的手机拿给我。”

对于计算机来说,变量不是一种便利,而是一种必需品。变量是计算机识别和跟踪数据的方式。

在 Perl 中,你通过声明一个变量名称和它的内容来创建变量。

在 Perl 中,变量名称前面总是有一个美元符号($)。

这些简单的语句创建了一个包含 "Hello""Perl" 字符串的变量 $var,然后将该变量的内容打印到终端:

$ perl -e '$var = "hello perl"; print ("$var\n");'

流程控制

大多数程序需要做出决定,这些选择由条件语句和循环来定义和控制。if 语句是最直观的一种。Perl 可以测试一个特定的条件,然后 Perl 根据这个条件决定程序如何进行。其语法类似于 C 或 Java:

my $var = 1;

if ($var == 1) {
  print("Hello Perl\n");
}
elsif ($var == 0){
  print("1 not found");
}
else {
  print("Good-bye");
}

Perl 也有一个简短的 if 语句的形式:

$var = 1;

print("Hello Perl\n") if ($var == 1);

函数和子程序

尽可能多地重复使用代码是一种有益的编程习惯。这种做法可以减少错误(或将错误合并到一个代码块中,因此你只需修复一次),使你的程序更容易维护,简化你的程序逻辑,并使其他开发者更容易理解它。

在 Perl 中,你可以创建一个 子程序,它接受输入(存储在一个特殊的数组变量 @_ 中)并可能返回一个输出。你可以使用关键字 sub 来创建一个子程序,后面跟一个你选择的子程序名称,然后是代码块:

#!/usr/bin/env perl

use strict;
use warnings;

sub sum {
  my $total = 0;

  for my $i(@_){
    $total += $i;
  }

  return($total);
}

print &sum(1,2), "\n";

当然,Perl 有许多子程序,你不必自己去创建。有些是内置于 Perl 中的,而社区库则提供了其他的。

用 Perl 编写脚本

Perl 可以被编译,也可以作为一种解释型的脚本语言使用。后者是刚入门时最简单的选择,特别是如果你已经熟悉了 Python 或 shell 脚本

这里有一个用 Perl 编写的简单的掷骰子脚本。把它读一遍,看看你是否能跟上它。

#!/usr/bin/env perl

use warnings;
use strict;
use utf8;
binmode STDOUT, ":encoding(UTF-8)";
binmode STDERR, ":encoding(UTF-8)";

my $sides = shift or
  die "\nYou must provide a number of sides for the dice.\n";

sub roller {
    my ($s) = @_;

    my $roll = int(rand($s));
    print $roll+1, "\n";
}

roller($sides);

第一行告诉你的 POSIX 终端要使用什么可执行文件来运行该脚本。

接下来的五行是模板式的包含内容和设置。use warnings 的设置告诉 Perl 检查错误,并在终端对它发现的问题发出警告。use strict 设置告诉 Perl 在发现错误时不要运行脚本。

这两个设置都可以帮助你在代码中的错误导致问题之前发现它们,所以通常最好在你的脚本中激活它们。

脚本的主要部分开始于对脚本从终端启动时提供给它的 参数 进行分析。在这种情况下,预期的参数是一个虚拟骰子的所需的面的数量。Perl 将其视为一个堆栈,并使用 shift 函数将其分配给变量 $sides。当没有提供参数时,die 函数会被触发。

sub 关键字创建的 roller 子程序(或函数),使用 Perl 的 rand 函数生成一个伪随机数,最大不超过参数的数字。这意味着在这个程序中,一个 6 面的骰子不可能掷出 6,但它可以掷出 0。这对计算机和程序员来说是没有问题的,但对大多数用户来说,这是令人困惑的,所以它可以被视为一个 bug。为了在这个 bug 成为问题之前解决它,下一行在随机数上加 1,并将结果作为掷骰子的结果打印出来。

当引用传递给子程序的参数时,你引用的是特殊变量 @_,它是一个数组,包含了函数调用时括号内的所有内容。然而,当从数组中提取一个值时,数据被转换成一个标量(例子中的 $s 变量)。

子程序在被调用之前不会运行,所以脚本的最后一行调用了自定义的 roller 函数,将命令的参数作为函数的参数。

将该文件保存为 dice.pl,并标记为可执行:

$ chmod +x dice.pl

最后,尝试运行它,为它提供一个最大的数字,从中选择其随机数:

$ ./dice.pl 20
1
$ ./dice.lisp 20
7
$ ./dice.lisp 20
20

没问题!

Perl 速查表

Perl 是一种有趣而强大的语言。尽管自从 Perl 成为默认的脚本语言后,Python、Ruby 和 Go 等新兴语言引起了许多人的注意,但 Perl 的功能并不弱。事实上,它比以往任何时候都要好,而且前途光明。

下次你想找一种更灵活的语言,并有简单的交付方式时,不妨试试 Perl,并下载这个速查表


via: https://opensource.com/article/22/2/perl-cheat-sheet

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

PowerShell 成为关键安全威胁的首要来源

根据今天在 RSA 大会上发布的思科研究报告,PowerShell 是 2020 年下半年在端点上检测到的关键威胁的首要来源,占比超过了 1/3。PowerShell 成为勒索软件、无文件恶意软件的主要载体。

思科报告显示,端点威胁的首要类别是用于利用及利用后任务的双重用途工具。PowerShell Empire、Metasploit 和其他此类工具有合法用途,但它们也已成为攻击者工具包的一部分。

强力的工具用于恶意用途也是强力的。所以,最起码系统管理员们先将 PowerShell 保护起来吧。

Python 官方软件包库 PyPI 正被垃圾软件包淹没

PyPI 充斥着以流行电影命名的垃圾软件包,其通常与提供盗版下载的盗版网站有关。这些软件包都是由一个独特的假名维护者账户发布的,这使得 PyPI 要一次性删除这些软件包和垃圾账户变得非常困难。除了包含垃圾关键词和视频流网站的链接外,这些软件包还包含从合法的 PyPI 软件包中提取的功能代码和作者信息,以掩盖他们的恶意行为。

近几个月来,对 npm、RubyGems 和 PyPI 等开源生态系统的攻击不断升级。恶意威胁者用各种恶意和伪造的软件包灌满了软件仓库,以传播他们的信息。这成了一场打地鼠比赛。

公开软件库或许需要改变其上传和审核机制,并引入防范垃圾邮件和防止论坛垃圾信息方面的经验。

时隔一年后,Perl 5 发布新版本

将近一年后,Perl 语言宣布发布 Perl 5.34.0。这个版本包含了来自 78 名贡献者的大约 28 万行代码变更。主要变化包括:实验性的 try/catch 语法,正则表达式量词允许空下界,新的八进制语法,性能增强和模块更新等等。

不能说 Perl 语言社区不努力,28 万行代码,这放在任何一个开源项目里都不少。奈何 Perl 语言已经不时髦了,几乎没有人学了,也没有一个独占领域。

因北美暴风雪,Linus Torvalds 遭遇六天断电后发布了内核“冰封废土”

上个月中旬,因为罕见的严寒天气和暴风雪,美国得州和俄勒冈州波特兰遭遇了持续多天的停电。Linux 创始人 Linus Torvalds 就生活在波特兰,多年来他一直在家中远程工作,并负责新内核的最终发布。之前我们报道过,内核社区发现“内核合并窗口意外‘冻住’了”。最近,Linus 在邮件列表中承认是由于停电导致了新的 Linux 内核的发布延误,在 5.12 合并窗口开启两周之后才发布了 5.12-rc1。为了纪念这一事件,Linus 将 5.12 版本命名为:Frozen Wasteland(冰封废土)。

这个事情反映了两个问题:一个是 Linus Torvalds 的单点故障;另一个是网络和电力等基础设施对 Linux 出乎意料的影响。

Coinbase 称中本聪现身或出售其持有比特币会导致市场不稳定

数字货币交易平台 Coinbase 上周递交了 IPO 申请,准备以直接上市的方式在纳斯达克公开上市。在申请文件中,Coinbase 列出的风险因素包括了比特币的神秘创始人中本聪。

中本聪在 2008 年发表了比特币论文,2011 年之后就不再露面。他在此期间挖掘了大约 110 万枚比特币,总价值超 300 亿美元。Coinbase 称如果中本聪的身份曝光,或转移其持有的比特币,都可能导致数字货币市场的不稳定,从而影响到 Coinbase。

为了向这位比特币创造者致敬,Coinbase 将中本聪列为其公开文件的接收人之一。

有人评价说,教众对教主的拥护都是口头的,但实际上并不欢迎教主回来。:smile:

被劫持的 Perl.com 问题解决

1 月 27 日,Perl 语言的官网之一 Perl.com 域名遭到劫持;直到 2 月 5 日问题才完全解决。Perl.com 域名是在 1990 年代初注册的,Tom Christiansen 被列为注册人,但是没有启用近年来引入的域名安全功能,如双因子认证。攻击者可能是首先通过社会工程入侵了域名服务商 Network Solutions,然后更新了域名的信息,并通过几次转移域名注册商来逃避追回。在转移到 Key Systems 之后攻击者尝试以 19 万美元拍卖 Perl.com 域名,但在媒体报道之后很快被终止。现在,Perl.com 域名已经回到了 Tom Christiansen 手中,他们加入了安全功能防止同样的事再次发生。

还好解决了,但是之所以出现这样的问题,我觉得主要还是 Perl 社区“太旧”了。

Excel 现在具备了图灵完备性,成为第一大编程语言

如果一种编程语言可以实现任何可能的算法,那么它就具备了图灵完备性。微软通过引入 LAMBDA,Excel 现在具备了图灵完备性,Excel 转变成一种全面的编程语言。

自 20 世纪 80 年代发布以来,Excel 为每天使用它的数百万人提供了决策依据。它也是世界上使用最广泛的编程语言。Excel 公式的编写者比世界上所有 C、C++、C#、Java 和 Python 程序员的总和还要多一个数量级。但是我们通常不将 Excel 视作一种全面的编程语言,因为它有两大缺点:其一是公式语言只支持数字、字符串和布尔值等标量值,其二是不支持定义新函数。

而在 2019 年,Excel 的数据类型超越了文本和数字,允许单元格包含一级记录。接着,在去年 12 月微软宣布了 LAMBDA 功能,解决了第二个缺陷。LAMBDA 允许用户使用 Excel 的公式语言定义新的函数。通过 LAMBDA,理论上可以用 Excel 的公式语言写任何计算,从而满足了图灵完备。LAMBDA 目前提供给了 Beta 测试用户。

我觉得,这一下,将“程序员”群体扩大了好几倍!

Perl.com 官网被劫持

日暮西山的 Perl 语言已经不再流行,虽然也在努力自救,但是整个生态的衰败依旧难以遏制,现在已经很少有新人学习 Perl 语言了。但是 Perl 依然是重要的基础设施,很多软件仍然是用 Perl 写的,Perl 的 CPAN 仓库依然是一个宝库。

上周末,The Perl NOC 报道称,Perl.com 被劫持,被指向了一个停车网站。更严重的是,它被用于分发恶意软件。目前该网站页面访问无显示,但是加载了作用不明的 JavaScript 脚本。Perl.com 曾被用作通过 CPAN 分发模块的镜像或备份。如果你的 CPAN 配置使用了它,请尽快修改。当前管理员已经在尝试恢复该域名的控制权,但是目前尚无明确进展。该域名是如何被劫持的细节也不得而知。

作为一名老 Perl 程序员,听到此事,实在是感到痛心,这是多么垂暮的社区,才能对基础设施的安全疏忽至此!

据称 IBM 已经将其区块链团队削减殆尽

据四位熟悉情况的人称,IBM 已经将其区块链团队削减殆尽。据一位消息人士称,“其实不会再有区块链团队了。IBM 的大部分区块链人员都已经离开了。”,而另外一位称,“IBM 的区块链部门连续两年大幅度错过了收入目标”。但 IBM 的一位发言人否认了这些说法,“我们的区块链业务做得很好”。IBM 称,“我们调整了一些领导人和业务部门,以继续推动增长 —— 我们每年都会这样做。”

其实,作为目前热点的区块链,在我看来,有些联盟链项目本身就是伪概念。如果上述情况属实,不知道国内的相关区块链行业会不会也有类似变化。

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第三季(4):深入 Perl 语言的世界音频脚本。

导语:语言来了又走。只有少数几种语言具备了登峰造极的能力,而能留在那里的则更少。Perl 有过一次惊人的崛起,也有过一次平静的低迷,现在已经在编程世界中找到了自己的位置。

Perl似乎注定要统治网络。Michael Stevenson 和 Mike Bursell 描述了 Perl 的设计如何使它成为早期 web 的理想选择。我们从 Conor Myhrvold 那里听到了它的座右铭:“ 实现它的方法不止一种 There is more than one way to do it. ”。Elizabeth Mattijsen 分享了,尽管 Perl 有优势,但漫长的开发周期如何减缓了 Perl 的发展。虽然它不再是最顶级的网络语言,但 John Siracusa 指出,Perl 作为一种小众工具仍然存在。

00:00:02 - Saron Yitbarek

想象一下 Perl 语言的创建者 Larry Wall 在 1999 年的一次会议上站在麦克风前,留着他标志性的浓密胡子和梳理过的刘海,感觉相当好,因为他所发明的语言正在越来越受欢迎。

00:00:19 - 配音演员

声音测试。

00:00:19 - Saron Yitbarek

Perl 语言轻而易举地超越了 COBOL、Visual Basic,而 Python 呢? Python 仍然是一个不入流的竞争者,是Larry Wall 的几个玩笑素材。Wall 展示了 dice.com 报告中的人群数据,在那时来看,Perl 语言的未来是非常、非常光明的。然而之后 Perl 的未来就不再如此了。20 年之后,dice.com 在 2018 年夏天将 Perl 列为最可能灭绝的语言之一。短短 20 年之间发生了什么?

**00:00:59 **:

我是 Saron Yitbarek,这里是《代码英雄》,一档红帽公司的原创播客。这一季是关于我们编程语言的力量和前景的。在上一集我们追踪了搭上了互联网顺风车的 JavaScript 的疯狂崛起。

00:01:19

并不是每一种语言都有一个不停地成长和成功的故事。大多数语言的出现,在当时非常特殊的生态系统中发挥了它们的作用,然后当我们的编程生活里需要其他类型的工具时它们就开始消退。

00:01:37

本集我们将深入了解 Perl 世界。是什么造就了它早期的成功,为什么它的成功突然就被颠覆了?我们所处的环境,我们的基础设施,我们的硬件,各种因素都会决定哪些语言会繁荣,哪些会开始萎缩。这就是 Perl 语言的故事的魅力所在。

00:02:08

我们知道 Perl 并没有统治世界,但是退回到上世纪 90 年代的时候,却看不到这一点。Tim Berners-Lee 在 1991 年发明了 万维网 World Wide Web (WWW),它迅速创造了一个全新的基于 Web 的开发领域。谁也说不准会是哪种编程语言在这个新领域取得成功。

00:02:31 - Michael Stevenson

在 Web 出现的时候,所有人都等待着会有什么事情发生。那个时候整个世界都是令人兴奋的。

00:02:39 - Saron Yitbarek

Michael Stevenson 是 阿姆斯特丹大学 University of Amsterdam 媒体研究的副教授。他为我们描述了早期的 Web。人们见过 Usenet,也见过 ARPANET。他们看到了 美国在线 America Online ,还有一些其它的东西。但是直到 Web 出现,互联网的全部发展潜力才真正得到体现。突然之间,你就可以通过鼠标和点击进入了这个巨大的互联世界。这是一个出乎意料的事情。

00:03:09 - Michael Stevenson

你要是记得 1993 年,也就是 Web 开始崭露头角的那一年,也是《 连线杂志 Wired Magazine 》开始出版的那年。在那之前类似《Mondo 2000》这类的杂志真的让电脑看起来像神秘知识的来源,让电脑看起来很酷。

00:03:32

因此从这个意义上说,Web 也到达了一个相当特定的时期,人们已经准备好以这样的方式迎接技术的兴起。

00:03:43 - Saron Yitbarek

故事在这个时候开始了:Larry Wall 在 1987 年创建了 Perl,4 年后万维网才开始兴起。Larry Wall 给世界带来的 Perl 最初只是一种通用的 Unix 脚本语言。当然,它确实很有用,但同时 Perl 还有一些秘密元素,这些元素使它成为即将到来的 Web 开发世界的理想语言。

00:04:14 - Michael Stevenson

比较有名的是 Perl 是 Larry Wall 在参与的一个美国国家安全局(NSA)的秘密项目中发明的,基本上他所做的就是创建一个类似黑客版的新闻栏目,运行在 Usenet 上,因此 Perl 语言从一开始就是操作文本和将数据从一个地方移动到另一个地方,这完全符合 Web 的需求。而 Perl 作为一种易于使用的脚本语言,更加接近于自然语言。它可以用来快速开发东西,所有这些都让 Perl 成为了一个完美的契机,不仅适合专业用户,也适合新加入的业余爱好者。

00:05:09 - Saron Yitbarek

很偶然的是,当 Web 出现时,Perl 已经为 Web 做好了准备。Larry Wall 不可能知道 Web 即将出现。但当它出现时正好相互吻合。但我认为还有一点很关键:Perl 是一种自由语言。Larry Wall 在 自由软件基金会 Free Software Foundation 开发的 GPL( 通用公共许可证 General Public License )下发布了它。

00:05:37

Larry Wall 让他的语言自由开源的决定,这完全符合刚刚开始出现的基于 Web 的新思维方式,同时 Perl 在其他方面也很有前瞻性。

00:05:50 - Michael Stevenson

Perl 的开放性令人难以置信,在某种意义上,它总是愿意整合一些其他的东西,新的东西。这和 Larry Wall 的身份很相配。他是个很开放谦虚的人,总是仔细考虑别人的想法,并试着设身处地为别人着想。对我来说 Perl 作为一种语言,以及作为一个社区的性格,在很长一段时间里,真的很符合这一点。

00:06:27 - Saron Yitbarek

同样 Perl 非常适合 Web 早期的、狂野的西部阶段,也就是黑客时代。实际上 Perl 的座右铭之一就是“ 实现它的方法不止一种 There is more than one way to do it. ”。

00:06:39 - Michael Stevenson

在 Perl 的鼎盛时期和这个试验性的开放 Web 的鼎盛时期之间,存在着一种近乎浪漫的联系,在它变得如此被几个平台所控制之前。

00:06:56 - Saron Yitbarek

记得上世纪 90 年代是互联网历史上的一段启蒙时期,那时人们还在争先恐后地想知道还有哪些是可能的。那时对编程的需求是巨大的,每个人都需要有一个网页,这意味着一群全新的开发人员,他们都对新的做事方法持开放态度。问题变成了“好吧,我们有了一个全新的领域,但用什么语言来完成这项工作呢?”

00:07:26

Perl 虽然并不是这个问题的最终答案,但对于很多人来说 Perl 是他们首选的答案。

00:07:34 - Michael Stevenson

我并不是说我更愿意看到加载速度超慢的网页、也没有谷歌搜索引擎的时代,但我确实认为那个时代有一些特别的东西,当时有一些人,在他们的宿舍里,创建了一个类似 slashdot 的东西。而现在随着 Web 已经变得如此主流、专业化和被集中在几个大公司中,我们确实怀念那个时代。对我来说,Perl 比其他任何早期的故事都更能象征这一点。

00:08:15 - Saron Yitbarek

Michael Stevenson 是阿姆斯特丹大学媒体研究的副教授。

00:08:24 - Saron Yitbarek

之后,随着 90 年代的到来,Perl 作为一种能适应早期互联网发展潜力的语言出现了,它是一个时代的语言。Larry Wall 和他所创造的 Perl 正好明白了 Web 的本质。

00:08:40 - Mike Bursell

在网上你可以随意搜索,也可以随时创建网页,这是互联网的美丽新世界,你可以随时做这些事情。

00:08:52 - Saron Yitbarek

这位是 Mike Bursell,红帽公司的首席安全架构师。Mike 是 90 年代中期发现和使用 Perl 的黑客之一。

00:09:00 - Mike Bursell

对于 Web 来说,Perl 是许多人的起点。Java™ 语言还处于早期阶段,它在文本输入输出方面并不是很出色。如果你想进行查询和生成页面,Perl 是人们都在使用的工具。

00:09:22

Perl 非常适合,因为它擅长获取文本,并使用文本做其他事情,而这正是 Web 所需要的。

00:09:31 - Saron Yitbarek

顺便需要说一下的是,Larry Wall 有语言学背景,这就解释了为什么 Perl 有强大的文本解析能力。正如 Mike Bursell 提到的,这是一笔巨大的好处,因为在早期,Web 主要是一种基于文本的媒介,因为那时候人们没有足够的带宽来处理图像。

00:09:51 - Mike Bursell

它很容易使用,也很容易复制。人们在分享方面非常开放,而且它的输出速度很快,这些都是好东西。

00:10:02

哦,当然还有一点,就是你可以用管道使用它。所以,这是非常多的人所习惯的,而且非常容易测试,甚至离线测试,这都是非常有用的。

00:10:13 - Saron Yitbarek

尤其对那些在 Web 的世界中重新规划自己生活的系统管理员来说非常有用。

00:10:21 - Mike Bursell

Perl 是给系统管理员们的真正礼物。即使在那个年代,如果你做一些事情,你会得到很多日志。管理这些日志,分解它们,搜索它们,并能够以不同的方式显示它们,或获取任何其他大型文本语料库(主要就是日志),甚至可以对它们进行调试。除非你要在命令行里用管道方式传输 orcsed 之类的东西,以及 ed 命令,那样的话你很快就会变得非常痛苦,而 Perl 正好适合让你去处理这些事情。

00:10:55 - Saron Yitbarek

到上世纪 90 年代后期,Perl 5 已经聚集了一个强大的用户群体。像 Fortran 和 C 这样的旧语言依赖于庞大而昂贵的硬件,而 Perl 更有生命力,也更容易移植。在那样一个硬件成本急剧下降的世界里,Perl 的设计使得它得到了蓬勃发展,Perl 让所有的新程序员快速、轻松地工作。这是因为 Larry Wall 以牺牲 CPU 和内存的需求为代价,使 Perl 语法更人性化。所有这些元素组合在一起,使 Perl 成为一种很受新开发社区欢迎的语言。

00:11:36 - Mike Bursell

在一个正在壮大的社区里,你可以去和他们聊聊社区里的事情,然后 PerlMonks 论坛出现了,那里是一个讨论的好地方,能在论坛里知道正在发生的事情。

00:11:50 - Saron Yitbarek

这个社区确实拥有 Web 所能提供的最好的东西。他们发现了一个巨大的软件模块库,一个叫做 CPAN 的存储库,这些系统管理员都很喜欢它。它给 Perl 提供了更多的灵活性,许多人都可以部署由少数几个编程大师编写的代码。

00:12:15 - Mike Bursell

它有很多库可以做你想做的任何事情,如果你找不到你想要的库,你可以去问一下,然后就会有好心人写出你想要的库。

00:12:21 - Saron Yitbarek

Mike Bursell 是红帽公司的首席安全架构师。

00:12:28 - Saron Yitbarek

正是由于 Perl 是免费的,它受到不断增长的模块库的支持,它是可移植的,而且它有一个蓬勃发展的社区。一切看起来都很好。Perl 可以在上世纪 90 年代 Web 开发新天地中发挥所有优势,但就在 90 年代即将结束的时候,互联网的发展前景又一次发生了变化,时代来了一个大的转变。

00:12:57 - Alan Greenspan

但我们又能如何知道非理性繁荣何时已过度推高了资产价值,进而导致了意料之外的长期经济收缩?

00:13:12 - Saron Yitbarek

“非理性繁荣”是时任美联储主席 Alan Greenspan 在 1996 年对 美国企业协会 American Enterprise Institute 所说的话。他那句“非理性繁荣”是对 90 年代人人都经历过的网络泡沫的警告。所有早期使用 Perl 的 Web 开发人员都在那个泡沫中乘风破浪,但正如 Greenspan 预测的那样,泡沫在 2000 年破裂了。

00:14:11 - Conor Myhrvold:

大家好,我是 Conor Myhrvold 。在过去的五六年里我一直从事编程,现在在技术领域为 Uber 工作。

00:14:20 - Saron Yitbarek

2000 年代初,当 Conor 还在高中的时候,Perl 仍然是一个非常重要的东西。但他越来越意识到一种与之竞争的语言,叫做 Python。

00:14:31 - Conor Myhrvold

Python 所追求的是一种更结构化的语言,做很多不同的事情都有一种更显然的方式,它就是那样设计的。而 Perl 则喜欢做某件事有不止一种方法,但这让很多初学者感到困惑。

00:14:49 - Saron Yitbarek

Perl 有这样一句座右铭“ 实现它的方法不止一种 There is more than one way to do it. ”。而 Python 的理念实际上是相反的,Python 为每个问题都提供了一个明显的解决方案,这意味着查看别人的 Python 代码很容易;而另一方面查看其他人的 Perl 代码可能会令人困惑。Perl 作为一个程序员的第三或第四种语言是有意义的,而正是因为它是一种脚本语言,而脚本是互联网连结的基础。

00:15:23

但是 Python 是一种你可以真正深入研究的语言,即使你是一个新手。Perl 有一套特定的优势,比如在搜索文本和生物信息学上。但是 Python 就是这样一种简单通用的语言。Python 获得了越来越多的信任,成为人们首先想学的语言,这是一件大事。

00:15:47 - Conor Myhrvold

越来越多的人开始上网,越来越多的人开始学习如何编程。尤其是相对于 Perl 而言,Python 受益于它本身相对容易学习,因为它更结构化。而这样结果是,在一个快速增长的世界里,如果你能得到更多增长的份额,那将最终意味着有更多的教程和更多的东西可供你使用。

00:16:10 - Saron Yitbarek

在之前提到过的 CPAN,它是 Perl 用户可以使用的强大的中央存储库。这在 90 年代是一大亮点,但 CPAN 的价值也在变化。

00:16:24 - Conor Myhrvold

这也不能真正帮助你学习一门语言,因为你是在“复制粘贴”,只是用最少的方式替换你需要的东西。从长远来看这是一个劣势,因为如果你让人们通过自己进行原始开发来学习如何使用一种编程语言,即使这需要花费更长的时间,他们也会觉得自己对它投入了更多,而且他们也了解在这中间发生了什么。

00:16:48 - Saron Yitbarek

Python 没有像 CPAN 那样的集中式存储库,但是对于那些在新千年时代来到这里的开发人员来说,在一个互联网搜索功能如此强大的世界里,存储库并没有那么大的价值。

00:17:05 - Saron Yitbarek

最终 Python 有了大量的教程,当然现在也有了像 GitHub 这样的平台。

00:17:13 - Conor Myhrvold

最终发生的事情是 Perl 拥有的许多优势,是来自一个已经过时的时代的网络效应。

00:17:24 - Saron Yitbarek

Conor Myhrvold 是 Uber 的一名工程师。

00:17:30 - Saron Yitbarek

然而语言的兴衰很少是由外部力量单独决定的,而 Perl 的内部问题是,在它的发展过程中它似乎遇到了障碍。Python 正在以一种相当有序的方式发布新的迭代,而正如我们在本季度第一集中所了解到的,Perl 在 2000 年互联网泡沫破裂之时,Python 开始获得更多新开发人员的青睐。

00:17:59 - Saron Yitbarek

每个人都期待着 Perl 6 的发布,人们都很兴奋。他们等啊,等啊,等啊……他们等了 14 年。

00:18:15 - Elizabeth Mattijsen

人们提出了大约 300 多件 Perl 6 应该能够完成的事情,当然其中很多事情基本上都是相互排斥的。

00:18:26 - Saron Yitbarek

这是 Elizabeth Mattijsen,她是 Perl 6 的核心开发人员。2000 年,Elizabeth 参加了在 蒙特雷 Monterey 举办的 Perl 会议。那时开发者认为他们已经停滞不前了,所以 Perl 6 是必要的。Larry Wall 同意了,但是如果说 Perl 5 是他对 Perl 的重写,那么他希望 Perl 6 是由社区来对 Perl 进行重写。由于团队合作可能需要更长时间,甚至用了 14 年,对于那些开发者来说,这是一条漫长而艰难的道路。

00:19:01 - Elizabeth Mattijsen

我们可以说当前实施的 Perl 6 项目实际上是实现它的第三次尝试。

00:19:07 - Saron Yitbarek

按照 Elizabeth 的说法,在这 14 年里有过多次尝试。中间经历了漫长而痛苦的深度的尝试。开发者们心力交瘁;人们陷入了死胡同。到 2015 年圣诞节那天 Perl 6 终于问世时,世界上的许多地方已经开始了新的发展。而需要注意的是 Perl 6 并没有给予成为某种革命性的新事物,从而实现对 Python 的反击。Perl 6 是对原版进行了深思熟虑的重新设计。

00:19:43 - Elizabeth Mattijsen

我认为 Larry Wall 在他的“ 洋葱状态 State of the Onion ”演讲中使用了一个很好的比喻。对他来说,Perl 5 就像《 霍比特人 The Hobbit 》,而 Perl 6 就像《 指环王 Lord of the Rings 》。如果你仔细看过《霍比特人》和《指环王》的故事,你会发现它们基本上是同一个故事。只是《霍比特人》比《指环王》小得多,情节漏洞也更多,没有《指环王》那么宏大的背景。我认为这很好地描述了 Perl 5 和 Perl 6 之间的区别。它基本上是同样的想法,同样的思路,同样的环境,只是对它的重新构想。

00:20:26 - Saron Yitbarek

Elizabeth Mattijsen 是 Perl 6 的核心贡献者。

00:20:32

如今,Perl 甚至可能不在前 20 种语言之列。在外部竞争和内部拖延之间,它还没有向大多数新开发人员证明自己。但这提出了一个大问题,我们真的应该根据一种语言的流行度来判断我们的编程语言吗?或者说我们应该根据其他方面来判断一种编程语言的价值?当昔日的超级巨星成为陪衬时,这到底意味着什么呢?

00:21:06

在世纪之交时互联网泡沫破裂时,Perl 的统治地位开始衰退时,Larry Wall 发表了一个有趣的声明。他认为尽管 Perl 永远不会再成为世界上最流行的编程语言,但它可以成为较小类别中的领先者。Larry Wall 说那才是真正的目标。成为同类中最好的,而不是世界上最好的。正如他所说的,SUV 永远不会和赛车竞争。

00:21:38 - Saron Yitbarek

我想深入研究这个想法,我想了解在细分类别中做到最好对编程语言的真正含义。

00:21:48 - John Siracusa

我是 John Siracusa,我是一个程序员,也是一个播客主。

00:21:53 - Saron Yitbarek

John 实际上共同主持了三个播客:《Accidental Tech Podcast》、《Reconcilable Differences》和《Robot or Not?》。我们刚刚聊到了 Perl 在当今世界的地位。

00:22:06

Perl 在当今世界排名如何?它仍然是最好的计算机语言吗?

00:22:10 - John Siracusa

Perl 6 具有其他语言没有的、其他语言应该具有的东西,我一直在等待其他语言偷学它。例如语法是将常见任务概念化的一种好方法,而在我看来,使用语法来解决解析问题比使用现有的工具更令人愉快、更干净、更好。

00:22:31

在 Perl 中,对象系统的许多部分看起来很琐碎而无关紧要,但我完全期待其他语言最终会采用它,就像许多语言最终采纳了 Perl 5 中的许多思想一样。因此我认为 Perl 6 在许多方面都是最好的。遗憾的是,很少有人有机会使用它。

00:22:52 - Saron Yitbarek

你认为 Perl 6 社区的发展需要做些什么?想让人们更多地参与到 Perl 6 中,需要做些什么?

00:23:00 - John Siracusa

这有点像 Perl 6 的故事,就像它一直在寻找一个真正奇妙的实现一样。这是第二系统问题的一部分…… 第二系统综合症 second-system syndrome ,我想他们是这样称呼……

00:23:11 - Saron Yitbarek

哦。

00:23:12 - John Siracusa

Perl 6 的,人们希望修复世界上的所有问题。他们想要解决的问题之一是运行时环境。是什么在运行我们的代码?运行 Perl 5 和之前的 Perl 4 的东西是一个巨大的 C 程序,这是由具有独特编码风格的开发者编写的。还有大量的宏,它是一种相当难以理解的东西。

00:23:33

Perl 6 的想法是让我们不要再那样做了,让我们不要制造大量的 C 代码。相反,让我们使用一个虚拟机,这在当时是一种时尚,有很多关于如何实现它的伟大想法。最终我们得到了几个中规中矩的虚拟机实现版本,有时这些还会相互竞争,但没有一个达到真正交付语言使用时需要的性能、稳定性和特性。

00:24:01 - Saron Yitbarek

现如今 Perl 到底发生了什么?你对此有什么看法?

00:24:06 - John Siracusa

Perl 5 绝对像是在走下坡路,因为与 Perl 5 同时代的所有其他语言都采纳了它的大部分最佳思想,并获得了更多的支持。也就是说,因为它在很长一段时间内都是王者,所以有很多 Perl 5 代码在运行一些大型的、重要的站点,人们需要维护和扩展这些代码。

00:24:29

这需要很长时间才能消失。只要看看现今仍然存在的 COBOL,人们怎么还在雇佣人在 COBOL 上做维护吧?

00:24:35 - Saron Yitbarek

嗯。是这样。

00:24:36 - John Siracusa

你刚才问 Perl 是不是一门垂死的语言,我提到了 COBOL,这听起来并不乐观。Perl 6 本身会成为主流语言吗?看起来可能性不大。现在对其他语言有非常多的关注,如果 Perl 6 现在还没有得到开发者的关注,我不知道将会需要发生什么变化来让它流行起来。

00:24:54 - Saron Yitbarek

如果你是这样想的,你对 Perl 有什么期望?你希望在 Perl 5 或 Perl 6 中看到什么,以及希望看到将来发生什么?

00:25:04 - John Siracusa

我对 Perl 5 的希望是人们不要忽视它,因为尽管有其它更流行的语言,但今天许多公司仍然采用 Perl 5 做为解决问题的最佳方案。通常这些都是胶水类型语言的问题。如果你发现自己曾经编写过 shell 脚本,并且可能会说:“好吧,我不会用我的‘真正的编程语言’来做这件事。”不管是 Python,还是 Ruby,还是别的什么。但是 shell 脚本可以让我把一堆东西连接起来(胶水类型语言)。Perl 是完成这项工作的更好工具。编写正确的 Perl 脚本要比编写正确的 shell 脚本更容易。

00:25:40 - Saron Yitbarek

我认为归根结底 Perl 可能不再是一个适合入门的语言,但对于经验更丰富的多语言开发人员来说,它是那个你永远不希望扔掉的工具箱中的小工具,而且特定的工具有时让你提升水平的工具。

00:25:58 - John Siracusa

有时我为 Perl 6 感到难过和沮丧,认为它不会有任何进展,有时我想“好吧,这是个不错的小社区”。每个社区都不需要称霸世界,也不需要成为整个行业的主导语言。也许可以就这样一直走下去,就是,无限期地走下去。这就是开源,和编程语言的伟大之处。没人可以阻止你,你可以像以前一样继续开发 Perl 6。

00:26:27 - Saron Yitbarek

John Siracusa 是一名程序员,也是三个科技播客的联合主持人。

00:26:34

语言都是有生命周期的。当新的语言出现时它们能够精确地适应新的现实,像 Perl 这样的选择可能会占据更小的、更小众的领域,但这并不是一件坏事。我们的语言应该随着我们需求的变化而扩大或缩小它们的群体。在互联网开发的早期历史中,Perl 是一个至关重要的角色,它以各种方式与我们联系在一起,只要看一看它的历史就会发现它的存在。

00:27:11

下次在《代码英雄》中,我们将讨论:是什么将一种语言变成了标准?以及在基于云的开发世界中,新的标准将如何出现?

00:27:26

《代码英雄》是红帽的原创播客。如果你想深入了解 Perl 的故事,或者任何我们在第三季中探索的编程语言,请访问 redhat.com/commandlineheroes 。我们的网站里有许多精彩内容等你去探索。

00:27:49

我是 Saron Yitbarek。下期之前,编码不止。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-3/diving-for-perl

作者:Red Hat 选题:bestony 译者:Mikedkmilk 校对:Northurland, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出