“Eski Kod” olumsuz teriminin kökeni nedir?


28

Herkes yazılım geliştirme konusundaki eski kodlardan bahsediyor ve son on yıldaki terimlerin kod üsluplarını kötü olarak boyadıklarını duydum.

Programcılar için bu kadar güçlü çağrışımları olan bu terim nereden kaynaklandı?

Bu terime öncülük eden yazılım geliştirme konusunda bir kitap olması gerektiğine eminim. "Eski kod" teriminin kökenini bulmayı çok isterim.


13
20 yıl önce eski kodun aşağıdaki tanımını duydum ve o zamandan beri hatırladım: eski kod şu anda üretimde olan kod. Bakış açıma birçok kez yardımcı oldu.
Michael Durrant

10
"Eski kod" olumsuz bir terimdir? Bunu kim söyledi? Her neyse, "eski" kelimesi programlamaya özgü değildir ve bu bağlamda özellikle önemli değildir.
Robert Harvey,

5
Michael Feathers ( amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/… ) büyük olasılıkla bu terimin mucidi değil, ama ilginç bir tanım yaptı: eski kodu "testsiz kod" olarak adlandırdı. Ve bu gerçekten olumsuz bir özelliktir.
Doktor Brown,

11
Bir sürü kod yazın. Şuna bak. Git biraz öğle yemeği ye. Geri gel. Eski kodlarla dolu bir ekran var! Artık bu kodu anlamanız ve gelecekteki tüm değişikliklerin bu kod bağlamında doğru şekilde çalıştığından emin olmanız gerekir. Eski kod, mevcut kodla aynıdır .
Eric Lippert

4
Buradaki "Eski" sadece orijinal geliştiricilerin artık çevrede olmadığı ve sadece kod ve dökümanların kaldığı anlamına gelir. Hiçbir şekilde bir yaş veya kaliteyi ifade etmez.
SK-mantık

Yanıtlar:


39

Eski kod, özellikle kod için geçerli olan eski bir sistemin ifadesine dayanır . Wikipedia'ya göre muhtemelen 1970'lere dayanıyor ve 1980'lerde yaygın olarak kullanılıyordu. 1990'ların teknoloji patlaması ile başladı.

Bu, Google'ın ngram görüntüleyicisiyle görülebilir: eski sistem, eski kod

eski sistem ve kod

Buna ek olarak, 1970'lerde 'eski sistem' teriminin belgelenmiş kullanımlarını bulabilirsiniz .

Google’ın sahip olduğu en eski “eski sistem” örneği, 1978’deki Ordu Sayısal Analiz ve Bilgisayarlar Konferansı Bildirileri kitabında :

... açıkça tanımlanmış bir soruna iyi dengelenmiş ve belgelenmiş bir çözümdür, eski sistem operasyonunun anlaşılması ve mevcut sistemi güvenle değiştirmesi gerekir.

Ayrıca Clout'ta teknoloji endüstrisi dışında kullanılan bir 'eski sistem' örneği de var : Womanpower ve Politics grin 1976:

... ayrıca, güçlü Bankacılık ve Döviz Komitesi - eski sistemi aracılığıyla değil, kendi oluşturduğu iktidarın pozisyonları olan üçüncü sıradaki Demokrat olarak oturmaktadır.

Kullanımını gösteren bu örneğin ötesinde, saf yazılım dünyasının ötesine geçtiğini, tam olarak ortaya çıkma teriminin zamanın kumlarına kaybedildiği yerlerin özellikleri belirlendi. Askeri ve politik referanslar göz önüne alındığında, onlardan kaynaklanmış olabilir (öncelikle askeri ve jargon göçü ( "Muhtemelen savaşın" savaş sırasında Cambridge’te yürüttüğü askeri elektronik projelerinin mezunları aracılığıyla MİT’e gelmiş gibi görünüyor). MIT'nin TMRC'yi barındıran saygıdeğer Binası 20 ... " ))


Bu harika bir cevap. Bir köken bulabilir miyim diye araştırmaya devam edeceğim, ancak kökenin kaybolmuş veya belgelenmemiş olması muhtemeldir.
stevebot

1
@ stevebot Kod yerine 'eski sistem' yolunu izlemenizi öneririm ... bu terimin eskiden kalma eski kodu varmış gibi görünüyor ve aynı temel anlama sahip.

6
'1979’dan kalma karbon-karbon bağı oluşumu hakkındaki kitabınızdaki', 'Proje yönetiminde yeni uygulamalar' adlı bir kitaptan ve 2002’den (ilk yayınlanmış 1998). Taramada bir şeyin kafası karışmış gibi görünüyor.
Pete Kirkham

1
Bu olumsuz terimin kaynağı gibi görünmüyor.
JeffO

@JeffO Hayır, MichaelT'nin nereden geldiği konusunda kesin olmadığını söylediğinden. Bu çok iyi bir cevap olmasına rağmen araştırma ve çaba gösteriyor.
stevebot

5

Eski kod tabanı genellikle bir POS sistemine değil, bir kod tabanında ya da yeni geliştirme için artık kullanılmayan bir sistemde var olan herhangi bir sistemi ifade eder. Örneğin, ekibim şu anda eski kod olarak kabul edilen birkaç .net 1.1 ve 2.0 uygulamasını desteklemektedir. Bir değişikliğin gerekli olduğu bir zaman gelirse, en son çerçeveleri ve standartları kullanmak için yeniden yazılır veya güncellenir. O zamana kadar onları çalışmaya devam etmesi gereken eski uygulamalar olarak yönetiriz, ancak iyileştirmeler veya kod düzeltmeleri uygulanmaz.

Ayrıca VB6 ve Classic ASP'de yazılmış hiç desteklemediğimiz birkaç eski sistem de var. Bu sistemleri destekleme veya değiştirme kapasitemiz veya yönergemiz yok, ancak çalışmaya devam ettiği ve iyileştirme ihtiyacı olmadığı sürece muhtemelen güncellenmeyeceklerdir. Bu sistemlerin hiçbirinde özellikle yanlış olan bir şey yoktur. İşlerini olması gerektiği gibi yaparlar ve 90'ların ortalarından sonlarına kadar bir uygulama gibi görünmekten başka önemli sorunları olmaz.

Bu nedenle miras, POS'un sadece daha önceki bir teknolojide veya dilde mevcut standartlara uymayan bir sistemde yaratıldığı anlamına gelmez. Bazı eski sistemler en çok POS olarak nitelendirilir, çünkü yönetilen kodlara ve eski web kodlayıcılarının 15+ yıllık deneyimlerine izin veren günümüzde mevcut geliştirme yöntemlerinden yoksundurlar.


Eski sistemlerin mutlaka POS sistemleri olmadığına tamamen katılıyorum. Ben deyimin kökeninin ne olduğunu merak ediyorum.
stevebot

3
@stevebot Terimin kökenini bulmak istiyorsanız, bir çağrıştırma belirtmeden bunu sormalısınız.
14'te CVn

2
@stevebot - Miras, geçtiğinizde geride bıraktığınız herhangi bir şeydir. Tanımlayıcının, sayısız diğer alana kabul edilme şeklinden sadece benimsendiğini farz ediyorum.
SoylentGray

1
@ MichaelKjörling bana olumsuz anlamda kullanılan eski kodu hiç duymadığınızı mı söylüyorsunuz? Bu benim çağrışımım değil, buluşmalarda, kitaplarda ve işlerde zaman ve tekrar tekrar duyduğum diğerlerininki. Dediğim gibi , mirasın olumsuz bir terim olmaması gerektiğine tamamen katılıyorum .
stevebot

@stevebot - eski kod yalnızca 'negatif' görünüyor, çünkü yalnızca eski bir sistemle (veya bunların zorluklarıyla) değiştirmek veya arayüz oluşturmak bağlamında kullanılıyor. On yıl önce inşa edilmiş, ancak hala yararlı / alakalı ve çok az böcek içeren bir program hala “eski yazılım” dır, ancak herkes sadece 'yazılım' olarak adlandırır. Aynısı kod tabanları için de geçerli.
Robotnik

3

"Eski kod", insanları pazarlamak için kullanılan ve kodları eski olanları (ancak muhtemelen daha iyi çalışan) en son (ve muhtemelen daha fazla hata içeren) yazılım dillerini ve tekniklerini güncellemek için baskı yapmak için kullanılan bir terimdir. İyi çalışan ancak şu anda "siyasi olarak doğru" olanlara uymayan eski donanım ve işletim sistemlerine atıfta bulunan "eski sistem" ile yakından bağlantılıdır (örneğin, OpenVMS, IBM sistemi).


6
Bu doğru olsa da , cevabı, bu cevabında belirtilen iddiaları destekleyen özel referanslara atıfta bulunmak üzere düzenlemek olsaydı daha iyi olurdu . Alıntılayabileceğin böyle referanslar var mı?
bir CVN

2

Eski kod terimi , comp.sys.amiga'da Glenn Everhart tarafından kullanılan en az 1989 yılına kadar uzanır :

(... bu arada, evet, bazen C de program yapıyorum ... ama onun dilini değiştirmeden eski kodları dönüştürmeyi daha kolay buluyorum ...)

Daha önce Google Kitaplar’da doğrulanabilir bir şey bulamadım.


Eric Lippert'in belirttiği gibi, bir parça kod yazdıktan hemen sonra eski kodunuz var. MichaelT ve sizin bulan bulgunuz tarafından gösterilen eğriler, BT'nin ana akım yükselişinin dünyanın her yerinde birçok insanı içeren muazzam miktarda kod üretmeye başladığı zaman çerçevesini görselleştiriyor. Kısa bir süre sonra “eski” sistemleri yenileriyle değiştirme ihtiyacı da gündeme geldi - ve bu yüzden yaygın bir terim haline geldi.
JensG

1
İyi bir sebep olsaydı, eski kod sürekli değiştiriliyordu. 1970’de (PL / 1’de yazılmış) bir ana bilgisayar faturalandırma sistemi üzerinde çalıştım. Ana bilgisayar derleme dilinde yazılmış bir sistemin yerini aldı (ki bu büyük ölçüde mevcut bir manuel sistemin otomasyonu idi). PL / 1 sistemi, yaklaşık 35 yıllık kullanımdan sonra nihayet değiştirildi (bundan önce bunun yerine birkaç başarısız girişimde bulunuldu). Muhtemelen şimdi modern teknolojiler çok daha erken hurdaya çıkarıldı (ve bunun miras sisteminin ne kadar yeniden yazılmasının muhtemel olduğu göz ardı edilerek).
Kickstart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.