##Python3 迁移怨声载道( 二 )
Mercurial的见解
另一番批评来自旧金山的开发人员Gregory Szorc , 他是Mercurial版本控制工具的维护者 。Mercurial与Python社区关系密切——Python一直使用Mercurial作为其存储库 , 但在2016年改用了Git 。不过Szorc在一篇博文中描述了Mercurial在2019年11月5日努力获得Python 3支持时所得到的体会 , 他对来自Python语言内部的瓶颈提出了一番批评 。
他写道:“该项目在Python 3移植版方面起步很晚 , 主要归因于Python 2.4和2.5兼容性阻碍了我们 。我们放弃了对Python 2.6的支持 。这极大地降低了支持Python 3的复杂性 , 因为Python 2.7中有大量的功能使得更容易既面向Python 2又面向Python 3 , 而现在我们的手没有被绑住 , 可以使用它 。”
但令人惊讶的是 , Szorc称 , 甚至Python 3版本之间存在一些变化(“我们不得不糊上墙纸”) , 这在2019年中期的“冲刺阶段”中显露出来 。虽然Python 3.7的错误最少 , 但是“我们不得不花另外的精力使Python 3.5和3.6以及3.7正常运行 。Python 3.8也一样 。”
很快 , Mercurial迎来了迁移的重大日子 。在持续集成系统(使用亚马逊的AWS DynamoDB、S3和EC2竞价型实例用于执行作业)上 , Szorc开始在Linux上测试Python版本3.5、3.6、3.7和3.8(并在Windows上测试Python 3.7) 。但是虽然通过了所有测试 , “我认为交付只是漫长过程中的一块里程碑——大概是最重要的里程碑 。仍有很多工作要做……我们的用户可能多年后会在Python 3上发现各种bug 。”
Windows上仍然存在“少数的已知问题” 。
这次经历让Szorc感到一些不快 。Szorc写道:“虽然过去我喜爱Python——从这种语言到受人欢迎的社区 , 还是搞不明白Python如何因当初选择了迁移计划而给整个社区带来如此多的困难和麻烦 。我认为Python的选择是一个反面典例 , 表明了在管理大型项目或生态系统时不该做什么 。如果花时间来了解和反思Python的失误 , 其他广泛部署系统的维护者将受益匪浅……”
“Python 3的最初方法反映了许多开发人员和项目所犯的愚蠢行为:尝试重写而不是执行渐进式演变 。对于既有的项目 , 大规模重写常常效果不佳 。而Python 3也不例外 。”
其他见解
Szorc的博文出现在Hacker News上后吸引了400多人点赞 , 另有339条留言 , 包括一位持不同意见的纽约市软件工程师 。“我参与了多年来以同样的代码库支持python2和python3的多个重要的库和框架……而其实并不是这样的……是的 , 你几乎不得不等待python-3.4即将发布、等待python-2.6基本上退役 , 改而使用python-2.7 。随后从2014年初开始 , 使干净的代码库与python-2.7和python-3.4 +兼容显得非常简单 。”
夏威夷大学的一名学生认为 , 人们对一款名为2to3的迁移程序寄予太高的期望 , 该程序试图提供一个自动代码翻译器 。有人在回复时抱怨道:“Python 2到3的迁移计划根本行不通 。他们以为所有人会大规模运行2to3 , 然后几年后我们所有人都会切换到3 。”
“相反拖了十多年 , 因为实际上我们需要编写与Python 2和3都兼容的代码……直到足够的代码使用3、放弃对2的支持 。”
而一些人质疑这项工作所取得的成果 。华盛顿的电气工程师Brian Davis自称是“老派的Web开发人员” , 他在将“许多”小项目转换到Python 2之后分享了其想法 。“字符串处理方面的变化把我难住了 , 相对导入方面的变化也颇费一番思量 。但是最挫折的是这个棘手的问题:我干嘛这么做?”
另外见解
从一些方面来看 , Python 2没有真正消失 。比如有Tauthon , Python 2.7.17解释器的这个向后兼容分支有新的语法 , 以及从Python 3.x向后移植的库 。Tauthon可以运行Python 2.7代码和C扩展以及来自Python 3.x的一些新功能 。
除了Python Package Index中所列的第三方开源软件包外 , 开发工具公司ActiveState还为Python 2及其标准库提供商业支持 。
推荐阅读
- 『频率』广电5G动真格 700M频率迁移要按期完成
- 咪蒙■咪蒙时隔一年后疑似要再度复出 此前备用小号迁移到新账号中
- 『咪蒙』咪蒙时隔一年后疑似要再度复出 此前备用小号迁移到新账号中
- 硬盘@ORICO速龙H110 240G SATA固态硬盘上手:系统无损迁移
- 业务:夯实数字化平台建设 中小企业业务向云端迁移更进一步
- #GitHub#CVPR 2020 Oral:一行代码提升迁移性能,中科院计算所研究生一作
- #视讯广电#广电5G动真格 700M频率迁移要按期完成
- 『云端』重大失误?NASA全面向AWS云端迁移数据 却忽略了访问成本
- 『cnBeta』重大失误?NASA全面向AWS云端迁移数据 却忽略了访问成本
- 『』云计算迁移别忘了备份物理服务器和数据