Perl 6 GitHub 仓库中的一个 issue 

Perl 6 GitHub仓库中的一个问题“Perl使用Perl
6的名字令人困惑和反感”(”Perl” in the name “Perl 6” is confusing and
irritating)引起了广泛的关注,这个问题由Perl 6的核心开发者Elizabeth
Mattijsen创建,主要是建议对Perl 6进行重命名。

澳门葡萄京官方网站 1

澳门葡萄京官方网站 2

顶着Perl
6核心开发者的身份,虽然lizmat的这一行为有”Troll”(发起一个话题,通过引起争论来获得自我满足感)的嫌疑,但事实上这是经过深思熟虑和仔细讨论而发表的,他们希望找到方法以绕过Perl社区中一些存在严重分歧的问题。

文章来源丨InfoQ

▲(此前进行过相关报道)

从此问题获得的「赞」来看,支持重命名Perl
6的开发者不在少数。之所以获得这么多人的支持,是因为Perl
6和旧版本的Perl语言差别十分大——甚至被认为是两门不同的编程语言,毕竟两者源代码不兼容。

10 月 30 日,Python 之父 Guido 宣布退休,离开 Dropbox。

顶着 Perl 6 核心开发者的身份,虽然 lizmat 的这一行为有
“Troll”(发起一个话题,通过引起争论来获得自我满足感
的嫌疑,但事实上这是经过深思熟虑和仔细讨论而发表的,他们希望找到方法以绕过
Perl 社区中一些存在严重分歧的问题

明明是两门相差甚远的语言,不过Perl 5和Perl
6这样的命名经常会让人误以为后者是前者的延续版本,然而Perl
6是一门新语言,它采用和Perl
5不一样的内核,速度更快、外部扩展API更加清晰,代码库也比Perl
5也更轻量。更重要的是,Perl 6的性能现在已经达到了可以与Perl
5相媲美或超越它的程度。如果现在进行重命名,将会是十分合适的时间。

他发推文说,“这件事感觉既苦涩又甜蜜:苦涩的是,我马上要离开
Dropbox,现在已经退休;甜蜜的是,在 Dropbox
做工程师期间,我学到很多,比如类型标注就来自这段经历。我会非常怀念在这里工作的日子。”

从此 issue 获得的「赞」来看,支持重命名 Perl 6
的开发者不在少数。之所以获得这么多人的支持,是因为 Perl 6 和旧版本的
Perl 语言差别十分大 —— 甚至被认为是两门不同的编程语言(虽然都叫
Perl),毕竟两者源代码不兼容。

说到底,其实Perl社区里面的开发者对于名字不太计较,不过还是支持重命名Perl
6,因为这样能确保Perl
6在其他项目、商标、版权、现有技术、域名和搜索引擎优化等方面拥有一个清晰可辨的“可用”名称。不过也有开发者考虑到对Perl
6进行重命名之后,是否会影响到市场。

Python 正在吞噬世界

明明是两门相差甚远的语言,不过 Perl 5 和 Perl 6
这样的命名经常会让人误以为后者是前者的延续版本(版本号保持了延续性),然而
Perl 6 是一门新语言,它采用和 Perl 5 不一样的内核,速度更快、外部扩展
API 更加清晰,代码库也比 Perl 5 也更轻量。更重要的是,Perl 6
的性能现在已经达到了可以与 Perl 5
相媲美或超越它的程度。如果现在进行重命名,将会是十分合适的时间。

对于重命名Perl的问题,Perl创始人Larry
Wall也发表过自己的看法,他认为这两门“姊妹”语言现已足够成熟,重命名的问题可以由社区自行处理,而不再需要获得BDFL的批准。

如今,人们对 Python
的热情已经远远超出了最初的开发者圈子。一些人预测,随着 Python
用户群的快速增长,它很快会成为世界上最流行的编程语言。每天有数以百万计的人使用
Python,用户群呈现出指数级的增长,几乎没有出现下降的迹象。

说到底,其实 Perl 社区里面的开发者对于名字不太计较,不过还是支持重命名
Perl 6,因为这样能确保 Perl 6
在其他项目、商标、版权、现有技术、域名和搜索引擎优化等方面拥有一个清晰可辨的“可用”名称。不过也有开发者考虑到对
Perl 6 进行重命名之后,是否会影响到市场。

不管是专业的还是业余的开发人员,他们都在使用 Python
处理大大小小的任务,特别是 Web
开发人员、数据科学家和系统管理员。今年出现的第一批黑洞图片就是用 Python
拼接出来的。

对于重命名 Perl 的问题,Perl 创始人 Larry Wall
也发表过自己的看法,他认为这两门“姊妹”语言(类比一下 C 和 C++
的关系)现已足够成熟,重命名的问题可以由社区自行处理,而不再需要获得
BDFL 的批准。

Python 在一些世界知名的组织中扮演着关键角色,比如, Netflix 用 Python
向全球 1 亿多户家庭提供流媒体视频, Instagram 用 Python
实现图片分享,NASA 借助 Python 来探索太空。

(文/开源中国)    

Python 的早年时期

澳门葡萄京官方网站 ,Python 原先是荷兰程序员 Guido van Rossum 的一个个人项目。20 世纪 80
年代末,van Rossum 在荷兰国家数学和计算机科学研究中心的 CWI
部门开发分布式系统。由于对已有的编程语言感到十分失望,他决定开发一门新的语言——一门既易于使用功能又强大的语言。

Python 之父 Guido van Rossum

对于当时的 van Rossum
来说,使用仅有的几种编程语言完成任何一件事情都显得很困难。他正在开发的
Amoeba 分布式计算系统要求他使用 C 语言或 Unix
shell,但这两种语言都有很大的局限性。C
语言要求开发人员自己手动管理内存,容易埋下潜在的
bug,而且还缺少可重用的代码库。开发人员想要完成日常任务,需要在每个新项目中重新发明轮子。Unix
shell
存在另外一个问题——它虽然为日常任务提供了一些实用程序,但它们的运行速度太慢,无法处理复杂的逻辑。

这些语言对开发人员造成的限制如此之大,以至于在 van Rossum
看来,他自己创建的这门解释型语言——从 ABC
语言借用了一些特性——似乎是最好的选择。

van Rossum
回忆道:“我当时在想,为什么不自己开发一门语言呢?我完全可以借鉴 ABC
的一些想法,并将项目的规模缩小一些,把原先需要花三年时间完成的东西缩短至三个月内,让它变成我自己的个人项目。于是,Python
诞生了”。

1989 年末,van Rossum
开始认真地开发这门语言,并借用了他最喜欢的喜剧团体“Monty
Python”的名字,又因为与蛇有关系,后来就有了那个盘绕的巨蟒的 logo。

他说:“当时我的社交生活并不丰富。除了看电视就是写代码,有时候也会同时做这两件事”。

三个月之后,van Rossum 做出了可运行的 Python 原型。

他说:“虽然现在的 Python
有很多在当时并不存在的抽象特性,但语言本身仍然始终如一”。

“那时,Python 已经具备了解析器和运行语言所需的基本组件。第一个可运行的
Python
程序放到现在仍然可以运行”。它们的函数定义是一样的,缩进是一样的,字典和元组的创建语法是一样的,交互式提示符也是一样的。

当他的两个同事开始使用这门语言处理日常任务时,van Rossum
并没有指望它会流行起来。因为他知道,在互联网时代到来之前,让一门编程语言流行起来有多么困难。

在今天,只需要点击几下鼠标就可以把一款软件分享给全世界,但在上世纪 80
年代,这是一件非常费力的事情。van Rossum 回忆起当时推广 ABC 遇到的困难:

“我记得大约在 1985
年,我第一次去美国度假。那是我第一次去美国,我的行李箱里装了一沓磁带”。

1991 年,van Rossum 通过 新闻组向全世界发布了
Python。这在当时基本上算是一种开源许可协议,比”开源许可协议“这个术语本身早了六年出现。虽然当时的
Python 解释器仍然需要将 21 个单独的部分连接成一个压缩文件,并需要连夜从
Usenet
网络上下载下来,但与几年前线下送磁带的方式相比,它仍然要高效得多。

他说:“我希望 Python
可以取得成功,毕竟之前我做的另一个东西基本上以失败告终”。

van Rossum 说,在很长一段时间之后,他才知道 Python
的用户群在增长。渐渐地,他意识到 Python 的发展势头正在形成,在与 Python
社区进行了一段时间的交流之后,他知道,Python 成功了。

Python 为什么会赢

Python 在 20 世纪 90 年代初期到中期开始受到关注,Python
的时代到来了,这让 van Rossum 感到震惊。

van Rossum 相信,被 Python 吸引过来的开发者,他们转向 Python
的原因与他当初创建 Python
的原因是一样的。他们需要一门高级的脚本语言,能够在易用性和功能之间取得平衡。他们希望能够结束在
C 语言中手动管理内存、在开始新项目时需要为重复任务重新实现代码的日子。

Warsaw 说,Python 在可用性和功能之间取得了平衡——在 20 世纪 90
年代早期,任何一门主流编程语言都没能提供这种平衡。”我写过很多 Perl、Tcl
和 C 代码,感觉它们一点都不好玩。Python
一出现,我就想,‘哇,它让编程变得更有趣了’”。

不管是过去还是现在,Python
提供的都是清晰而明确的语法,它使用缩进将代码分组成块,让开发人员更容易阅读和理解代码。

1994 年,Barry Warsaw 在第一次 Python 研讨会上

Python 强调代码的简洁和可读性,这并非偶然。van Rossum
曾公开表示,编程语言不仅要告诉计算机该做什么,还要便于在开发者之间传递思想。

Ryan 说,除了可读性之外,Python 很早就内置了一些通用的功能,这让 Python
从其他语言中脱颖而出。“你从一开始就可以使用某些功能,比如类和异常处理。Python
还提供了对 lambda、map 和 filter
等函数的支持,这些东西在很多情况下都非常有用”。

如果 80 年代末的主流编程语言能够再好一点,或许就不会给 Python
留有机会。van Rossum 开发 Python 的动机之一就是因为 Perl 与他在 CWI
工作时使用的 Amoeba 分布式计算系统不兼容。他说:“Python 的幸运之处在于
Perl 不能被移植到 Amoeba。如果 Perl 可以被移植到
Amoeba,我就不会想要自己去开发一门语言”。

尽管 Python 在发布后吸引了一批铁杆粉丝,但在 20 世纪 90 年代,Python
在编程语言方面仍然处于劣势。van Rossum 说,Python 的竞争对手是 Tcl/Tk 和
Perl,这两种语言的目标与 Python 是一样的,即简单易用且功能强大。

他说:“上世纪 90 年代,在前三大编程语言中,Perl 无疑是第一名,Tcl/Tk
是第二名,而 Python 则是第三”。

Stack Overflow 开发者报告显示,从开发者活跃度方面看,Python
是增长最快的编程语言,而 Perl 在缩水,它甚至都没有出现在最新的 Stack
Overflow 开发者报告中。

下图显示了这种爆炸式的增长。近年来,Stack Overflow 网站上与 Python
相关的问题的增长速度远远快于其他编程语言。

那么,Python
是如何超越昔日的竞争对手的呢?又如何解释这两门语言之间截然不同的命运呢?van
Rossum
认为,这与代码库在达到一定规模后的维护难易程度有关。他说,“从人们的经验来看,Perl
适合用来编写行数较少的脚本,但如果你的主干代码超过了 500
行,除此之外还有数千行分支代码,那么在 Perl
中维护这些代码就需要遵循很多原则。而在 Python
中,你不需要遵循那么多原则,代码仍然具有很好的可读性和可维护性”。

Python
一方面简单易用,一方面又健壮到可以用来开发大型的应用程序,这两个因素的组合正是
Python 在上世纪 90 年代取得成功的原因。

“一些互联网开发者想要开发越来越大型的应用程序,而且他们意识到用 Python
开发应用程序要比用 C 语言、C++ 或 Java 容易得多”。

随着 Python 在 20 世纪 90 年代逐渐流行起来,当时还在 CWI 工作的 van
Rossum
发现他创造的这门编程语言越来越多地把他与来自世界各地的人联系在一起。


Python 与 Web

20 世纪 90 年代中期,Python
出现了新的应用场景,从音频录制和播放到首次涉足 Web 开发,而 Web
开发后来成为 Python 的主要应用场景。

van Rossum 说,“Web
开发很重要,它对我来说也是一件非常有趣的事情”。Python 开始与 Perl 和
Shell 脚本一起被用于 Web
服务器后端开发。“你可以创建动态网页,这也是我最喜欢的 Python
应用场景之一”。

Gartner 公司的 Ryan 说,上世纪 90 年代,Python
之所以能够在开发人员当中流行起来,主要是因为它可以用来快速地创建强大的脚本。“作为一门功能非常强大的脚本语言,它降低了很多用户的使用门槛”。

1994 年,Python 引起了 Michael McLay 的注意。McLay
当时在美国国家标准局担任高级职位,现在在美国国家标准与技术研究所。McLay
当时在想如何也让国家统计局的科学家们从 Python 的易用性中得到一些好处。在
van Rossum
看来,国家统计局的科学家们“需要处理大量数据,但他们都不擅长编程”。

为了在 NBS 中推广 Python,McLay 邀请当时还在荷兰 CWI 工作的 van
Rossum,让他到 NIST 做了两个月的客座研究员。这一举动成了 Python
未来发展的催化剂,也是 van Rossum 人生的一次重要转变。

van Rossum 和 Warsaw、Roger Masse 在第一次 Python 研讨会上

正是在这个时候,他们在国家统计局的办公室里举行了第一个 Python
研讨会。van Rossum、Barry Warsaw 和其他早期的 Python
爱好者聚在一起,分享他们正在用 Python 做什么,以及对 Python
未来发展的期望。

也就是在这间办公室里,van Rossum 认识了 Bob Kahn。Kahn 是 TCP/IP
协议的作者。

那次会面给 van Rossum 带来了一份工作邀请——与 Kahn
一起在美国国家研究创新联合会 (CNRI) 工作。CNRI
是一个位于弗吉尼亚州的非盈利研究组织,专注于网络技术的战略发展和研究。

就像 Python
满足了人们对新型编程语言的期待一样,在收到这份工作邀请时,van Rossum
刚好对自己在 CWI 未来的工作充满了焦虑。

自 1991 年 Python 公开发行以来,Python 用户群有了显著的增长。到了 90
年代后期,Python 吸引了大量来自全球各地的用户。在此期间,随着 Python
软件基金会前身的组建,Python
语言的管理工作开始走向规范化。随着社区的发展,两年一度的 Python
研讨会逐渐演变成更大型的年度活动,并最终演变成 PSF 的年度
PyCon,直到今天仍然很受欢迎。

到了 21 世纪,Python 用户群越来越壮大,早期的 Python 用户担心如果 van
Rossum 发生意外会对 Python 造成什么样的影响。

不管怎样,van Rossum 继续扮演着 Python 的核心角色。他就是 Python
的核心,这种想法从未消失,有人称他是
Python“仁慈的终身独裁者”。这个半开玩笑式的头衔流传了多年。

van Rossum
说:“在很长一段时间内,我承受住了压力,还培养出了项目管理技能。我将很多事情委派给别人,让他们按照自己的想法做事”。

实际上,van Rossum 确立的 Python 开放本质是 Python 成功的决定性因素。

Python 的演变

在这期间,Python 有了飞跃式的发展。2008 年,Python 3.0 发布,让 Python
成为一门现代化的编程语言。近来,Python 的管理方式也发生了重大变化。

这些变化是去年发生的,当时 van Rossum 卸掉了 BDFL 的头衔,原因是人们对
PEP572 中引入的赋值表达式存在分歧。

虽然赋值表达式的引入是为了更高效地编写代码,但 van Rossum
在网上遭到了反对者的严厉批评,一些人认为这一提案会降低代码的可读性和可维护性。

van Rossum
说,虽然他已经习惯了围绕新功能而展开的争论,但这次有人诋毁他,他们的态度十分强硬,甚至有人对他进行人身攻击,所以他决定辞职。

他说:“那些在技术上持不同意见的人在社交媒体上开始抱怨我破坏了 Python
的决策流程,或者说我犯了一个严重的错误。我感到非常失望,我感觉受到了来自背后的攻击”。

“过去,在决定是否要对 Python
做出变更或改进时,一群核心开发人员会讨论这件事的利弊。他们会得出一个明确的共识,如果结果不明确,我会在脑子里反复考虑,然后做出决定。在
PEP572
这个提案上,尽管它存在争议,但我还是选择了“是的,我想做这个”,但人们并不买账。

“这并不是一种反叛,但我觉得我没有得到核心开发者社区足够多的信任”。

他认为,Python 的争议方式之所以发生变化,部分原因在于现在有太多的人使用
Python。

“Python
社区的规模越来越大,这可能也是原因之一。当然,要达成任何形式的共识都很困难,因为不管你做出什么样的决定,总会有一些持不同意见的人”。

Python 核心开发者 Mariatta Wijaya

今年早些时候,负责维护 CPython
解释器的核心开发人员成立了一个指导委员会,用来监督 Python
未来的发展。成员包括 van Rossum、Warsaw 以及其他核心开发者 Brett
Cannon、Carol Willing 和 Nick Coghlan。

Warsaw
说,当一门编程语言的用户群以如此快的速度增长,使用这种方式来管理语言的发展是很有必要的。

他说,“我认为 van Rossum 真的把所有事情都扛在自己的肩上了”。

“25 年前,当 Python 还只是一门小众编程语言的时候,社区规模也小得多,van
Rossum
可能还能自己扛,但即使是这样,他一个人的工作量也很大。我认为,考虑到他个人的健康以及社区的参与度问题,将这些重担分摊到五个人身上会更好”。

Warsaw 说,在每发布一个 Python
新特性版本后都会进行一次指导委员会选举,为建立下一代 Python
语言核心领导层做好准备。

他说:“如果 Python 在 25 年后还能保持常青,那时候应该不是 van Rossum
和我在管事了”。

指导委员会的成立也受到了 Python 核心开发者社区的欢迎。核心开发人员
Mariatta Wijaya
说,这一举动感觉像是朝着正确的方向迈出了一步。她说:“对我来说,指导委员会比让一个人决定所有事情要好得多——这是一个巨大的责任和负担。这是一个好迹象,它意味着社区将会有更多的输入”。

Python 的未来

虽然 Python
继续以惊人的速度吸引新用户,但社区内的一些人也看到了未来要面临的挑战。如果
Python 想要保持常青,就要不断进化。

在今年的 Python 语言峰会上,BeeWare 联合创始人 Russell Keith-Magee
说,如果对移动和 Web 平台的支持得不到改善,Python 将面临“生存危机”。

他说:“手机和平板电脑对市场的渗透程度是台式机和笔记本电脑从未达到过的,但整个社区都没有一个关于如何在这些设备上使用
Python 的案例。那么,当有一天笔记本电脑逐渐成为小众设备时,Python
又将面临怎样的窘境?”

他指出了 Python 的一些问题,比如,Python 还不支持在非 x86
硬件平台上编译代码,Python 的测试套件很容易在移动和 Web
平台上崩溃,Python 应用程序的体积太大,在 Android、Windows 和 Web
平台上开发 GUI 代码时需要使用 asyncio
库,而这需要做额外的工作,标准库中的很多模块与 CPython
之外的解释器不兼容。

Warsaw 说,Keith-Magee 提出了很多很好的观点,并认为 Python
需要与新的平台——手机、平板电脑以及 Web 技术保持接轨,这点很重要。

Warsaw 说,“目前 Python 在这方面并没有出彩的表现”,他希望 iPhone 或
Android 手机也能下载到使用 Python
开发的应用程序,而用户甚至都不知道“原来它们是用 Python 开发的”。

现代处理器芯片的核心数量在不断增长,Warsaw 也希望 Python
能够更好地让任务运行在多个处理器核心上。

他对 Eric Snow 在 Python
子解释器方面所做的工作十分感兴趣。他说:“我希望看到有更多的处理任务能够利用多核处理器”。

Snow 正在参与一个长期项目,这个项目旨在让 Python
更容易地在多个处理器核心之间分配任务。他使用了现有 Python
子解析器的修订版本,并改变了子解析器与全局解释器锁之间的交互方式。

Warsaw 说:“这些功能不会出现在 Python 3.8 中,但或许会在 3.9
中加入。我觉得我们将在未来两到两年半的时间内看到这些功能。我真的很高兴
Eric 能够继续做下去,这是一项非常重要的工作”。

他说,之前有过一些失败的项目,但这些项目给我们上了有趣的一课,让我们知道
Python 如何能更好地在多个核心之间分配工作负载。

Python
社区正在对标准库进行现代化。最近发布了一项提案,建议将过时的模块从标准库中移除。Python
的标准库通常被认为是 Python
的优势所在,因为它被用来处理很多常见任务,这也就是为什么人们都说 Python
有“内置电池”。但在今年的 Python
语言峰会上,有人提出了这样的一个问题:如果人们能够从 PyPI
自行选择模块,而不是使用内置的标准库,这样是否会更好?

还有一个问题是,Python 指导委员会的成员组成能否更好地反映 2019 年 Python
用户群的多样性?

Wijaya
说:“我希望指导委员会能够具备更好的多样性,不仅在性别方面,还有种族等方面”。

“在 PyCon 大会上,我与来自印度和非洲的 PyLadies
成员进行了交谈。她们说,‘当我们听到有人说到 Python 或 PyLadies
时,我们想到的是北美或加拿大人。但实际上,其他国家有更大的 Python
用户群,为什么不去多关注一下他们呢?‘我认为她们说得很有道理。所以,我希望看到这种情况发生,我认为我们都需要尽自己的一份力量。”

Warsaw 说,尽管有一个“仁慈的独裁者”在掌管一切,但近年来,有很多有关
Python 发展的理念来自于社区。

他说:“这些想法真的是从社区中冒出来的,而不是自上而下推行的。”

简单的社区项目也能对 Python 产生巨大影响。比如,类型提示功能,Python 3.5
的一个特性,灵感来自于 2012 年一位博士生发起的 mypy
项目。类型提示可以执行可选类型检查,帮助开发人员发现某一类
bug,避免让这些 bug 渗透到程序中。

当有一群人同时开发一个大型的代码库时,这个额外的安全层就会非常有用。

Warsaw 说,“在我看来,这样可以让 Python 渗透到更大的组织中”。

此外, asyncio 是另一个社区在驱动 Python 发展的例子。

随着指导委员会的成立和空前的用户群增长,van Rossum
乐观地认为:“由社区驱动的 Python 进化”将继续取得“无与伦比的成功”。

他说,”一个拥有坚实的核心开发者的社区,现在有了一个新的管理制度,我想我们为
Python 语言的进化做好了更充分的准备”。

Warsaw 说,如果有人怀疑 Python 社区是否有能力继续为 Python
找到新的应用场景,那就让他们看看使用 Python 捕捉的第一张黑洞图片。

“Python 社区中总有那么一些人,我把他们看成是疯狂的 Python
科学家。他们总是在想,今天能把它做成这样,那么明天能不能走得更远?”