你们当中许多人都在为大型公司提供知名软件。我想知道,现代大型应用程序(例如Firefox,Photoshop,Windows,Linux等)中还剩下多少原始代码(基本上是“ v1.0”版本的代码)?我真的更喜欢第一手经验和真实的战争故事。
感谢您满足我的好奇心。
编辑
原来有一定程度的误解。我所追求的基本上是以下内容:责备 / 注释源代码时,自最初的1.0版本以来,是否有任何部分甚至整个文件没有被修改过。
你们当中许多人都在为大型公司提供知名软件。我想知道,现代大型应用程序(例如Firefox,Photoshop,Windows,Linux等)中还剩下多少原始代码(基本上是“ v1.0”版本的代码)?我真的更喜欢第一手经验和真实的战争故事。
感谢您满足我的好奇心。
编辑
原来有一定程度的误解。我所追求的基本上是以下内容:责备 / 注释源代码时,自最初的1.0版本以来,是否有任何部分甚至整个文件没有被修改过。
Answers:
比您期望的还要多,而且比您期望的要古老得多。即使使用“完全重写”和大型重构,仍有许多模块保持不变。
Péter建议,例如,在Firefox中找不到旧的Netscape代码。这是错误的,如果您搜索源代码,则会发现许多带有免责声明的文件,例如:
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
例如,在Linux内核标头中,您可以找到以下内容:
include/linux/if_ppp.h: * Copyright (c) 1989 Carnegie Mellon University.
include/linux/quota.h: * Copyright (c) 1982, 1986 Regents of the University of California.
include/linux/coda.h: Copyright (c) 1987-1999 Carnegie Mellon University
include/linux/mc146818rtc.h: * derived from Data Sheet, Copyright Motorola 1984 (!).
include/net/slhc_vj.h: * Copyright (c) 1989 Regents of the University of California.
我不知道多少,但是肯定有旧代码,但是慢慢地被删除了。例如在Windows 2008或Vista中,使用资源管理器转到c:\ windows \ fonts,右键单击左窗格,然后选择“安装新字体”。显示的对话框是Windows 3.1天(请检查屏幕截图)。如果您在Windows 7中看到相同的内容,则它现在是一个更好的控制面板,如UI。
“如果他们从一开始就做得非常出色,那么很大一部分,否则就是一小部分。”
严格的语言显示出此特征。尼克劳斯·沃思(Nicklaus Wirth)的语言几乎不需要更改,因为它们是经过精确计划的。(对于Delphi,这实际上已经改变了,并且随着即将发布的通用部署版本将会改变。)
当然,这也有另一面。确定原始代码已经足够好,例如在Microsoft Windows或可爱的应用程序(例如ACDSee),文本编辑器或著名的“ Linux精神”命令行应用程序中。
即使对于那些一开始不喜欢它们的人来说,这些应用程序似乎笨拙,但它们显示了精心计划的特征以及明确定义的功能集;即使他们没有钟声和口哨声,也可能是首选。它们可以发挥作用,向后兼容性很好,并且将来可能会继续正常运行。
如果您按功能集进行操作,那么从5.0版开始,Photoshop将具有90%的相同代码。; P是吗?没有为什么?出售更新。您今天无法真正做更多的事情。
文件管理器的功能集,直到它想要进行FTP,Web和云计算的程度,在任何十年级的平台上都基本相同。此类应用程序仍未达到1.0的唯一原因是由于不良的计划,一时的兴致,对更新的渴望-以及在最小程度上使应用程序周围的环境发生了变化。
答案是某些宝石停留在1.0或1.0.x,因为开发人员已决定功能集,完成了一个无错误的程序,或者不能从不断添加内容和修复所添加内容中的错误中获利,或者已经转移继续开发更多宝石。
所有其他情况都不太可能保留在1.0中的代码附近。如果您有个好主意,为什么不应该重写应用程序呢?您应该,编码很有趣!:)除非这不是许多现代软件产品中发生的事情。为了变更(销售)而不受功能集的推动而进行变更,并且在较小程度上进行更新以适应不断变化的平台,这已成为日常工作。
在不断更新的软件相互影响的汤中,很少有代码库可以逃脱修订。仍有一些人梦想着实现基础和模块化(并且不会过早地发布),但是绝大多数都停留在发布-修订-更新周期中。