Python 如何从一门编程语言发展成为一个社区

一部即将上映的纪录片讲述了 Python 如何从一群开发者合作开发演变为拥有自己的基金会(及用户大会)。

1991 年首次发布时,Python “ 并不赚钱,”长期担任 Python 社区组织者的 Paul Everitt(现为 JetBrains 的 Python 和网络开发倡导者)回忆道,“但我们相信它。热情就在那里——我们在为世界做善事。”

然而令人惊讶的是,Python在成为全球#1最受欢迎的编程语言的早期道路上充满了坎坷,它得以在非营利组织Python软件基金会(Python Software Foundation)的庇护下稳步成长。

这是埃弗里特将在Cult.Repo(原为专注于科技领域的招聘平台Honeypot的一部分)即将发布的纪录片中分享的故事

“我们对Python的成功如此着迷,” 埃弗里特本周告诉我——但被忽视的是“关于人们的故事,关于基金会的故事,关于发生的事情和没有发生的事情的故事。”

元素周期表

其中有热情,有试错,也有几次令人惊心动魄的险情。但传递出的信息是,社区很重要——而社区的价值观确实能带来改变。

社区的诞生

在通过 Usenet 新闻组分发 Python 多年后,Python 创建者 Guido van Rossum 于 1994 年参加了一次具有突破性的线下会议。“显然,我们一直在通过电子邮件交流,”埃弗里特回忆道,“但这次有一个实体活动——20个人,马里兰州盖瑟斯堡——在一个没有窗户的政府办公楼里。

“那就是社区的开始,”他带着怀念的语气说,“作为与语言分离的独立存在。”

会议地点是国家标准与技术研究院,埃弗里特笑着回忆道,当时那里的空间显得如此宽敞——与后来Python大会的规模相比。

“把Guido带进那个房间的人是Python的无名英雄,”埃弗里特说——未来的Python核心开发者巴里·华沙迈克尔·麦克莱,当时是NIST的电子工程师。因为他们最终为范罗斯姆在国家研究倡议公司谋得了一份工作——这家成立于1986年的非营利组织专注于通过改善全球网络技术来推动公共利益项目。埃弗里特回忆说,这是“推动Python早期发展的引擎”的开端——“Guido和CNRI团队,为互联网的共同创造者Bob Kahn工作!”

从这里开始,Guido的团队引入了Roger Masse和Warsaw,他们也在NIST的同一场Python研讨会上“被Python的魅力所吸引”——Python社区因此日益壮大。“这支团队帮助我创建并维护了Python社区的额外基础设施,例如python.org网站、CVS服务器以及各类Python特别兴趣小组的邮件列表,”Guido在他的“Python历史”博客中回忆道。

巴里·华沙甚至接手了由约翰·维加创建的Python邮件列表软件的维护工作——并说服自由软件基金会将其采纳为官方邮件列表工具,即GNU Mailman

章程的泥潭

“Python研讨会继续举行,”Guido写道,“起初是每年两次,但由于规模扩大和后勤工作增加,很快演变为年度活动。”然而,大约在这个时候,Guido还记得CNRI“试图制定一个比通过DARPA研究拨款更直接的Python开发资金模式。”

埃弗里特笑着回忆道,这是“错误的模式”。

范罗斯姆的网站指出,他们的新 Python 联盟“最低入会费为 $20,000。然而,除了惠普的一组人外,我们没有获得太多支持,最终该联盟因资金不足而解散。” 回顾过去,埃弗里特表示,作为这些组织的创始人,他现在认为这种模式“注定不会成功。它假设Python将发展成为商业成功,届时企业会愿意出资支持。”即使这种模式有一天可能奏效,“那也为时过早。”

那么,如何组织一个社区呢?范·罗斯姆的博客还提到,他们第一次尝试成立基金会时,“最终陷入了章程起草的泥潭”。鲍勃·卡恩则建议成立“Python软件活动”(Python Software Activity),这将“不是一个独立的法律实体,而只是在CNRI的法律(非营利)框架下工作的一个群体。PSA成功地凝聚了一大批致力于Python的用户的热情,但其缺乏独立性限制了其有效性。”

世界正在他们周围迅速变化,范罗斯姆写道:“最终,在2000年初,尚未完全崩溃的互联网泡沫热潮说服了我以及CNRI Python团队的另外三名成员 (华沙、杰里米·希尔顿弗雷德·德雷克)加入加州初创公司BeOpen.com,该公司正在招募开源开发者。”

