Каково происхождение отрицательного термина «устаревший код»

28

Все говорят об унаследованном коде в разработке программного обеспечения, и я слышал, что термин за последние десять лет использовался для обозначения любой кодовой базы как плохой.

Откуда возник этот термин, который имеет столь сильные коннотации для программистов?

Я уверен, что должна быть какая-то книга по разработке программного обеспечения, которая стала пионером этого термина. Я хотел бы определить происхождение термина «устаревший код».

stevebot
источник
13
Я слышал следующее определение унаследованного кода 20 лет назад и помню его с тех пор: унаследованный код - это код, который вы в настоящее время используете. Это помогло моей точке зрения много раз.
Майкл Даррант
10
«Устаревший код» это отрицательный термин? Кто так говорит? В любом случае, слово «наследие» не является специфическим для программирования, и при этом оно не имеет особого значения.
Роберт Харви
5
Майкл Фезерс ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… ), скорее всего, не изобретатель этого термина, но он сделал интересное определение: он назвал унаследованный код «кодом без тестов». И это действительно отрицательный атрибут.
Док Браун
11
Написать кучу кода. Проверьте это. Идите, пообедайте. Возвращайся. Там целый экран, полный устаревшего кода! Теперь вы должны понять этот код и убедиться, что все будущие изменения работают правильно в контексте этого кода. Устаревший код совпадает с существующим кодом .
Эрик Липперт
4
«Наследие» здесь просто означает, что первоначальных разработчиков больше нет, и остались только артефакты кода и документации. Это никак не связано с возрастом или качеством.
SK-logic

Ответы:

39

Устаревший код основан на фразе унаследованной системы, которая конкретно относится к коду. Согласно Википедии, она, вероятно, восходит к 1970-м годам и широко использовалась в 1980-х годах. Это началось с технологического взрыва 1990-х годов.

Это можно увидеть с помощью программы просмотра Google Ngram: устаревшая система, устаревший код

устаревшая система и код

Углубившись в это, вы можете найти документально подтвержденное использование термина «устаревшая система» в 1970-х годах .

Самый ранний пример «унаследованной системы», которую имеет Google, содержится в книге « Труды армейской конференции по численному анализу и компьютерам», выпущенной в 1978 году:

... хорошо продуманное и документированное решение четко определенной проблемы - необходимо понять работу устаревшей системы и с уверенностью изменить существующую систему.

Существует также пример использования «устаревшей системы» за пределами технологической индустрии в Clout: Womanpower and Politics grin 1976:

... кроме того, она занимает место демократа третьего ранга в влиятельном Банковском и валютном комитете - позиции власти, которые она создала самостоятельно, а не через унаследованную систему.

Помимо этого примера, который показывает, что его использование вышло за пределы чистого мира программного обеспечения, особенности того, откуда именно возник этот термин, вероятно, потеряны в песках времени. Учитывая военные и политические ссылки, он, возможно, произошел от них (в основном от военных и их жаргонной миграции) ( «Вероятно,« клюге »пришел в Массачусетский технологический институт через выпускников многих проектов военной электроники, которые проводились в Кембридже во время войны (многие в Почтенное здание 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-летний опыт ветеранов веб-программирования.

SoylentGray
источник
Я полностью согласен с тем, что системы Legacy не обязательно являются системами POS. Мне интересно, каково происхождение этой фразы.
stevebot
3
@stevebot Если вы хотите найти происхождение этого термина, вы должны попросить об этом, не предполагая коннотации.
CVn
2
@stevebot - наследие - это все, что вы оставляете, когда переходите. Я предположил бы, что дескриптор был только принят от того, что они были приняты к бесчисленным другим областям.
SoylentGray
1
@ MichaelKjörling, ты говоришь мне, что никогда не слышал, чтобы унаследованный код использовался в негативном смысле ?? Это не мое значение, но то, что я слышал от других снова и снова на встречах, в книгах и на работе. Как я сказал, я полностью согласен с тем, что наследие не должно быть негативным термином.
stevebot
@stevebot - унаследованный код только кажется «отрицательным», потому что он используется только в контексте замены или взаимодействия со старой системой (и ее трудностями). Программа, которая была построена более десяти лет назад, но все еще полезна / актуальна и содержит мало ошибок, все еще остается «устаревшим программным обеспечением», но все называют ее «программным обеспечением». То же самое касается кодовых баз.
Роботник
3

«Устаревший код» - это термин, используемый специалистами по маркетингу для давления на тех, чей код устарел (но, по-видимому, работает нормально), на обновление самых последних (и, возможно, более подверженных ошибкам) ​​программных языков и методов. Он тесно связан с «устаревшей системой», которая относится к старому оборудованию и операционным системам, которые работают нормально, но не соответствуют тому, что сейчас является «политически корректным» (например, OpenVMS, система IBM).

JohnM
источник
6
Хотя это может быть правдой, было бы лучше, если бы вы отредактировали ответ, чтобы привести конкретные ссылки, подтверждающие утверждения, сделанные в этом ответе. Есть ли такие ссылки, которые вы можете сослаться?
CVn
2

Термин « унаследованный код» датируется не менее 1989 года и используется Гленом Эверхартом в comp.sys.amiga :

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

Я ничего не нашел достоверно ранее в Google Книгах.

Хьюго
источник
Как отметил Эрик Липперт, через минуту после того, как вы написали кусок кода, вы получили устаревший код. Кривые, показанные MichaelT, и ваши находки просто визуализируют временные рамки, в которых массовый рост ИТ начал производить огромное количество кода, вовлекая множество людей по всему миру. Чуть позже возникла необходимость замены «старых» систем новыми, и именно поэтому и когда это стало широко распространенным термином.
JensG
1
Старый код постоянно заменялся, если на то были веские причины. Раньше я работал над системой биллинга мэйнфреймов, написанной (в PL / 1) в 1970 году. Она заменила систему, написанную на языке ассемблера мэйнфреймов (что само по себе было в значительной степени автоматизацией существующей ручной системы). Система PL / 1 была окончательно заменена после 35 лет использования (несколько неудачных попыток заменить ее до этого). Возможно, теперь современные технологии утилизируются гораздо раньше (и без учета того, сколько это может повлечь за собой переписывание системы наследия).
Kickstart