Python 及其社区进入新阶段
关于 Python 的 BDFL Guido van Rossum,他对 Python 社区的奉献,PEP 572 以及对该语言、开源和整个计算机世界健康发展的希望。
Python 是一门令人惊叹的编程语言,这是毫无疑问的。从 1991 年的 humble beginnings 开始,它现在几乎无处不在。无论您是进行 Web 开发、系统管理、测试自动化、DevOps 还是数据科学,Python 很可能在您的工作中发挥作用。
即使您没有直接使用 Python,它也很可能在幕后被使用。使用 OpenStack 吗?Python 在其开发和配置中起着至关重要的作用。在您的计算机上使用 Dropbox 吗?那么您的计算机上就运行着 Python 的副本。使用 Linux 吗?当我在 1995 年购买 Red Hat Linux 时,配置非常轻松——这要归功于用 Python 开发的可视化工具。
当然,现在有许多学校和教育项目都在教授 Python。麻省理工学院的计算机科学入门课程几年前从 Scheme 切换到 Python,世界各地成千上万的大学也纷纷效仿。我 15 岁的女儿参加了一个技术和创业项目——她正在学习 Python。
目前,对 Python 开发人员的需求几乎是无限的。事实上,Stack Overflow 去年报告称,Python 不仅是其网站上最流行的语言,而且也是增长最快的语言。作为一名自由 Python 培训师,我可以证明这种受欢迎程度。世界上一些最大的计算机公司现在都在 регулярно 使用 Python,而且他们对该语言的使用正在增长,而不是萎缩。
通常,具有如此巨大影响力的技术需要一个庞大而活跃的营销部门。但 Python 当然是开源软件,它的成功归功于众多贡献者——对核心语言、文档、库以及大量在线博客、教程、文章和视频的贡献。我经常提醒我的学生,人们通常认为“开源”是“免费”的同义词,但他们应该将其视为“社区驱动”的同义词——毫无疑问,Python 社区非常强大。
如此强大的社区并非凭空而来。毫无疑问,Guido van Rossum,Python 的创建者和自始至终的领导者,是一位非常有效的社区组织者和领导者。
程序员通常更关注代码而不是人,更关注效率而不是同理心。我们往往头脑发热,一头扎进对晦涩技术点的辩论中。Guido(Python 开发人员普遍称呼他)在 Python 的管理中采取了不同的基调。从一开始,他就思考谁会使用这门语言,他们容易犯什么错误,以及这门语言如何最好地为这些人服务。他确实与其他开发人员就功能、错误和语言方向进行了辩论,但他通常通过尊重和理性的论证来进行,而不是像开源世界中常见的带有轻蔑、充满谩骂的长篇大论。
通过这种方式,Guido 不仅构建了一种伟大的语言,还构建了一种给予、分享和帮助的文化。我们不应认为这是理所当然的。虽然编程可能很困难,但管理其他人并考虑他们不同的观点则更加困难。
随着时间的推移,这种文化导致许多人参与到 Python 语言和生态系统中。两个月前我在克利夫兰参加 PyCon 时,不禁对来自世界各地、为各种任务使用 Python 的大量人员感到惊讶。Guido 本人甚至没有在会议上发言。我希望他很满意地走来走去,欣赏成千上万的人对他们创造的语言充满热情的可怕景象。
对我来说,也许更令人印象深刻的是,在 PyCon 之后的开源冲刺日中,仍有数百人留下来。几乎所有这些人都在自愿贡献自己的时间来改进他们每天使用的 Python 语言的某些部分。这种奉献精神,加上对贡献和帮助他人的兴趣,是开源的普遍标志,尤其是 Python 的标志。
今天,Python 不仅拥有强大的社区,还拥有健全的组织结构。Python 软件基金会管理着可以帮助开发人员为该语言做出贡献的资金。核心开发人员组织得令人印象深刻,协调着大小版本的发布,并提供可与商业软件公司轻松媲美的稳定性和清晰度。
但是,尽管 Python 的官僚机构和生态系统随着时间的推移而发展壮大,但有一个人仍然处于这一切的中心:Guido van Rossum,他被誉为 BDFL,即仁慈的终身独裁者。虽然这意味着 Guido 理所当然地受到了很多赞扬,但也意味着他也是无数诽谤和攻击的目标。
Python 世界中也许最大的争议是从版本 2 过渡到版本 3。实际上,我不应该在这里说“是”,因为我的许多客户仍在进行这种更改。很容易说这种不兼容的升级处理得很糟糕。您可以肯定,Python 社区已经吸取了教训,并且永远不会再进行这样的突破。但是,最终结果——Python 3——绝对比 Python 2 更好。Guido 和核心开发人员是否应该以不同的方式处理它?也许吧,但在事后看来很容易说。大量将 Python 3 称为巨大错误的博客文章一定伤害了 Guido。但作为一名管理者,部分职责是能够接受、过滤甚至忽略批评,而他做到了,并且做得非常出色。
长期以来,关于 Python 更改的决策都是通过 PEP(Python 增强提案)做出的——这些文档中提出了新想法,经过反复讨论、修改,最终获得批准或拒绝。作为 BDFL,Guido 的意见和批准始终是 PEP 被视为“已批准”所必需的。
多年来,我学会了信任 Guido 的判断。在很多情况下,我会阅读 PEP,翻白眼,心想,“真的吗?难道没有更好的方法来做这件事吗?” 但随着时间的推移,我通常会说,“嗯,也许他是对的。” Guido 不仅是一位才华横溢的开发人员和管理者,而且还是一位有品味和远见的人,他的经验使他能够比社区中的许多其他人更好地感受到语言的正确方向。
然后,我们得到了关于“赋值表达式”的 PEP 572。Python 区分语句(执行操作)和表达式(返回值)。“if”语句必须包含一个表达式,而赋值是一个语句,这意味着您不能说
x = 5
while x = x - 1:
print(f"x is {x}")
上述内容作为语句,在执行之前会被 Python 标记为错误。
PEP 572 引入了一种新语法“赋值表达式”,它将允许上述操作生效。该 PEP 最近已获得 Guido 的批准,并将成为 Python 3.8 的一部分。它看起来像这样
x = 5
while x := x - 1:
print(f"x is {x}")
事实证明,大量的 Python 开发人员,包括一些核心开发人员,不喜欢这一点。事实上,他们非常不喜欢这一点。我必须说,我仍然不喜欢它,但我在这里应用了我通常的“听从 Guido”的想法,相信几年后,我会同意赋值表达式是 Python 中一个好的且有用的东西。毕竟,我已经改变了对 str.format、枚举和类型注释的看法;也许随着时间的推移,我也会同意这一点。
大量的 Python 开发人员决定不对他们的判断进行推迟,并抨击 PEP 572 完全不合规,甚至“非 Pythonic”,这是一个强烈的措辞,用来指责这位近三十年来一直主导 Python 开发和方向的人。
这些指责已经造成了损害。昨天,Guido 向 python-committers 邮件列表发送了一条消息,称他将“永久休假,不再担任 BDFL”。他进一步说,“你们都将靠自己了。”
一方面,令人非常悲伤的是,关于 PEP 572 的讨论变得如此激烈,性质如此不符合 Python 的特性,以至于 Guido(所有的人!)发现自己不堪重负和不快乐。他的远见和意见将被怀念,尽管他确实指出他将继续成为核心贡献者。您可以肯定,他会说很多话,我们明智的做法是听取他的意见。
但另一方面,也许我们应该将此视为 Python 社区走向成熟的一个机会。Guido 领导着一个由数千人组成的全球开发团队数十年,其中他的大多数开发人员都是志愿者。这绝非易事,他应该有机会重置,甚至退休。我的意思是,您能期望一个人做这种工作多久?
此外,Python 社区可以而且应该超越 BDFL 式的领导。Guido 本人也很好奇会发生什么,正如他写道:“那么你们都打算做什么?创建一个民主政体?无政府状态?独裁统治?联邦制?”
事实是,虽然仁慈的独裁统治(根据定义)是好的,但它们是不可持续的。因此,Python 社区现在将不必发展壮大,而是要进化——成为一个可以比任何一位个人贡献者更长久的机构,同时继续对世界产生巨大影响。
在我看来,Guido 是一位鼓舞人心的开发人员、领导者和管理者。他所创造的东西影响了世界各地无数的人。我希望并期望 Python 社区的未来将反映其创始人的力量和智慧,并且当它进入这个新阶段时,它将继续产生同样的影响。这个过渡时期可能会有些混乱,但它也将是健康的——最终结果将对 Python 有利,对开源有利,对开发人员有利,对每个使用计算机的人都有利。