Jakie jest pochodzenie negatywnego terminu „starszego kodu”

28

Wszyscy mówią o starszym kodzie w rozwoju oprogramowania. Słyszałem, że w ciągu ostatnich dziesięciu lat termin ten malował każdą bazę kodu jako złą.

Skąd wziął się ten termin, który ma tak silne skojarzenia z programistami?

Jestem pewien, że musi być jakaś książka o rozwoju oprogramowania, która zapoczątkowała ten termin. Chciałbym zlokalizować pochodzenie terminu „starszy kod”.

stevebot
źródło
13
Słyszałem następującą definicję starszego kodu 20 lat temu i pamiętam ją odtąd: starszy kod jest kodem, który masz obecnie w produkcji. Wiele razy pomogło mi to z mojego punktu widzenia.
Michael Durrant
10
„Kod starszego typu” jest terminem wykluczającym? Kto to mówi? W każdym razie słowo „dziedzictwo” nie jest specyficzne dla programowania, ani nie ma w tym kontekście szczególnego znaczenia.
Robert Harvey
5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/... ) najprawdopodobniej nie jest wynalazcą tego terminu, ale stworzył interesującą definicję: nazwał stary kod „kodem bez testów”. I to jest rzeczywiście atrybut negatywny.
Doc Brown,
11
Napisz sporo kodu. Sprawdź to. Idź na lunch. Wróć z powrotem. Jest cały ekran pełen starszego kodu! Musisz teraz zrozumieć ten kod i upewnić się, że wszystkie przyszłe zmiany działają poprawnie w kontekście tego kodu. Stary kod jest taki sam, jak istniejący kod .
Eric Lippert,
4
„Dziedzictwo” tutaj oznacza po prostu, że oryginalnych programistów już nie ma, a pozostały tylko artefakty kodu i dokumentacji. Nie odnosi się w żaden sposób do wieku ani jakości.
SK-logic

Odpowiedzi:

39

Starszy kod jest oparty na frazie starszego systemu, który odnosi się konkretnie do kodu. Według Wikipedii prawdopodobnie pochodzi z lat 70. XX wieku i był powszechnie używany w latach 80. XX wieku. Wystartował wraz z eksplozją technologiczną lat 90.

Można to zobaczyć w przeglądarce ngram Google: starszy system, starszy kod

starszy system i kod

Zagłębiając się w to dalej, można znaleźć udokumentowane zastosowania terminu „starszy system” w latach siedemdziesiątych .

Najwcześniejszym przykładem „starszego systemu”, jaki ma Google, jest książka o Proceedings of the Army Numerical Analysis and Computers Conference z 1978 roku:

... dobrze rozwiązanym i udokumentowanym rozwiązaniem jasno zdefiniowanego problemu jest to, że starsze działanie systemu musi zostać zrozumiane i pewnie zmienić istniejący system.

Istnieje także przykład użycia „starszego systemu” poza branżą technologiczną w Clout: Womanpower and Politics grin 1976:

... ponadto zajmuje trzecie miejsce w rankingu Demokratów w potężnym Komitecie Bankowym i Walutowym - pozycjach władzy, którą sama zbudowała, a nie za pośrednictwem starszego systemu.

Poza tym przykładem, który pokazuje, że jego zastosowanie wykroczyło poza świat czystego oprogramowania, specyfika tego, skąd dokładnie pochodzi ten termin, prawdopodobnie została utracona przez piaski czasu. Biorąc pod uwagę odniesienia wojskowe i polityczne, być może wywodzi się z nich (przede wszystkim migracja wojska i żargonu ( „Wydaje się prawdopodobne, że„ kluge ”przybył do MIT poprzez absolwentów wielu wojskowych projektów elektronicznych prowadzonych w Cambridge podczas wojny Czcigodny Budynek MIT 20, w którym mieścił się TMRC ... ” ))


źródło
To świetna odpowiedź. Zamierzam nadal badać, czy mogę znaleźć pochodzenie, ale prawdopodobnie masz rację, że pochodzenie zostało utracone lub być może nieudokumentowane.
stevebot
1
@stevebot Sugeruję podążanie ścieżką „starszego systemu” zamiast kodu ... ten termin wydaje się wyprzedzać starszy kod i ma takie samo podstawowe znaczenie.
6
Tekst w „książce o tworzeniu wiązań węgiel-węgiel z 1979 r.” Pochodzi z książki „Nowe praktyki w zarządzaniu projektami” i pochodzi z 2002 r. (Po raz pierwszy opublikowany w 1998 r.). Wygląda na to, że coś się pomyliło podczas skanowania.
Pete Kirkham,
1
Nie wydaje się, że to jest źródło negatywnego terminu.
JeffO,
@JeffO Nie, jak MichaelT wspomina, że ​​nie jest rozstrzygający, skąd pochodzi. To cholernie dobra odpowiedź, która pokazuje badania i wysiłek.
stevebot
5

Starsza podstawa kodu zwykle nie odnosi się do systemu POS, ale raczej do dowolnego systemu, który istnieje w bazie kodu lub systemie, który nie jest już używany do nowego programowania. Na przykład mój zespół obsługuje obecnie kilka aplikacji .net 1.1 i 2.0, które są uważane za starszy kod. Jeśli przyjdzie czas, kiedy wymagana będzie modyfikacja, zostaną one przepisane lub zaktualizowane w celu wykorzystania najnowszych ram i standardów. Do tego czasu zarządzamy nimi jako starszymi aplikacjami, które muszą nadal działać, ale nie są zaimplementowane żadne ulepszenia ani poprawki kodu.

Istnieje również kilka starszych systemów, których w ogóle nie obsługujemy, które zostały napisane w VB6 i Classic ASP. Nie mamy zdolności ani dyrektyw do obsługi lub modyfikacji tych systemów, ale dopóki będą działać i nie będą potrzebować ulepszeń, prawdopodobnie nie zostaną zaktualizowane. Nie ma nic szczególnie złego w żadnym z tych systemów. Wykonują swoją pracę tak, jak powinni, a poza tym, że od połowy lat 90. wyglądają jak aplikacje, nie mają większych problemów.

Więc dziedzictwo nie oznacza POS tylko systemu, który został stworzony we wcześniejszej technologii lub języku, który nie spełnia obecnych standardów. Niektóre starsze systemy kwalifikują się jako POS, głównie dlatego, że brakuje im metodologii programistycznych, które istnieją obecnie, które pozwalają na zarządzanie kodem i ponad 15-letnie doświadczenie doświadczonych programistów internetowych.

SoylentGray
źródło
Całkowicie się zgadzam, że starsze systemy niekoniecznie są systemami POS. Zastanawiam się, skąd się wzięło to zdanie.
stevebot
3
@stevebot Jeśli chcesz znaleźć pochodzenie tego terminu, powinieneś o to poprosić, nie zakładając konotacji.
CVn
2
@stevebot - Dziedzictwo to wszystko, co pozostawiasz po sobie. Zakładam, że deskryptor został właśnie przyjęty z tego, że został przyjęty na niezliczone inne dziedziny.
SoylentGray,
1
@ MichaelKjörling, czy mówisz mi, że nigdy nie słyszałeś, że starszy kod jest używany w negatywnym znaczeniu? Nie taka jest moja konotacja, ale wielu innych słyszałem wielokrotnie w spotkaniach, książkach i pracy. Podobnie jak powiedziałem, całkowicie zgadzam się, że dziedzictwo nie powinno być terminem negatywnym.
stevebot
@stevebot - starszy kod wydaje się tylko „negatywny”, ponieważ jest używany tylko w kontekście zastępowania lub łączenia się ze starszym systemem (i trudności z tym związane). Program, który został zbudowany ponad dekadę temu, ale nadal jest użyteczny / istotny i ma kilka błędów, jest nadal „starszym oprogramowaniem”, ale wszyscy nazywają go „oprogramowaniem”. To samo dotyczy baz kodowych.
Robotnik
3

„Starszy kod” jest terminem używanym przez marketingowców do wywierania nacisku na tych, których kod jest stary (ale przypuszczalnie działa dobrze), na aktualizację do najnowszych (i prawdopodobnie bardziej błędnych) języków i technik oprogramowania. Jest ściśle powiązany z „starszym systemem”, który odnosi się do starego sprzętu i systemów operacyjnych, które działają dobrze, ale nie są zgodne z tym, co jest obecnie „politycznie poprawne” (np. OpenVMS, system IBM).

JohnM
źródło
6
Chociaż może to być prawda, byłoby lepiej, gdybyś edytował odpowiedź, aby przytoczyć konkretne odniesienia potwierdzające twierdzenia zawarte w tej odpowiedzi. Czy są jakieś odniesienia, które możesz zacytować?
CVn
2

Termin starszy kod pochodzi z co najmniej 1989 roku, jak używał Glenn Everhart w comp.sys.amiga :

(... swoją drogą, tak, ja zrobić czasami program w C ... ale też łatwiej przekształcić kod starszego typu w / o zmianę jej język ...)

W Google Books nie znalazłem nic weryfikowalnego wcześniej.

Hugo
źródło
Jak zauważył Eric Lippert, już w chwilę po napisaniu fragmentu kodu otrzymałeś starszy kod. Krzywe pokazane przez MichaelT i twoje odkrycie tylko wizualizują ramy czasowe, w których główny nurt IT zaczął produkować ogromne ilości kodu, angażując wiele osób na całym świecie. Nieco później pojawiła się także potrzeba zastąpienia „starych” nowszymi systemami - i dlatego i kiedy stało się to powszechnym pojęciem.
JensG,
1
Stary kod był ciągle zastępowany, jeśli był ku temu dobry powód. W 1970 roku pracowałem nad systemem rozliczeniowym na komputerze mainframe napisanym (w PL / 1). Zastąpił on system napisany w języku asemblera mainframe (co samo w sobie było w dużej mierze automatyzacją istniejącego systemu ręcznego). System PL / 1 został ostatecznie wymieniony po około 35 latach użytkowania (kilka nieudanych prób jego wymiany wcześniej). Być może obecnie nowoczesne technologie są złomowane znacznie wcześniej (i bez względu na to, ile przepisu systemu dziedzictwa może to pociągać za sobą).
Kickstart