我对Python 4的希望

2021-02-19 06:25:57

在我开始使用它的几年后,我看到有人在写它,并使用了短语“它适合我的大脑”。这至少是我的感受……至少对于简单的简单代码而言, #39; t不要依赖怪异的元类构造,甚至不要加上类型注释的干扰。 [是的,类型注释可能非常有用,但是(目前)不适合我的大脑。#]

我非常感谢不断致力于改进Python的许多志愿者。由于他们的努力,Python不断发展。我认为大多数增长都是积极的:越来越多的领域中有更多的用户,更多的应用程序。在许多大学中,Python取代了Scheme和(幸运的是!)Java等语言,成为学生学习的第一门语言。从* my *的有限角度来看,有一个小缺点,就是Python的这种增长包括其语法的增长:当我第一次遇到Python(2.3版)时,它具有一个相对非常简单的语法,这意味着它更容易与最新的Python版本(3.10)相比,可以学习(尽管在2到3过渡中已修复了一些疣)。

我很清楚Python不使用语义版本号:针对3.x版编写的代码可能与针对3.y版编写的代码不兼容。 [2.x系列也是如此。]由于已经决定使用两位数的次要版本号,因此显然没有必要考虑Python的版本4:改进可以持续很多年,而保留3作为主要版本。但是,我希望可以有一个版本4-如下所述。

请注意,当我想到Python时,我没有想到特定的实现(例如CPython),但我认为Python是该语言。我不考虑实施细节"例如全局解释器锁定(GIL)作为该语言的一部分。是的,如果主要的Python实现可以更好地利用多核CPU,那将很有用。但是,这与本文的目的无关。

最重要的是,应该无缝地完成从最新的3.x版本(我们称其为3.14 ...)到4.0:为版本3.14编写的代码应在Python 4.0中按原样运行。

我希望Python 4受Racket启发并介绍"方言"。 Python甚至可以借用Racket(#lang方言)的表示法作为给定模块中的top指令,以指定该模块中使用的方言。与Racket不同,我将可能的方言数量限制为4。

不需要指定主要方言:它只是每个人都知道(或不知道)和喜欢的标准Python。它会继续发展,从4.x版本到4.y版本会稍有变化。

第二种方言是"实验性的方言。该方言可用于引入一些新语法,而不能保证任何向后(或向前)兼容性。在决定将其纳入(或不纳入)主要方言之前,这将使人们能够尝试使用提议的新语法结构。老实说,随着更改的提出和采用,这将有助于减少Python社区中的一些摩擦。这种方言的主要好处是社交而非技术。

第三种方言是"初学者方言。初学者方言的目标是使学习基本的编程概念变得更容易,而不是学习表达这些概念的古怪语法。在版本4.0中,该初学者方言将是主要方言的严格子集。它不会包括类型注释,并且可能还会排除新的模式匹配语法和其他语法构造。例如,使用关键字仅限于检查对象是否为三个单例之一(None,True,False);的其他用途可以并且应该使用" == id(事物)"。根据教育工作者的反馈,最终引入一些主要方言无法提供的其他关键字和构造可能是有意义的,例如:

在TygerJython和Reeborg's World中可以使用重复作为关键字来重复nb_steps:。永远重复可能也很有用:等同于Python的True:。 [在此描述此关键字的其他可能用法。

最后,第四个方言将是"静态"方言。第四个方言将始终使用与主要方言严格兼容的语法。在这种方言中,Python的某些动态功能(例如更改由给定名称指定的对象的类型的可能性)将不可用,因此可以进行一些优化以提高执行速度。我相信专家将能够提出其他可以大大提高执行速度的限制。我认为这样的方言将成为Python用户最热烈的回应。

话虽这么说,我非常怀疑我是否会看到Python采纳这些想法。然而,有时候做梦是件好事...