为什么说Python 4.0不会像Python 3.0一样

来源:http://www.gdhfd.com 作者:澳门太阳集团城网址 人气:154 发布时间:2019-05-02
摘要:PEP 3100汇总了Python3中所有争议性不大、从而没有必要单独建立PEP的改动。这个特殊的变化,被认为无争议的原因是:因为我们使用Python2的经验表明,Web和GUI框架的作者是正确的,即作为

PEP 3100汇总了Python 3中所有争议性不大、从而没有必要单独建立PEP的改动。这个特殊的变化,被认为无争议的原因是:因为我们使用Python 2的经验表明,Web和GUI框架的作者是正确的,即作为应用程序开发人员明智地使用Unicode意味着,确保所有的文本数据,都可以从二进制尽可能地转换为系统的文本操作,然后在输出时转换回二进制。

为什么说Python 4.0不会像Python 3.0一样

python-ideas的新手会在没有为从目前合法的Python3代码提供一个清晰的迁移路径的向后兼容性改变提议时偶尔提到"Python 4000"的想法。毕竟,我们允许Python3.0不向后兼容,为什么我们不能允许Python 4.0也这样做呢?

我听到了很多质疑(包括"你造成过一次向后兼容的严重破坏,我怎么知道你不会再次破坏?"这样的心声),我想在此记录我的回答,以便日后可以向人们提及。

目前对 Python 4.0 有哪些期待?

我目前的期待是 Python 4.0 仅是"Python 3.9 之后的另一个发行",仅此而已。没有重大的语言改变,没有重大向后兼容性的破坏——从 Python 3.9 到 4.0 的平滑过渡应和从 Python 3.3 到 3.4或者是从 2.6 到 2.7)一样。我甚至期待着稳定的应用二进制接口在过渡中可以保留。

以目前大概每十八个月的语言特性发行速度,我们将在2023年的一个时间见到 Python 4.0,而不是Python 3.10。

Python 会怎样继续演进?

首先也是最重要的,Python改进提议过程并没有改变——加入了新模块(如asyncio)和语言特性(如yield from)以改进Python应用性能的向后兼容一直在议程之上。随着时间的流逝,Python3凭借默认提供的性能将继续拉大与Python 2的差距,即使Python 2用户通过第三方模块或Python 3的补丁达到和Python 3一样的性能。

解释器的实现和扩展也会继续探索改进Python的不同方法,包括PyPy's对JIT-编译器和软件业务内存的探索,对科学的和数据分析社区在充分发挥现代CPU和GPU提供的向量性能的面向数组编程的探索。与其他虚拟机运行时的整合(如JVM和CLR)也会随着时间改进,尤其随着Python成功进入教育领域,使其作为运行在那些虚拟机环境中的大型应用中使用的嵌入脚本语言变得更加流行。

PEP 387 为向后兼容提供了一个在 Python 2系列使用多年并且今天仍然适用的合理的解决方案概览:如果一个语言特性问题重重,那么它可以被反对最终移除。

不管怎样,一些开发和发行过程的其他改变使得Python3系列之内不太可能存在被反对的语言特性:

  • CPython核心开发团队和Python Packaging Authoriy之间的协作,Python3.4 绑定的pip安装器,都更加强调的Python Package Index,减少了模块在适应相对较慢的语言更新周期中变得充分稳定之前向标准库添加模块的压力。

  • PEP 411引入的"临时API”概念使得向后兼容可能在受益于广泛反馈的库和API提供标准向后兼容保证之前对它们使用"安置"时间。

  • 在Python3的过渡中清除了过去积累的语言问题,并且Python新特性和标准库的需求比Python1.x和Python2.x时代更加苛刻。

  • 广泛的"single source"Python 2/3库和框架开发极大鼓励了"documented deprecation“在Python3中的使用,即使当特性被新的、首选的、可选的特性替代。在这些情况下,文档中写入了反对注释,意味着该方法是新代码的首选,但纲领性的反对警告没有加入。这允许Python2和Python3都支持的现存代码无需改动(需要新的用户在维护现存代码库时学习稍微多一些的"documented deprecation")。

从英语居多到全语言

Python3对向后兼容的破坏出乎意料也不值一提。在Python3中所有的向后兼容改变中,许多严重的迁移阻碍归罪于PEP 3100的一个小着重号(●):

  • 所有的字符串均使用Unicode字符编码,拥有一个单独的bytes()类型。新字符串类型将命名为'str‘。

PEP3100 是Python3的改变被认为最没有争议的终点——没有单独的PEP必需考虑。这个特别的改变被认为是没有争议的原因是我们在Python2上的经验表明web和GUI框架的作者们是对的:作为一个应用开发者敏感地处理Unicode意味着确保所有的文本数据从二进制尽可能的转换到系统边界,以文本来操作,再转换为二进制输出。

不幸的是,Python2没有鼓励开发者那样写程序——它大范围地模糊了二进制数据和文本的界限,使开发者在头脑中区分这两者变得困难,更不用说他们的代码。所以web和GUI框架作者必需告诉他们的Python2用户"使用Unicode文本,否则会在处理Unicode文本输入时因为晦涩和难以追踪bugs受罪。"

