Яке походження негативного терміна "застарілий код"


28

Усі говорять про застарілий код у розробці програмного забезпечення, і я чув, що за останні десять років цей термін використовується для малювання будь-якої кодової бази як поганої.

Звідки взявся цей термін, який має такі потужні конотації для програмістів?

Я впевнений, що має бути книга про розробку програмного забезпечення, яка стала першопрохідцем цього терміну. Я хотів би знайти походження терміна "спадковий код".


13
Я чув таке визначення спадкового коду 20 років тому і пам’ятав його ще з тих пір: застарілий код - це код, який у вас зараз є у виробництві. Це багато разів допомагало моїй точці зору.
Майкл Дюррант

10
"Спадковий код" - це негативний термін? Хто це каже? У всякому разі, слово "спадщина" не є специфічним для програмування, а також не є особливо значущим у цьому контексті.
Роберт Харві

5
Майкл Перо ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… ), швидше за все, не є винахідником цього терміна, але він зробив цікаве визначення: він назвав застарілий код "кодом без тестів". І це справді негативний атрибут.
Док Браун

11
Напишіть купу коду. Перевірте це. Ідіть, пообідайте. Повертайся. Там цілий екран, повний застарілого коду! Тепер ви повинні зрозуміти цей код і переконатися, що всі майбутні зміни працюють правильно в контексті цього коду. Спадковий код такий же, як і існуючий код .
Ерік Ліпперт

4
"Спадщина" тут просто означає, що оригінальних розробників вже немає, і залишилися лише артефакти коду та документації. Це жодним чином не стосується віку чи якості.
SK-логіка

Відповіді:


39

Старий код заснований на фразі застарілої системи, яка спеціально стосується коду. Згідно з Вікіпедією, ймовірно, це відноситься до 1970-х років і широко використовувалося в 1980-х. Це відбулося з вибухом технологій 1990-х.

Це можна побачити за допомогою програми перегляду ngram Google: застаріла система, застарілий код

застаріла система та код

Далі, заглибившись у це, ви можете знайти документоване використання терміна "спадкова система" у 1970-х роках .

Найдавніший приклад "спадкової системи", який має Google, є у книзі " Матеріали конференції чисельного аналізу та комп'ютерів армії" з 1978 року:

... добре оброблене та задокументоване вирішення чітко визначеної проблеми полягає в тому, що функціонування застарілої системи потрібно розуміти і впевнено змінювати існуючу систему.

Також є приклад „спадкової системи”, що використовується поза технологічною галуззю в Clout: Womanpower and Politics grin 1976:

... крім того, вона займає місце демократа третього рейтингу в потужному Комітеті з банківських та валютних питань - владні посади, які вона створила самостійно, а не через успадковану систему.

Поза цим прикладом, який показує, що його використання вийшло за межі чистого програмного світу, специфіка того, де саме виник цей термін, ймовірно, втрачається в піски часу. Зважаючи на військові та політичні довідки, можливо, вони походять із них (насамперед військових та його міграції на жаргоні ( "Мабуть," Клуж "потрапив до MIT через випускників багатьох проектів військової електроніки, що проводилися в Кембриджі під час війни (багато в Поважна будівля MIT 20, в якій розміщувався TMRC ... " ))


Це чудова відповідь. Я збираюся продовжувати дослідження, щоб дізнатися, чи можу я знайти походження, але ви, ймовірно, маєте рацію, що походження втрачено або можливо не зафіксовано.
stevebot

1
@stevebot Я б запропонував дотримуватися шляху «застарілої системи», а не коду ... цей термін, мабуть, раніше передував застарілому коду і має те саме істотне значення.

6
Текст у вашій "Книзі про утворення вуглецево-вуглецевих облігацій 1979 року" - це книга під назвою "Нові практики в управлінні проектами" та з 2002 року (вперше опублікована в 1998 році). Схоже, щось переплуталось у скануванні.
Піт Кіркхем,

1
Не здається, що це джерело негативного терміна.
JeffO

@JeffO Ні, як MichaelT згадує своє непереконливе місце, звідки він взявся. Це чортово хороша відповідь, хоча показує дослідження та зусилля.
stevebot

5

Спадкова база коду зазвичай відноситься не до POS-системи, а до будь-якої системи, яка існує в кодовій базі або системі, яка більше не використовується для нової розробки. Наприклад, в даний час моя команда підтримує кілька додатків .net 1.1 і 2.0, які вважаються застарілим кодом. Якщо настане час, коли потрібна модифікація, вони будуть або переписані або оновлені, щоб використовувати новітні рамки та стандарти. До цього часу ми управляємо ними як застарілі додатки, які повинні продовжувати функціонувати, але не вдосконалюються або виправляються коди.

Є також декілька застарілих систем, які ми взагалі не підтримуємо, які були написані в VB6 та Classic ASP. У нас немає можливості або директиви для підтримки або модифікації цих систем, але поки вони продовжують працювати і не потребують удосконалень, вони, ймовірно, не будуть оновлені. Немає нічого особливо поганого з жодною з цих систем. Вони виконують свою роботу так, як їм належить, і окрім того, як виглядати як додаток з середини до кінця 90-х, у них немає основних проблем.

Тож спадщина не означає POS просто систему, яка була створена за попередньою технологією чи мовою, яка не відповідає сучасним стандартам. Деякі застарілі системи кваліфікуються як POS здебільшого тому, що їм не вистачало методологій розробки, що існують на сьогоднішній день, які дозволяють керувати кодом та 15-річним досвідом роботи ветеранських веб-кодерів.


Я повністю погоджуюся, що застарілі системи - це не обов'язково POS-системи. Мені цікаво, яке походження фрази.
stevebot

3
@stevebot Якщо ви хочете знайти походження терміна, вам слід попросити це, не припускаючи конотації.
CVn

2
@stevebot - спадщина - це все, що ви залишаєте після переходу. Я б припустив, що дескриптор був просто прийнятий з того, як він був прийнятий для незліченних інших областей.
SoylentGray

1
@ MichaelKjörling, ти мені кажеш, що ти ніколи не чув застарілого коду, який використовується в негативному сенсі ?? Це не моя конотація, але про інших, які я знову і знову чую в зустрічах, книгах і робочих місцях. Як я вже сказав, я повністю згоден, що спадщина не повинна бути негативним терміном.
stevebot

@stevebot - застарілий код здається лише «негативним», оскільки він коли-небудь застосовується лише в контексті заміни або взаємодії зі старою системою (та її труднощами). Програма, яка була побудована більше десятиліття тому, але все ще корисна / актуальна і має мало помилок, все ще є «застарілим програмним забезпеченням», але всі просто називають це «програмне забезпечення». Те саме стосується і кодових баз.
Robotnik

3

"Спадковий код" - це термін, який використовується маркетинговими людьми для тиску на тих, чий код є старим (але, мабуть, працює чудово) для оновлення до останніх найбільших (і, ймовірно, більше помилок) програмних мов та методів. Вона тісно пов’язана з "застарілою системою", яка стосується старих апаратних та операційних систем, які добре працюють, але не відповідають тому, що зараз "політично коректно" (наприклад, OpenVMS, система IBM).


6
Хоча це може бути правдою, було б краще, якби ви редагували відповідь, цитуючи конкретні посилання, що підтверджують твердження, викладені в цій відповіді. Чи є такі посилання, які ви можете навести?
CVn

2

Термін успадкований код принаймні припадає на 1989 рік, як його використовував Гленн Еверхарт у comp.sys.amiga :

(... до речі, так, я робити іноді програму в C також ... але я вважаю , що простіше конвертувати успадкований код без зміни його мови ...)

Раніше я не знайшов нічого, що можна перевірити в Книгах Google.


Як зазначив Ерік Ліпперт, вже через хвилину після написання фрагмента коду ви отримали застарілий код. Криві, показані MichaelT та вашими висновками, просто візуалізують часові рамки, коли основний підйом ІТ почав виробляти величезну кількість коду, залучаючи безліч людей у ​​всьому світі. Трохи пізніше виникла потреба замінити "старі" системи на новіші - ось чому і коли вона стала широко розповсюдженим терміном.
JensG

1
Старий код постійно замінювався, якщо це було вагомою причиною. Я працював над системою виставлення рахунків мейнфрейму, написаною (в PL / 1) в 1970 році. Вона замінила систему, написану мовою складання мейнфреймів (що саме по собі було значною мірою автоматизацією існуючої ручної системи). Система PL / 1 була остаточно замінена приблизно через 35 років використання (кілька невдалих спроб замінити її до цього). Можливо, зараз сучасні технології відкладаються набагато раніше (і не зважаючи на те, наскільки переписування системи спадщини це може спричинити).
Кікстарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.