首先,是一些上下文(您大多数人仍然知道的东西):
每种流行的编程语言都有明显的演变,大多数时候都以其版本标记:您拥有Java 5、6、7等,PHP 5.1、5.2、5.3等。发布新版本可提供新的API,修复错误,添加新功能,新框架等。总而言之:很好。
但是该语言(或平台)的问题呢?如果某种语言存在问题,开发人员要么避免使用(如果可以的话),要么学习忍受它。
现在,这些语言的开发人员从使用它们的程序员那里得到了很多反馈。因此,随着时间(和版本号)的流逝,这些语言中的问题将慢慢但必定会消失,这是有道理的。好吧,不是真的。为什么?向后兼容,这就是原因。但是为什么会这样呢?请阅读以下内容,了解更具体的情况。
我可以解释我的问题的最好方法是使用PHP作为示例:
PHP被成千上万的人所喜爱和憎恨。所有语言都有缺陷,但是显然PHP是特殊的。查看此博客文章。它有很多所谓的PHP缺陷列表。现在,我不是PHP开发人员(尚未),但是我通读了所有内容,并且确定列表中的很大一部分确实是真正的问题。(并非全部,因为它可能是主观的)。
现在,如果我是积极开发PHP的人之一,那么我肯定会一一解决这些问题。但是,如果这样做,则依赖于该语言特定行为的代码将在新版本上运行时中断。用两个词概括一下:向后兼容。
我不明白的是:为什么要保持PHP向后兼容?如果我发布了修正了所有这些问题的PHP版本8,就不能在上面发出一个大警告:“不要在该版本上运行旧代码!”?
有一种叫做过时的东西。我们拥有它好多年了,而且行得通。在PHP的背景下:看看这些天来人们如何积极地劝阻这些mysql_*
功能的使用(推荐使用mysqli_*
PDO和PDO)。弃用工程。我们可以使用它。我们应该使用它。如果它适用于函数,为什么不适用于所有语言?
假设我(PHP开发人员)这样做:
- 启动新版本的PHP(假设8),并修复所有这些缺陷
- 新项目将开始使用该版本,因为它会更好,更清晰,更安全等。
- 但是,为了不放弃旧版本的PHP,我会不断发布更新,修复安全问题,错误等。这出于我未在此处列出的原因是有道理的。这是常见的做法:例如,看看Oracle如何继续更新MySQL 5.1.x版,即使它主要关注5.5.x版。
- 大约3或4年后,我停止更新PHP的旧版本并使其消失。很好,因为在这3或4年中,无论如何大多数项目都会改用PHP 8。
我的问题是:所有这些步骤是否合理?会很难吗?如果可以做到,那为什么不做呢?
是的,缺点是您破坏了向后兼容性。但这不是值得付出的代价吗?有好处的是,在3到4年内,您将拥有一种可解决90%问题的语言。它的名字将确保它的流行。
编辑:好的,所以当我说3或4年内人们将转向假设的PHP 8时,我没有正确表达自己的意思。我的意思是:3或4年内,如果人们开始使用PHP 8,他们将使用PHP 8。新项目。
mysql_*
例如,在5.5中已弃用),但是如果大多数托管服务提供商提供一个或什至两个版本(5.3是-不幸的是-仍然是大多数版本)就无关紧要了。供应商提供)。