至于对该语言的机构支持,“PSA已经解散了,”埃弗里特说,“没有任何支持。幸运的是,他们没有拥有任何知识产权。”

那个最后的问题……

在离开时,有一个关于如何授权Python 1.6的最后问题。范·罗苏姆记得早期版本使用了修改后的MIT许可证,“基本上添加了一句话,其中CNRI免除了大部分责任。然而,1.6版本的许可证是一段冗长的法律术语,由CNRI的律师起草。”

但由于自由软件基金会现在使用GNU Mailman,他们希望Python保持真正自由。“我们与自由软件基金会的理查德·斯托曼埃本·莫格伦就新许可证的部分内容进行了多次长时间的讨论,”范·罗苏姆写道。“在埃里克·雷蒙德的帮助下,对CNRI Python许可证的修改既满足了FSF的要求,也满足了CNRI的要求,”同时还获得了开源倡议组织(OSI)的珍贵批准印章。

范·罗苏姆在2019年写道:“至今为止,许可证文本仅进行了微小修改以反映两次所有权变更——首先是BeOpen.com,随后是Python软件基金会——但本质上,CNRI律师的法律工作仍保持原貌。”

不过,范·罗苏姆写道,讽刺的是,BeOpen的商业计划最终“以相当惨烈的失败告终”。

‘如果 Python 消亡……’

幸运的是,核心 Python 团队很快被保罗·埃弗里特(Paul Everitt)的 Zope 公司(早期网络应用服务器领域的先驱)聘用。“我们刚获得第三轮风险投资资金,”埃弗里特回忆道,因此他的初创公司显然从 Python 中获得了巨大价值。“我们当时想,‘听着,如果 Python 消亡……那可就麻烦了!’” (正如埃弗里特在即将上映的纪录片中所说,“如果所有Python开发者各奔东西,当时的Python还不够强大到能承受这种打击。”)

但实际上,Python核心团队现在被雇佣来全职开发Python。这也是Python软件基金会成立的时刻。“我们正站在这些其他事物灰烬之中,”埃弗里特带着一丝苦涩地说。

正是埃弗里特与长期开源倡导者格雷格·斯坦合作,投票通过了Python软件基金会的成立。但埃弗里特承认,“到那时为止,已经做了很多工作,大家都说,‘这就是我们要做的。去完成那个愚蠢的官僚主义程序,让它成立吧!’ 我们有这些想要规范并建立结构的基础,以确保它能够继续下去。”

社区所有?

具体来说,Zope已经咨询了FSF、OSI和软件自由法律中心,以及所有那些人,” 埃弗里特回忆道,“只是为了理解开源的法律框架”——从版权、共同所有权、专利条款到贡献者协议。因此他积累了大量经验。

但关于结构的讨论仍在继续,埃弗里特表示,他“脑海中一直明确”法律实体应为501(c)组织——一个社区拥有的非营利组织,用于持有Python的知识产权。因此,当Python团队最终到来时,“我在他们的雇佣协议中明确规定,我们不会拥有他们在Python上所做工作的任何知识产权。因为之前的雇主曾将他们的名字列入版权中。”

2002年,埃弗里特搬到了法国,恰逢Python的下一个时代,其中“参与第一阶段的人让位于参与第二阶段的人。” 因为举办会议是一个自然而然的决定——名为 PyCon——正如埃弗里特所回忆的那样,“PyCon 是推动变革的真正动力。因为它赚了钱。”

最后,将有一种方式来资助持续的开发者和基础设施改进。

‘秘密武器’

“Python开始被视为一种秘密武器,”埃弗里特回忆道(随着大型企业迅速发展,“它们需要快速部署互联网服务……开发者生产力比其他因素更重要。”)当企业争相招聘Python团队时,它们需要在社区中“留下印记”,埃弗里特解释道,“这体现在大会上。难道你不希望赞助这场大会,让自己看起来比其他人更具吸引力吗?”

凭借这笔资金,Python软件基金会现在能够聘请全职专业员工。正如埃弗里特所指出的,“一旦你有了一个合法实体并聘请了员工——他们就可以去争取资金。像[PSF执行董事]埃娃·约德洛夫斯卡负责从谷歌等公司获取大额资金——不是为了赞助会议,而是为了赞助Python的持续基础设施。”

