优信彩票购彩大厅为什么 Python 4.0 会与 Python 3.

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

为什么说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

译文出自:http://www.oschina.net/translate/why-python-4-0-wont-be-like-python-3-0

http://www.bkjia.com/Pythonjc/889916.htmlwww.bkjia.comtruehttp://www.bkjia.com/Pythonjc/889916.htmlTechArticle为什么说Python 4.0不会像Python 3.0一样 python-ideas的新手会在没有为从目前合法的Python3代码提供一个清晰的迁移路径的向后兼容性改变提议时偶...

style="font-size: 16px;">【CSDN编者按】不管我们如何希望PHP永远天下第一,亦或是Java永久无敌,更或者希望C语言永远是最好的语言。

style="font-size: 16px;">然而,笔者今天搜索百度指数得知,Python的指数,已经高于Java和PHP的指数之和。

style="font-size: 16px;">而Python的版本迭代也是嗖嗖的,那么新版本4.0和3.0究竟有什么区别呢? style="font-size: 16px;">今天分享一篇Python软件基金会的董事会成员、CPython的核心开发人员Nick Coghlan的文章,希望你会感兴趣。

优信彩票购彩大厅 1

笔者今天在百度指数的搜索结果

优信彩票购彩大厅 2

一些刚刚接触Python思想的人,会提出无法向后兼容的修改建议,这些建议并没有针对,当前合法的Python 3代码,给出明确的移植方案,而他们偶尔会提及Python 4000的思想。毕竟,Python 3.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)一样平安无事。我甚至希望在版本升迁之际,应用程序的二进制接口(PEP 384引入的功能),能够保持稳定。

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

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

首先,也是最重要的,PEP流程没有任何变化,仍将持续提出向后兼容的更改,并将添加新模块(如asyncio)和语言功能(如yield from)等,以增强Python应用程序能够使用的功能。

随着时间的推移,Python 3在功能方面,将领先Python 2越来越多,即使Python 2用户,可以通过第三方模块或Python 3的后向移植,获得同等功能,也无法赶上Python 3的功能。

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

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

对于一些无法向后兼容的更改,PEP 387提供了一个合理的方法,该方法在Python 2系列中使用多年,并且今天仍然适用:即如果认为某个功能,会引起很大的问题,那么可以将其标记为弃用,最终将其删除。

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

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

本文由优信彩票购彩大厅发布于技术支持,转载请注明出处:优信彩票购彩大厅为什么 Python 4.0 会与 Python 3.

您可能还会对下面的文章感兴趣: