否定性“传统代码”的由来是什么


28

每个人都在谈论软件开发中的遗留代码,我听说过过去十年中用来将任何代码库描述为不良代码的术语。

对程序员一样具有如此强大内涵的这个术语从何而来?

我相信肯定有一些关于软件开发的书是这个学期的开创者。我很想找到术语“旧版代码”的由来。


13
20年前,我听说过遗留代码的以下定义,从那时起我就一直记得:遗留代码是您当前在生产中使用的代码。它已经多次帮助了我的观点。
Michael Durrant 2014年

10
“旧版代码”是否定词?谁说的?无论如何,“传统”一词并不是特定于编程的,在这种情况下也不是特别重要。
罗伯特·哈维2014年

5
Michael Feathers(amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…)可能不是该术语的发明者,但他做出了一个有趣的定义:他将旧代码称为“未经测试的代码”。这确实是一个负面属性。
Doc Brown

11
写一堆代码。签入。去吃午饭。快回来 整个屏幕充满了旧版代码!现在,您必须了解该代码,并确保所有将来的更改都能在该代码的上下文中正常工作。旧版代码与现有代码相同。
埃里克·利珀特

4
“旧版”在这里仅表示原始开发人员已不在,仅保留了代码和文档伪像。它不以任何方式指代年龄或质量。
SK-logic

Answers:


39

遗留代码基于遗留系统的短语,该短语专门适用于代码。根据Wikipedia的说法,它可能可以追溯到1970年代,并在1980年代很普遍。它随着1990年代的技术爆炸而起飞。

这可以通过Google的ngram查看器看到:旧版系统,旧版代码

遗留系统和代码

进一步研究这一点,您可以找到1970年代 “传统系统”一词的有据可查的用法。

谷歌拥有的“遗留系统”最早的例子是在《1978年美国陆军数值分析和计算机会议论文集》中

……对于明确定义的问题,经过精心设计和记录的解决方案是需要了解遗留系统的操作并充满信心地更改现有系统。

Clout中,还有一个“遗留系统”在技术行业之外使用的示例:《女人力量与政治》( 1976年):

……此外,她在强大的银行和货币委员会中位居第三,这是她自己建立的权力职位,而不是通过旧制度建立的。

除了这些例子,它的使用范围已经超出了纯软件领域,确切地讲该术语的起源的细节可能已被时间所束缚。鉴于军事和政治参考,它可能起源于它们(主要是军事及其行话迁移“似乎“ kluge”是通过战争期间在剑桥运行的许多军事电子项目的校友来到麻省理工学院的。麻省理工学院古老的20号楼,里面装有TMRC ...“))


这是一个很好的答案。我将继续研究以查看是否可以找到原点,但是您很可能会发现原点已丢失或没有记录。
stevebot 2014年

1
@stevebot我建议遵循“遗留系统”而不是代码的路径……该术语似乎早于旧代码,并且具有相同的基本含义。

6
您的“关于1979年碳-碳键形成的书”中的内容来自一本名为“项目管理的新方法”的书,该书是2002年(1998年首次出版)。扫描过程似乎有些混乱。
Pete Kirkham 2014年

1
看来这不是否定字词的来源。
JeffO 2014年

@JeffO不,正如MichaelT提到的,它不是确切的来源。这是一个非常好的答案,尽管显示了我们的研究和努力。
stevebot 2014年

5

传统代码库通常不是指POS系统,而是指代码库中存在的任何系统或不再用于新开发的系统。例如,我的团队目前支持一些被认为是遗留代码的.net 1.1和2.0应用程序。如果有需要修改的时间,它们将被重写或更新为使用最新的框架和标准。在此之前,我们将它们作为遗留应用程序进行管理,这些遗留应用程序需要继续运行,但未实施任何增强功能或代码修复。

还有一些我们根本不支持用VB6和Classic ASP编写的旧系统。我们没有能力或指令来支持或修改这些系统,但是只要它们继续运行并且不需要增强,就不可能对其进行更新。这些系统中没有任何特别错误的地方。他们按照应有的方式执行工作,除了看起来像90年代中期至后期的应用程序外,他们没有大的问题。

因此,传统并不意味着POS只是使用不符合当前标准的较早技术或语言创建的系统。一些遗留系统之所以可以成为POS,主要是因为它们缺乏当今存在的开发方法,这些方法不支持托管代码以及15年以上的资深Web编码人员的经验。


我完全同意旧式系统不一定是POS系统。我想知道这句话的来历。
stevebot 2014年

3
@stevebot如果您想查找该术语的起源,则应在不以任何含义为前提的情况下提出要求。
2014年

2
@stevebot-遗产就是您传承时留下的任何东西。我认为描述符是从他们被其他无数领域采用的方式中刚刚采用的。
SoylentGray 2014年

1
@MichaelKjörling您是在告诉我您从未听过负面使用的遗留代码吗?那不是我的意思,而是我在集会,书籍和工作中一次又一次听到的其他含义,就像我说过的那样,我完全同意遗产不应该是一个负面术语。
stevebot 2014年

@stevebot-遗留代码似乎只是“负数”,因为它仅用于替换或与较旧系统接口(及其困难)的上下文中。十年前构建的程序仍然有用/相关,并且几乎没有错误,仍然是“旧版软件”,但每个人都称其为“软件”。代码库也是如此。
Robotnik 2014年

3

“旧版代码”是市场营销人员使用的一个术语,用于向那些代码旧(但可能工作得很好)的人施加压力,以更新到最新的最大(可能是更容易出错的)软件语言和技术。它与“遗留系统”紧密相连,“遗留系统”是指可以正常运行但不符合现在“政治上正确”的旧硬件和操作系统(例如OpenVMS,IBM系统)。


6
虽然这可能是正确的,但是如果您编辑答案以引用支持此答案中提出的主张的特定参考文献,则更好。您是否可以引用任何此类参考?
CVn 2014年

2

遗留代码一词至少可以追溯到1989年,由Glenn Everhart在comp.sys.amiga中使用

(...顺便说一下,是的,我这样做有时程序C也...但我觉得它更容易转换的遗留代码 W / O改变自己的语言...)

我在Google图书中没有发现可验证的东西。


正如埃里克·利珀特(Eric Lippert)所指出的那样,在编写一段代码后的第二分钟,您就获得了遗留代码。MichaelT所显示的曲线和您的发现只是在可视化时间范围内,IT的主流兴起开始产生大量代码,涉及世界各地的许多人。不久后,也出现了用更新的系统替换“旧”系统的需求-这就是为什么以及何时成为一个广泛的术语。
JensG 2014年

1
如果有充分的理由,旧代码将不断被替换。我曾经在1970年开发过一个用PL / 1编写的大型机计费系统。它取代了用大型机汇编语言编写的系统(它本身在很大程度上是对现有手动系统的自动化)。使用约35年后,才最终更换了PL / 1系统(之前曾两次尝试更换失败)。可能现在,现代技术被更早地废弃了(并且无视这可能需要多少重写遗产系统)。
Kickstart 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.