惠普企业为Python的包仓库资助了一名全职开发者,该仓库还获得了Mozilla开源支持计划提供的$170,000美元资助,以及彭博社为全职项目/社区经理提供的为期两年的资助。

埃弗里特表示,故事中最令人欣慰的部分是 Python 对多样性的承诺。但也许这种承诺从一开始就存在,埃弗里特指出——对异质文化的接纳可以追溯到其在 20 世纪 90 年代开源运动中的根源,“从定义上讲,这并不是一种单一文化。”

埃弗里特认为,正是这种持续的文化氛围最终吸引了新一批多元化的群体,而这些群体恰好能够迅速把握人工智能等新兴趋势。

共有 87 条讨论

  1. 我刚上大学时,大概是2001年,我们的数学教授向我们介绍了Python,并将其与NumPy/SciPy结合使用,作为商业数学工具的替代方案。这对我职业生涯的影响之大,堪称改变人生的事件。在此之前,我只接触过编译型语言,Python的出现让我大开眼界。它易于使用、表达力强,而且自带丰富的生态系统。

    Python周围有着强大的社区氛围,这是我在编程世界其他地方很少见到的。这一切始于这些科学库。没有NumPy,Python就不会是今天的Python。近年来,看到Python科学社区的蓬勃发展令人欣慰,几乎所有机器学习都将Python作为领域特定语言(DSL)使用。

    1. > 这一切始于这些科学库。

      我不同意。科学库只是众多细分领域中的一个,而且是一个尴尬的细分领域。同样可以说“它始于XML库”或“它始于文件处理库”或“它始于HTTP库”——所有这些都早早地出现在标准库中,不像难以构建的NumPy/SciPy。所有这些都使语言最初在多个不同群体中流行起来。numpy/scipy在Python已经在大规模系统管理、网页开发、教育、3D等领域站稳脚跟后才逐渐流行起来。到2001年,我们已经有了多个网页框架,如Zope,甚至WSGI…

      有时令人烦恼的是,某些群体试图将Python的成功据为己有,从而简化了它的目的和目标。

      1. 但当时其他用例主要由 Perl 覆盖。Python 是首个有效利用此类库的动态语言。

        1. 我从 1995 年到 2000 年一直在使用 Perl。我是一名相当高级的 Perl 程序员(经历了 Perl 4 到 5 的过渡),主要用于自动化系统管理任务。

          2000 年我加入了一家新初创公司,该公司首席架构师/科学家向我展示了 Python 1.5.2。他曾就职于 Infoseek,在那里使用 Python 帮助构建公司部分系统。

          我热爱Perl。我是那种穿着印有“用4行Perl实现RSA”T恤的烦人极客。我会为了好玩而编写JAPH程序。但我也欣赏Python相较于Perl的“简洁性”。我几乎能在一小时内掌握其所有语法规则?无需担心Perl程序那些离奇的表达方式。(这是标量上下文还是数组上下文?[^1] 这个脚本是用my还是local?这行我没写的疯狂代码到底在做什么?哦,等等,是我写的这行!)

          总之,这家初创公司使用Python,而我也开始使用Python。

          那家初创公司早已不复存在,但我仍在职业生涯中每天使用Python。

          我从未使用过numpy。

          Perl 曾经/现在很棒,但它太过古怪,无法像 Python 那样拥有广泛的吸引力。

          [^1]: “一切都与上下文有关”: https://archive.ph/IB2kR

          1. 顺便说一下,我是在2016年学习Perl的,它曾是我首选的编程语言(某种程度上)大约6个月,但Python的强大势头确实难以抗拒。不过Perl确实很酷!

    2. 在我的大学里,我们可以在许多高级课程的作业中选择使用Matlab或Python。我们甚至为个人电脑获得了Matlab许可证。但由于Matlab的最小安装包仍占用数GB空间,而我的个人电脑始终被游戏占满,我选择了Python生态系统(所有相关包总计约100-200MB),而几乎所有人都选择了Matlab。他们毕业后从未再使用过Matlab,而我至今仍在频繁使用Python。

    3. 2001年?但NumPy不是在2005年才创建的吗?显然它的前身叫Numeric。

  2. 这听起来不错。不幸的是,它演变成了一种专制,一小群平庸的人夺取了权力,审查基础设施,并威胁那些不遵守的人会遭到诽谤。

    大多数开发者已经离开或被驱逐。剩下的那些人从事的企业项目通常都达不到预期。

    1. 这很正常——这类人被基金会提供的免费资金所吸引。幸运的是,Astral的uv等人正在做PSF那些平庸之辈无法做到的事情。

      1. 最近Tim Peters被暂停职务,许多人认为暂停理由不合理。我推测GP指的是类似事件。

        1. 啊,这样就说得通了,谢谢。几年前我在一个Python项目中看到过由行为准则委员会挑起的欺凌和骚扰行为。看来历史在重演……

        2. 就是那个以Timsort闻名的Tim啊,真厉害。

          1. Timsort、Python 的禅意以及许多其他内容。总共向 CPython 仓库提交了超过 2500 次(在所有时间列表中排名第 11 位)。在解释浮点数的工作原理方面非常擅长,尤其是与 Python 相关的部分,IMX。并且在很长一段时间内都非常乐于助人:https://stackoverflow.com/search?q=user%3A2705542+is%3Aanswe

  3. 令人惊讶的是,这篇文章将社区与建立PSF和为PSF争取资金等官僚努力等同起来。这本质上是对官僚的颂扬。值得注意的是,文章中没有提到Tim Peters,而他后来被官僚们诽谤。

    1. 我真希望蒂姆出现在纪录片中是剧情反转。他也值得获得大量篇幅。

  4. 题外话:如果你有机会去亚特兰大,来看看pyatl吧。我们是一个历史悠久且成熟的Python团体。这里总是充满乐趣和新奇。

  5. 保罗·埃弗里特(Paul Everitt)对持续改进的信心和热情,使Python成为了今天的模样。感谢

  6. 以戏剧驱动的开发才是真正的现代范式,如果你认为它仅限于Python,那你就瞎了。

    这不是社区,而是干涉、劳累和愚蠢。

    1. 确实如此,从Perl5到Perl6(现为Raku)就是一个典范

      Raku是现代编程语言的标杆

      1. 我在21世纪初就停止使用Perl了,但听说过传闻,情况有多糟糕?

        1. 嗯,Perl6最初作为对Perl5的重大破坏性升级开始

          Perl社区分裂为两派:一派希望避免破坏性变更(因为他们担心会遇到类似Python 2到3升级时的痛苦),另一派希望通过引入类型系统和面向对象编程等功能来演进语言

          当人们意识到Perl 6的开发需要数年时间且没有从Perl 5迁移到Perl 6的途径时,这种分裂演变成了鸿沟——用户开始探索其他选项,而Python常常是首选

          这种情况因使用 Perl 6 作为名称而加剧……后来(很久以后)名称改为 Raku……但此时 Perl 语言已不再是昔日主导地位的影子,CPAN(Perl 模块库)也失去了许多负责维护和改进的人员,导致其开始衰败

          恐惧导致愤怒,愤怒导致仇恨

          [顺便说一句,Raku 现在拥有所有这些功能,同时保留了经典 Perl 的良好体验,并且拥有一个虽小但活跃且友好的社区]

          1. 现在有没有一个官方的“Perl 6”?比如我不能去 perl.org 下载一个,或者至少“最新稳定版本”仍然列在 5.x 系列中。

            或者“Perl 6”根本不是一个值得讨论的概念,而“Raku”才是原本计划中的“Perl 6”?

            1. 据我所知,Perl 社区正将 Perl 7 作为下一个主要版本,以避免混淆(但建议你直接询问他们)

              如果你想使用 Raku,可以从 rakudo.org 或 rakubrew.org 安装

    2. > 戏剧驱动开发

      是的,这是开源世界的主要范式。

      1. 因为你喜欢戏剧?虽然很有趣,但真的很累人。

        1. 嘿嘿,有时是这样,但主要是因为这表明背后有真实的人,他们有情感。同意Rust(这里可以加上Rails或其他语言)有时确实有太多戏剧性。

  7. 我不要社区——我要一门编程语言。最好是一门不会仅仅因为某些原因就抛弃数十亿行现有代码的语言。

    1. Python 2 代码绝不是“仅仅因为”就被抛弃的。没有人让你的解释器停止工作;它从未在云服务上运行过,也从未被用于类似用途。它只是停止从核心团队接收 bug 修复(它是开源的,所以每个人都可以自由接手维护),而第三方工具和基础设施支持(特别是 PyPI)也不再考虑它。

      此外,这些更改是有充分理由的,例如允许初学者在第一天就能接受用户输入,而无需在程序中打开ACE漏洞,以及让简单的双引号字符串字面量实际上生成一个字符串,而不是一个不可变的字节缓冲区,该缓冲区模糊地假设了一个通用代码页编码,除非在某些上下文中,如果不是简单的ASCII字符,它会报错。(诚然,这比仅使用标准库在C中处理文本仍是一种改进),确保解码操作不会产生编码错误,反之亦然,确保isinstance(1<<64, int)返回预期的True结果,确保except语法合理,并确保不存在两种根本不同的用户定义类。

      通过这些改动,我们实际上在约2.5年内(若考虑前几个版本在字符串字面量转换等细节上存在问题,则为4.5年——我同意这些版本确实发布过早)实现了Python 3,并为所有人提供了另外11(9)个版本用于迁移。而Raku在整个13.5年(更准确地说15.5年)的周期中都用于设计和实现,如今已近5年未发布新稳定版本。

      1. > 它是开源的,所以每个人都可以自由接手维护

        开源实现是可以的,尽管“如果你不喜欢就分叉/自己做”的论点,通常是回避批评而非实际解决方案。

        但Python最大的弱点之一是缺乏正式的语言规范。你所拥有的只是实现及其文档。

      2. 从我的角度来看(经历了Python 3的过渡并承受着3.x版本的持续变化),兼容性问题一直处理得不好。许多事情可以且应该做来减轻维护负担——比如智能默认值、兼容性功能和库,以及不要做愚蠢的事情,比如移除 print 语句(它本可以与 print() 函数共存)而没有替代方案。

        不幸的是,Python 的开发者似乎对语言的用户和现有代码库表现出了极大的轻蔑。

        其他语言(尽管并非所有语言……<咳嗽,Swift>)拥有实际的语言规范和标准(即使在运行时系统演进时仍能保持有效),并且不会如此热衷于将用户及其代码推下悬崖。

        平台应承担痛苦,以便用户无需承受,并避免引入会给整个用户群体带来痛苦的破坏性变更。

        苹果(也以傲慢和对开发者的轻蔑而闻名)也搞错了这一点,并每年都会破坏 iOS 和 Swift 应用程序。

        1. > 像智能默认值这样的东西

          你能给出一个具体例子,说明你在将 2 到 3 的代码迁移时,由于 3 中选择的默认值不佳而遇到的问题吗?

          > 兼容性功能和库

          你是指像 `lib2to3` 这样的工具吗?还是 2.7 版本获得的所有回溯功能,例如在 https://wiki.python.org/moin/StandardLibraryBackports 中列出的内容?或者 `__future__` 系统?还是第三方支持如`six`(尽管可能仅在CI中流行)?

          > print语句(本可与print()函数共存)

          不,绝对不可能。不能使用相同名称,且让名称指向函数正是关键。print语句的语法不够优雅、古怪且易混淆。例如,括号会以特殊方式影响语义:

            $ py2.7 -c ‘print (1,); print 2’
            (1,)
            2
            $ py2.7 -c ‘print 1,; print 2’
            1 2
          

          此外,输出文本与输入文本一样,没有逻辑理由使用专用的语句形式。

          > Python 的开发者似乎对用户表现出了极大的轻蔑

          我不明白你为何会得出这种结论。任何认为他们随意引入破坏性变更的怀疑,都会在阅读这些变更背后的讨论时立即被消除。(更不用说被否决的提案会发生什么。)

          > 并避免引入会给整个用户群体带来痛苦的破坏性变更。

          在你使用Python 3.x的历史中,有哪些破坏性变更在你使用过程中引发了非 trivial 的问题?你认为自己被给予了多少年时间来适应这些变更?

          1. > 不,这绝对不可能

            对于绝大多数用例来说,这本可以非常简单地实现(如果想调用函数,print 和括号之间不留空格),但显然这会让一些 Python 维护者不高兴。因此,这一功能被移除,并引入了一个无法回滚的破坏性变更(甚至没有像 __past__ import print_statement 这样的替代方案)。

            这就是我所说的对用户群体和现有代码表现出极度轻蔑的一部分。

            1. >(如果要调用该函数,print和括号之间不应有空格)

              这在任何ALGOL扩展家族语言中都是前所未有的,更不用说Python了。

    2. 有无数种没有社区支持的死语言可以供你选择。

      1. Ruby和Perl就是典型的例子,这些曾经非常流行的语言因为语言/平台的发展速度超过了社区的跟进而衰落。

        如果你在查看代码库时第一个想到的问题是“这是哪个版本/我是否了解这个版本”,那么这种语言并没有为你提供便利。

        成功的语言是那些“社区”优先考虑向后兼容性的语言。Java、C、Python的向后兼容性跨越了几十年。虽然存在一些断点(如Java 8的lambda表达式、Python 3、C++),但在大多数情况下,它们与原始版本有明确的映射关系。Python 3是例外,但迁移窗口大约有15年……

        忙碌的工程师、科学家和学者对跟进语言特性更新兴趣不大。计算机和编程语言只是完成工作的工具,源代码只是中间产物。这些人就是你的“社区”,也是你成功的利益相关者。

        1. 你用过它们吗?Perl 在源代码中带有版本标签,且所有内容(包括标准库)都经过功能控制。Python 则没有这些机制。标准库不断变化,仅查看源代码无法判断是否能用你安装的 Python 版本运行。

          1. > Perl 在源代码中带有版本标签,且所有内容(包括标准库)都经过功能控制。Python 则没有这些机制。

              from __future__ import annotations
            

            > 仅查看源代码无法判断是否能与已安装的 Python 版本兼容

              requires-python = “>=3.9”
            
            1. 我更倾向于 Perl 的做法:

                  use v5.40;
              
                  ....
              

              这是一种明确的、与特定版本绑定的可执行代码,且可限定在单个源文件内。

              (我多年来一直为这个功能辩护,并将其纳入我的`Modern::Perl`功能包;现在看到它可以被废弃,我感到很高兴。)

            2. 我认为“from __future__”并非你所想象的未来兼容性解决方案,他们只是为了好玩才这样命名——假设的3.19版本甚至无法使用它,因为它只是一个普通的Python导入语句

                $ python3.13 -c ‘from __future__ import awesome_feature’
                  File “<string>”, line 1
                SyntaxError: future feature awesome_feature is not defined
              

              “未来功能未定义”这个概念本身就是荒谬的

              无论如何,我猜他们的本意是

                try:
                  from __future__ import fever_dream
                except SyntaxError:
                  fever_dream = None
              

              因为 Python 真的很喜欢条件导入

              1. 我是在回应“Python 没有这些功能”的说法,指出 Python 确实有一些功能可以帮助以一种有条理的方式引入新功能——我知道这与条件导入之类的东西不同。

            3. 不确定“≥”这种用法是否能经得起时间考验。

        2. Perl几乎实现了完美的向后兼容性,但社区规模小且声誉不佳,这并不理想。

          1. 如果要兼容的对象本身糟糕,那么向后兼容性也必然糟糕。

          2. 难道现在的“平台”本身不是已经碎片化了吗?不同的语言版本、不同的库、不同的“引擎”?

            我不知道,20年前当他们试图将面向对象语义强行塞进Perl时,我就跳槽了。真恶心。

            1. 我不太清楚你提到的具体事件。但如果你使用当前版本的Perl解释器,它仍能兼容大多数旧版本。新功能也会对旧版Perl保持兼容。

          3. Perl并不具备通常意义上的“完美向后兼容性”。只有 Perl 5 是完全兼容的,因为它在 25 多年里没有改变(这就是他们实现“兼容性”的方式——通过不改变),而 Perl 6 则不具备向后兼容性,而且几乎没有人使用它。

            1. > Perl 5 … 在 25 多年里没有改变。

              Perl 的重大新版本会定期发布。几周前,最新重大新版本已发布。根据 2025 年变更文档:

              > Perl 5.42.0 代表自 Perl 5.40.0 以来的约 13 个月开发成果,包含来自 65 位作者的 1,600 个文件中约 280,000 行变更。

              回溯 5 个重大新版本(至 2020 年):

              > Perl 5.32.0 代表自 Perl 5.30.0 以来的约 13 个月开发工作,包含来自 89 位作者的约 220,000 行更改,涉及 1,800 个文件。

              2015 年:

              > Perl 5.22.0 代表自 Perl 5.20.0 以来的大约 12 个月的开发工作,包含来自 94 位作者的 2,400 个文件中约 590,000 行更改。

              2010:

              > Perl 5.16.0 代表自 Perl 5.14.0 以来的大约 12 个月的开发工作,包含来自 139 位作者的约 590,000 行代码更改,涉及 2,500 个文件。

              在过去 25 年中,仅 Perl 核心代码库的代码更改就超过了 1000 万行,这反映了 Perl 的巨大变化。

              —-

              Perl 6 … 不向后兼容

              Raku 可以运行大约 80% 的 CPAN(Perl 模块),包括那些使用 XS(访问 Perl 5 二进制文件内部)的模块,而无需进行任何修改。

              (剩余的20%因过于依赖Perl 5特性而在Raku中毫无意义。例如,将Perl 5代码转换为不同Perl 5代码的源代码过滤器。)

              —-

              但你有一点说得对;你认识的人中没有人关心向后兼容性,否则你会明白你认为你知道的,与实际真相之间的差异。

              1. > 但你有一点说得对;你认识的人中没有人关心向后兼容性,否则你会知道你认为你知道的和你实际知道的之间的区别。

                这是什么鬼?即使我认识的人中没有人关心向后兼容性,这与我的知识是否真实有什么关系?

                抱歉我轻视了Perl 5在过去25年中的进步,但来吧,冷静点,伙计。

            2. 我知道人们不喜欢Perl,我只是想在这里补充一些信息。Perl 5 Porters在15年前重新开始添加新功能。它从版本5.20发展到5.42。尽管速度比流行语言慢,但他们在添加新功能的同时保持了向后兼容性。

              Perl6已被更名为新语言Raku。

        3. 它们是如何衰落的?难道每种编程语言都必须通过无节制扩张来争夺世界霸权?我以为这只适用于获得风险投资支持的初创公司和上市公司,如果这些初创公司能存活下来的话……

          1. 在我所处的圈子里,它们并未被积极使用。你如此反感的事实表明,你对这些过时的利基工具有所投入。

            1. seriously? 我这辈子只试过一次 Perl,从未接触过 Ruby。

              这并不意味着我必须否认它们存在的权利,仅仅因为它们没有“社区*”。

              * 更像是某些编程语言的宗教。

              1. 它们有存在的权利。但社区的力量是强大的。成功的平台会促进这一点,并为参与者提供超越自身总和的手段。

                这反过来又能推动平台的发展,从而帮助其保持相关性。

                近年来我们称之为“网络效应”,它不仅适用于社交媒体。

        4. 你为什么认为 Ruby 衰落了?它只是停滞不前,但并未衰落。

          1. 社区已经衰落。大约10到15年前,“Ruby”“Ruby”“Ruby”的呼声震耳欲聋。我使用过Ruby,真的很喜欢,以为可以抛弃Python,但它从未真正发展起来。大约在3.x版本时,我认为引入了大量破坏性变更,我想很多像我这样的人都回到了更稳定的平台。

    3. 最好的是,你不需要加入任何社区。Python 是我的最爱,但自从我在他们的子版块因提出一个技术问题而遭到抨击后,我就不再去那里了。

      几乎没有无毒的编程社区。如果你更重视向后兼容性,可以看看 C 和 C++。

      1. Java在兼容性方面也做得不错。我仍然使用Python进行一些应用程序开发,但它带来了很多麻烦,而且速度也非常慢。因人而异,但通常如果你用Python重写C++代码,你会发现需要10倍(甚至更多)的服务器才能达到相同的性能。

        1. 只有使用CPython时才如此。我通常使用PyPy3,其性能与Java和Go相当。

          C++仍比PyPy3快,但并非快10倍。这已足够让我无需应对C++繁琐的语法。

        2. Java社区出奇地友好。标准的企业软件开发人员几乎总是彬彬有礼。

    4. 不幸的是,没有社区的编程语言一文不值,因为编程语言本质上是“语言”,而没有使用它的社区,语言就会死亡。

      1. 没错,这就是为什么Bjarne Stroustrup说编程语言只有两种类型:一种是人们抱怨的,另一种是没人使用的。

  8. 真正的问题是,Python是如何避免了Linux或比特币开发社区的毒性(还记得区块大小的争论吗?)

    尽管有一位开发者不久前被迫退出。

    1. 并没有。我见过Python社区的人因为“不够Pythonic”而将某人的开源项目批得体无完肤。当我看到人们以这种方式行事时,我对Python社区的印象大打折扣。

      1. 它确实做到了,直到它在网络世界中变得如此主流,以至于避免冲突几乎变得不可能。

        直到“酷孩子”开始插手,它曾是一个美好的社区。它非常注重初学者和教育者。

        1. 这很好地总结了我看到标题“Python如何从一种语言发展为一个社区”时的第一反应,因为2000年的Python社区、2010年的Python社区,与2025年“全世界都使用Python”的场景是截然不同的。

          当时它感觉像是一个俱乐部,围绕着一个共同的爱好形成。如今它更像是一个高中毕业班的“社区”。当然那里有社区,但它更多的是人们被随机扔进教室的集合。

          像雷蒙德·赫廷格这样的人在当今这个追求点击率的时代会完全被淹没。

          > 在网络世界

          不过我认为这可以更广泛地理解,当时是网络、数据科学,Python曾一度成为通用脚本语言。我曾希望人群能转向Node.js,让Python重新变得平静。但我想这已无法逆转,我们从小船变成了游轮,当人群离开时,游轮将变得空荡荡。

          1. 德国Python论坛的成员对新手非常友好,甚至会回答那些“愚蠢”的问题。不知道现在情况如何。

      2. 是的,就像大多数(也许所有)社区一样,如果不在核心圈子,Python开发者社区可能会相当有毒。

    2. Python是目前最毒的社区之一。有几个人出卖了python-dev给他们的公司,并利用行为准则和与编程无关的活动来获取权力。他们驱逐了那些敢于反对他们的人。

      后来,其中一些人被解雇了,现在CPython基本上是一个空壳,只有一些公司项目还在继续。

      1. 这完全是胡说八道。

        Python 社区是开放的,许多人因语言而来,因社区而留。当然,它并非没有政治或戏剧,但与你描述的相去甚远。本地社区非常强大,CPython 核心社区似乎一直在努力改进。

        即使是Tim Peters(我希望他能参与这部纪录片),也是一个热情的参与者,既帮助解决棘手的CPython问题,又为新手提供帮助。

        如果你查看Fellows列表[0],你会发现许多重要人物不再活跃于社区(我不知道每个人的具体原因),但更多的人要么活跃其中,要么与社区保持着(非常)良好的关系。

        行为准则(CoC)一直是积极的,多元化努力更是如此。上周末我参加了一个本地Python会议,本地社区对两者都表示欢迎,取得了巨大成功和改进。

        [0] https://www.python.org/psf/fellows-roster/

        1. > CoC一直是积极的,多样性努力更是如此

          以什么标准衡量?

    3. 我认为比特币部分很简单——它没有投资工具的扭曲激励机制。每个人的财务利益都是间接且分散的,不太可能有任何特定的PEP直接与开发者的利润挂钩(尽管这偶尔会发生)。

      1. 大型公司提交PEP以强加其意志于Python。Meta和GIL移除。

        1. 谁支持GIL…?

          关键在于,与比特币区块大小争议不同,这里没有因Python做X或Y而直接影响其利润的人。没有人特别从存在GIL中获利。

          1. 谁支持GIL

            没有人专门支持GIL。但很多人支持“不分离单线程性能”。第一个移除GIL的补丁早在Python 1.4时代就已提交,此后也多次尝试,但由于移除GIL会导致现有Python代码的单线程性能下降,因此Guido等人拒绝接受这些补丁。

            1. 性能下降幅度仍高达50%,与首次尝试时相同。不过这次是来自Facebook。

              1. 经过一番调查,我尚未找到其他声称性能下降超过10%的案例?这个50%是来自您的基准测试,还是有相关链接可供查看?

    4. 比特币的一大优势在于其稳定性,它不会像以太坊那样因某人的随意决定而发生变化,例如以太坊就是因为有人比他们的智能合约更聪明而被分叉。

    5. 老一辈开发者并不重视Python,或者说他们根本不在乎。毕竟C和Java才是重要的,而Python只是初学者的玩具!

      1. 老一辈程序员关心人工智能吗?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

你也许感兴趣的: