Python 3.0 与语言演进

13 投票
12 回答
1521 浏览
提问于 2025-04-11 20:01

Python 3.0 让之前的版本不再兼容,也就是说,老版本的代码在新版本上可能不能正常运行。这就把这个语言分成了两个方向(至少是暂时的)。你知道还有其他什么语言在成熟的时候经历过这么大的设计变革吗?

另外,你觉得编程语言应该这样发展吗,还是说这样付出的代价太高了?

12 个回答

9

Python团队为了让大家在升级时不那么痛苦,付出了很多努力。他们在发布2.6版本的时候,就考虑到了让升级过程尽量简单。升级到2.6之后,你可以运行一些脚本,这样就能顺利升级到3.0,毫无问题。

13

坚持几乎完全的向后兼容性代价太高了。如果你想知道为什么,可以花两分钟试着用C++编程。

16

我能想到的唯一一种可以在中途进行这种改变的语言是Perl。当然,Python在这方面比Perl更快一步,已经先行发布了。不过需要注意的是,Perl的变化要比Python大得多,可能会更难处理。

(Perl的“有多种方法可以做到”这种理念是有代价的。)

像.NET相关语言版本之间的变化就是一个例子(这很讽刺,因为.NET的初衷是要保证API的稳定性和跨平台兼容性)。不过,我不太会把这些语言称为“成熟”;它们一直以来都是一种边设计边开发的方式。

或者说,我觉得大多数编程语言要么是“自然发展”的,要么是“工程构建”的。Perl就是自然发展的完美例子;它最开始是一个像awk/sed那样的文本处理工具,后来发展成了一门完整的语言。

而Python则更像是经过精心设计的。你可以花点时间去他们网站上看那些详细的白皮书,里面有关于每一个即使是小的语法和实现变化的广泛讨论。

进行这种深远的变化在编程语言中是相对新的,因为编程语言本身的性质也在变化。以前,编程方法的变化通常是在新处理器发布时,带来了新的指令集。早期的语言往往要么非常底层,与汇编语言紧密结合(比如C),要么非常动态(比如Forth、Lisp),所以根本不会考虑在中途进行改变。

至于这些变化是否是好的,我不太确定。不过,我对引导Python发展的团队还是有信心的;到目前为止,语言的变化大多是朝着更好的方向发展的。

我认为在未来,全球解释器锁(Global Interpreter Lock)会比语法变化更为重要。尽管新的多处理器库可能会缓解大部分问题。

撰写回答