Raku 编程/Perl 历史
Perl 编程语言由拉里·沃尔(Larry Wall)于 1987 年创建,他是一位语言学家,也是 Unisys 的计算机系统管理员。Perl 是一种动态编程语言,在其历史的大部分时间里,被认为是“脚本语言”或命令行管理工具。然而,从语言的第 5 版开始,Perl 成为了一种功能强大且实用的通用编程语言,在网络开发人员、系统管理员和业余程序员中一直很受欢迎。
Perl 编程语言是作为开源自由软件项目开发的,并逐渐扩展,直到发布了第 5 版,这是 Perl 的当前技术水平。在所有这些发展过程中,Perl 保持与以前版本的向后兼容性。Perl 5 解释器可以读取、理解和执行(在大多数情况下)用 Perl 1、Perl 2、Perl 3 和 Perl 4 编写的程序。不幸的是,这使得 Perl 5 解释器内部变得混乱,并且使许多编程任务比必要的更难。
另一个绊脚石是 Perl 5 语言规范;它根本不是规范。Perl 解释器本身就是标准:解释器的行为是 Perl 的“标准”行为。要复制 Perl 语言所有奇怪和特异的行为,唯一的方法就是使用该标准软件。
到 2000 年,很明显 Perl 需要注入活力。
“[P5P / Perl 大会]会议最初是 Chip Salzenberg、Jarkko Hietaniemi、Elaine Ashton、Tim Bunce、Sarathy、Nick Ing-Simmons、Larry Wall、Nat Torkington、brian d foy 和 Adam Turoff 的聚会,他们聚在一起起草了一份宪章,因为社区似乎正在分裂。Jon 迟到了会议,发现我们在谈论社区,并开始扔东西来表达他对 perl 本身停滞不前甚至可能消亡的不满,并认为我们应该谈论振兴 Perl。据我后来了解,杯子事件是计划好的戏剧。所以,它已经是既成事实,但这场愤怒就是它被公开。
Perl 6 的时机已经成熟:对 Perl 语言从头开始的重写。为了解决语言的基本问题并添加必要的特性,放弃了与 Perl 5 的兼容性。因此,它与 Perl 5 完全不同,但同时又明显地属于同一个“语言家族”。与随着时间的推移而有机发展且完全特异的 Perl 5 不同,Perl 6 从一套规范开始,并在多个独立且平等的实现中实例化。
Perl 6 从一个长期的社区参与和 RFC 流程开始。社区成员被要求为新语言贡献想法和建议。Larry 审查了建议,保留了好的,删除了不好的,并试图以统一的方式将所有内容整合在一起。Perl 5 因为“hacky”和不一致而受到批评,所以 Perl 6 应该从一开始就避免这种情况。在所有建议被汇总和讨论后,Larry 发布了一系列设计文档,称为**启示录**。每个启示录都按数字编号,大致对应于“Programming Perl”一书中的章节,旨在揭示在 Perl 6 设计中正在考虑的概念和权衡。从这些文档(这些文档缺乏细节)中,Damian Conway 制作了一系列相应的解释性文档,称为**解释**。启示录揭示了一些设计,而解释则用日常程序员可以理解的代码来解释这些设计意味着什么。后来,随着设计的成熟,创建了称为**提纲**的设计规范,以综合和记录 Perl 6 的设计。提纲目前是 Perl 6 语言的官方设计文档。
在 2019 年 10 月,Perl 6 社区投票决定将名称改为 Raku。
Perl 一直是一种灵活且功能强大的编程语言。Perl 团队最重要的口号之一是**有多种方法可以做到**(TIMTOWTDI,发音为“Tim Toady”)。Raku 是一种非常灵活的语言,它结合了许多不同的编程范式来支持各种程序员和不同的编程任务。由于这种 TIMTOWTDI 哲学,Raku 是一种非常大的编程语言,具有许多不同的特性和功能。
另一种说法是 Perl 给了你很多绳子,但你必须小心不要被它绊倒。Raku 中有许多想法在流传,但并非所有想法都适用于所有编程任务。此外,Raku 中有很多事情是可能的,但可能不会被整个编程社区认为是“最佳实践”。重要的是要学习如何在 Raku 中编写某些东西,以及何时以某种方式编写东西。如果没有这些知识,程序很容易沦为毫无意义、无法理解的乱码。
在本书中,我们将尝试向您展示一些最佳实践,并尝试讨论每个特性在哪些地方有用,哪些地方没有用。