@ 2014.09.25 , 09:35

版本 6 的诅咒

[-]

# 感谢 CMOV 投递译稿:

主流编程语言一般出不到第 6 个版本,但要是出了,它们遍体鳞伤。这是为什么?

我们开发者不是那种迷信的人。我们工作在一个有因必有果的领域,在这个领域里异常会引起惊慌并逼人补救,而不是令人敬畏。这里我们没有地缝,钻进去就可以无视意外的发生,然后归咎于“上帝的意志”,或者换个不那么宗教化的说法,“谁说得清啊?”我们拒绝承认事情无法被解释,部分原因是意识到了与我们共事的软硬件都是别人创造的,而非不可知的自然现象。

因此,我们也不能容忍别的职业里的迷信。但如果我们非要迷信,“版本 6 的诅咒”一定是个好的起点。至少近 30 年来,第 6 版的编程语言往往难产,就算成功发布了,产品也开始走下坡路。

[-]

考虑 Perl 6, PHP 6, VB 6 —— 每个语言都拖到考验最狂热的粉丝的耐心。PHP 6 就是这么个纠结的孩儿,尽管 2005 年就开始开发,但为了给要出的版本 7 让路还是得取消掉,而版本 7 还不知何时发布。

Perl 6 在 2000 年就提出来了。十四年后,还没有一个完整的实现出来,尽管有几乎完整版。因为 Perl 6 问题太多太多了,而且多年来还有棘手的政治事务,该语言开始了它经久不停的自由落体。

Visual Basic 6 (VB6) 这个例子说明“版本 6 的诅咒”甚至可以袭击微软这样的公司,微软完全控制它的工具并显示出自己擅长开发其它一些语言,比如 C#。VB6 是最后一个移植到 .NET 的语言。往新平台的移植被社区认为是“强行军”并受到极大抵制,“强行军”这个评价比较中肯,因为 VB6 和 VB.NET 语法差别很大。结果是许多程序员在微软不支持 VB6 后还写着 VB6 ——写些一出来就成了遗留代码的东西,好多网站现在还在讨论它们。

VB6 不是唯一撞上减速带的微软语言版本。更受喜爱的 Visual C++ 6.0 编译器也是。1998 年发布时,它评价高流传广。然而,它是最后一个原生 C++ 编译器。花四年才等到下一个版本,却成为了 .NET 工具链的一部分。更早些,Microsoft C 6.0 是这个雷得蒙巨人最后的纯 C 编译器。此后,所有 C 编译器都是 C++。PC 开发者回忆早年的 C 编程也许会想到市场领导者,Lattice, 基本在它的第 6 版编译器之后消失了。毫无疑问如果一个版本 6 真的做出来了,它趋向于改变未来的方向。Java 6 也许是 Java 最不重要的主版本。它还是最后一个 Sun 拥有的版本并且开启了下个主版本出来前五年的拖延。

把“版本 6 的诅咒”看成认知偏差,尤其是证实偏差,的一个例子是个简单的解释,而且可能对。或者换句话说,若研究充分,找不出任何数据支持诅咒这个想法?也许找不出,但是我还是接受诅咒的想法,因为确实在主流编程语言里,版本 6 有别的版本比不了的负面记录。

找个可能的原因要从考虑第 6 版语言或工具出现在它产品生命周期的什么地方开始。 1.0 是开天辟地。2.0 修正 1.0 并加些没有的功能。从版本 3 开始分两条路:增量升级或着巨大改变。如果一开始选第一条路,最终会到一个语言或工具必须出告别版的时候,要不然对它的兴趣和社区规模或者工具的销量会开始下滑。我的观点是如果第 6 版前没出戏剧性时刻,要么第 6 版会出,要么产品会死。五个没有大改动的版本意味着一个版本出来太长时间没对已知的局限做大改进。所以,第 6 版就是它的生死关头。对 Perl 6 这显然对。

[-]

坚持增量升级的开发商在版本 6 到了抉择的时刻——如何对待老迈的产品?有许多次,公司在版本 6 发布了一个增量更新,然后在激动人心的新路上向前走,把老迈的产品代以完全不同的产品线:(VB6,Microsoft C 6.0)这有道理。出版本 6 的时候,一般离最初的产品好多年了,现在需求一些全新的东西。公司要是不能找到方案提出“不同的东西”就会开始衰落或停滞。(Lattice, Sun Java)

走出编程语言的范畴起考虑其它要死的版本 6 很吸引人:WordPerfect 6.0,Internet Explorer 6,等等。但是我想这样肯定会让我们陷入之前说的认知偏差。我严格地把它看成一个编程语言中的现象。

C# 现在坐在版本 5.0 的位置上。有谁对 C# 2015 有想法?

本文译自 drdobbs,由 投稿 编辑发布。

支付宝打赏 [x]
您的大名: 打赏金额:
赞一个 (0)