Python3改进了这个问题:它在"二进制域"和"文本域"之间加入了强制分离,使编写普通应用更加简单,同时也使编写工作在二进制和文本数据的区别不是那么清晰的系统界限代码时更加困难。关于Python2和Python3之间的文本模型改变的更多细节我写在这里。

澳门太阳娱乐集团官网,Python的Unicode支持正在演进,这和计算文本操作从English-only的ASCII(1963年正式定义)开始,一路经过"二进制数据 编码声明"的复杂模式(包括二十世纪八十年末引进的C/POSIX locale和Windows code page系统)和Unicode标准的原始16位only版本1991年发布),向相对广泛的现代Unicode代码点系统 1996年定义,每几年发布重大更新)迁移的大背景相悖。

为什么提及这一点呢?因为这种“默认Unicode”的转变是Python3最具破坏性的向后兼容性改变,不同于其他更多是语言特定的改变,它是文本数据呈现和操作更广泛的行业改变的冰山一隅。随着通过Python3过渡时语言特定问题的清除,比早期的Python更高的语言特性门槛和没有其他从"二进制数据编码"向文本模型当前使用的Unicode编码这样大规模的行业范围迁移的转变,让我看不到会需要一个类似Python3的向后兼容性破坏和平行支持时期的改变到来。相反,我期待我们可以容纳任何正常改变管理过程中的未来语言演进,任何不能以这种方式处理的提议都将被当做强加在社区和核心开发团队上不可接受的高昂代价而被拒绝。

在我的个人博客上你也可以找到这篇文章:Why Python 4.0 won’t be like Python 3.0 | Curious Efficiency.

英文原文:Why Python 4.0 won’t be like Python 3.0

译文出自:

4.0不会像Python 3.0一样 python-ideas的新手会在没有为从目前合法的Python3代码提供一个清晰的迁移路径的向后兼容性改变提议时偶...

所以我并不觉得,以后会有任何改动,能像Python 3这样,造成破坏向后兼容、并且需要并行支持期间。相反,我希望我们,能够在正常的变更管理流程中,适应任何未来的语言演变,任何无法以这种方式处理的提案,都会被拒绝,因为它会给社区和核心开发团队,带来高得令人无法接受的成本。

Python对Unicode的支持的这场革命,针对的是更大的关于计算文本操作移植的背景:从只有英文的ASCII(1963年正式定义),到“二进制数据 编码声明”模型(包括20世纪80年代后期,引入的C/POSIX语言环境和Windows代码页系统),以及最初的16位Unicode标准版本(1991年发布)到相对全面的现代Unicode代码点系统(1996年首次定义,每隔几年都有一次最新的主要更新)。

按照目前的语言功能的发布速度(大约每18个月发布一次),这意味着我们可能会在2023年看到Python 4.0,而不会有Python 3.10了。

那么Python将如何继续发展呢?

• 让所有字符串都变成Unicode,并且拥有单独的bytes()类型。新的字符串类型将被称为'str'。

• 这里主要强调一下Python包仓库,这是CPython核心开发团队和Python Packaging Authority通力协作的成果,而且Python 3.4 捆绑了pip的安装程序,减少了向标准库添加模块的难度,即使你还不确定它们,足够稳定以适应相对较慢的语言更新周期。

原标题:为什么 Python 4.0 会与 Python 3.0 不同?

Python 4.0目前的期望是什么?

但是,开发和发布过程中,发生的许多其他更改,并不太可能在Python 3系列中被标记为弃用:

澳门太阳娱乐集团官网 1

与其他虚拟机运行时(如JVM和CLR)的集成,也有望随着时间的推移,而改进,尤其是在教育领域取得的进展,可能会让Python作为更受欢迎的嵌入式脚本语言,在更大的应用程序中运行。

• 很多累积下来的遗留行为,在Python 3转换过程中,得到了确实的解决,现在对Python和标准库新增功能的要求,也比Python 1.x和Python 2.x时期要严格得多。

不同解释器实现和扩展的互相竞争,将继续探索增强Python的不同方法,包括PyPy关于JIT编译器生成和软件事务内存的尝试,以及科学和数据分析社区,对面向数组编程的探索(这种方式充分利用了,现代CPU和GPU所提供的向量化功能)。

我目前的期望是:Python 4.0仅仅只是“Python 3.9之后的一个版本”。仅此而已。语言没有深刻的变化,也没有重大的向后兼容性问题,从Python 3.9到4.0,应该像从Python 3.3到3.4(或从2.6到2.7)一样平安无事。我甚至希望在版本升迁之际,应用程序的二进制接口(PEP 384引入的功能),能够保持稳定。

征稿啦”返回搜狐,查看更多

这样的问题我已经听过很多次了(包括有人非常担心地说:“你已经让向后兼容性遭到了一次破坏,我怎么知道你还会不会再来一次?”),我觉得我应该把我的答案写下来,将来有人问及,我就可以让他们来看这篇文章。

本文由澳门太阳娱乐集团官网发布于澳门太阳集团城网址,转载请注明出处:为什么说Python 4.0不会像Python 3.0一样

关键词:

最火资讯