Modern yazılım ürünlerinde ne kadar orijinal kod kaldı? [kapalı]


32

Dışarıda birçoğunuz tanınmış yazılımları satan büyük şirketler için çalışıyorsunuz. Firefox, Photoshop, Windows, Linux gibi modern büyük uygulamalarda ne kadar orjinal kodun (temelde "v1.0" sürümü olan kod) kaldığını merak ediyordum. Gerçekten ilk elden deneyimi ve gerçek dünya savaş hikayelerini tercih ederdim.

Merakımı tatmin ettiğin için teşekkürler.

DÜZENLE

Bir yanlış anlaşılma derecesi olduğu ortaya çıktı. Peşinde olduğum temelde aşağıdaki gibidir: kaynak kodunu suçladığınızda / not eklediğinizde , ilk 1.0 sürümünden bu yana dokunulmamış herhangi bir parça veya tüm dosyalar var mı?


37
Bir dağdan aşağı bir nehir akar. Su buharlaşır ve toprağa karışır. Diğer sulardan yeni su geliyor. Nehir denize ulaştığında, aynı nehir mi? Nasıl söyleyebilirsin? Ya hiç bir molekül hiçbir zaman dağın tepesinden denize kadar olan yolculuğu yapmazsa? Eğer hiçbir molekül aynı değilse, aynı nehir olduğunu nasıl söyleyebiliriz? Ve bu soru nehrin hakkındaki aptal hikayesinden daha anlamlı nasıl?
S.Lott

4
Soru başlıyor, ancak bu ifade "İlk elden deneyimi ve gerçek dünya savaş hikayelerini gerçekten tercih ederim." Sadece "elimizde hala% X orijinal kod" X 0 ile 100 arasında değişmektedir söyleyerek yanıtları listelenmiştir davet ediyor
ChrisF

10
@Anton Gogolev: Önemli olan bu. Neden sordun? Gerçek dünyadaki deneyimim% 80,% 1.0 ve% 0 aynı olan iki ürün içeriyor. Bu benim deneyimim. Şimdi daha önce bilmediğin şey hakkında ne biliyorsun? Hangi problemi çözdün? Bu size nasıl yardımcı olur?
S.Lott

4
@ S.Lott Burada bir kayıp yaşıyorum ... Merak mı? Bazılarımızın yürüttüğü bu Windows 7 Ultimate şeyinin hala Windows 3.1'e dayanan bir kodu olduğunu bilmek büyüleyici değil mi?
Anton Gogolev

6
@ Anton Gogolev: "Merak?" Üzgünüm, bu bana biraz mantıklı gelmiyor. Cevap% 17 ise ne olmuş? Bu gözlemden ne izler?
S.Lott

Yanıtlar:


36

Beklediğinizden ve beklediğinizden daha yaşlı. "Toplam yeniden yazma" ve büyük refraktörlerde bile, dokunulmadan kalan birçok modül var.

Péter, örneğin, eski Netscape kodunu Firefox'ta bulamayacağınızı önermektedir. Hangisi yanlış, kaynak kodunu ararsanız, aşağıdaki gibi feragatname ile oldukça az sayıda dosya bulacaksınız:

* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000 

Örneğin, Linux çekirdek başlıklarında aşağıdakileri bulabilirsiniz:

include/linux/if_ppp.h: * Copyright (c) 1989 Carnegie Mellon University.
include/linux/quota.h: * Copyright (c) 1982, 1986 Regents of the University of California. 
include/linux/coda.h:          Copyright (c) 1987-1999 Carnegie Mellon University
include/linux/mc146818rtc.h: * derived from Data Sheet, Copyright Motorola 1984 (!).
include/net/slhc_vj.h: * Copyright (c) 1989 Regents of the University of California.

1
Firefox, cidden on yıllık eski kodlarla doludur.
kizzx2

1
Hey, hala çalışıyor (muhtemelen)
Callum Rogers

1
@Callum Rogers: İşe yarıyor, ama iyi değil ve yavaş ... Firefox'un böyle düşmesi utanç verici.
Anto

2
MPL, "İlk geliştirici" şeyinin eklenmesini gerektirir, ancak dosyaya en son dokunulduğunda olduğu anlamına gelmez. Firefox'ta bol miktarda eski kod vardır, ancak yavaş değilse, herhangi birinin farkına varacak kadar yavaş olan kod yeniden yazılır.
Paul Biggar

3
@ kizzx2 kodu pas tutmaz ..

27

Ne kadar ama eski kod kesinlikle orada bilmiyorum ama yavaş yavaş kaldırılır. Örneğin, Windows 2008 veya Vista'da explorer kullanarak c: \ windows \ fontlara gidin, sol bölmeye sağ tıklayın ve "new font yükle" yi seçin. Gösterilen iletişim kutusu pencerelerden 3.1 gündür (ekran görüntüsünü kontrol edin). Aynı şeyi Windows 7'de görüyorsanız, şimdi UI gibi daha iyi bir kontrol paneli.

Yeni Yazı Tiplerini Yükle iletişim kutusu


+100 Bunu birkaç yıl önce kendim buldum
Nicolai Reuschling

Evet, bu ... msoOldStyleDialog (?) Tamam, hala bitmiş ve bu nedenle 1.0.x'te kalmış eski programlarda destekleniyor. Basit bir dosya seçici gibi. Bu durumda, GUI revizyonu / onarımları sırasında kaçırdıkları bir diyalog meselesi olmasına rağmen.
Henrik Erlandsson,

6

İşyerindeki kodun kaç yaşında olduğunu söyleyemem. Sadece Subversion'a yerleştirildiği zamana geri dönebiliyorum ve o zamana kadar uzanan çok şey var.

Ancak, Microsoft Office kodunda çalışan bir arkadaşım var. Birkaç yıl önce, bazı SaveA5World çağrılarını kaldırdığını söyledi. Bu çağrının M680? 0 işlemcili eski Macintosh'larda bir amacı vardı ve Apple 90'lı yılların başlarında PowerPC Mac'lere gittiğinden beri hiçbir amaca hizmet etmedi.

Gözlemlerime göre, bir şirketin güvendiği güçlü bir yazılım sistemi, artık hiç kimse kullanmak istemediği bir teknolojiye sahipti.


2

“Eğer işlerini baştan beri çok iyi bir şekilde yaptılarsa, büyük kısmı, aksi halde küçük kısmı.”

Sıkı diller bu özelliği gösterir. Nicklaus Wirth'in dillerinde çok az değişiklik yapılması gerekiyordu, çünkü hassasiyetle planlandılar. (Bu aslında Delphi için son zamanlarda değişti ve gelecek evrensel dağıtım sürümüyle daha da değişecek.)

Elbette bunun bir de flip-side var. Microsoft Windows veya ACDSee, metin editörleri veya tanınmış "Linux ruhu" komut satırı uygulamaları gibi hoş uygulamalar gibi orijinal kodun yeterince iyi olduğuna karar vermek.

Her ne kadar bu uygulamalar belki de en başta onları sevmeyenlere sakıncalı gelse de, iyi tanımlanmış bir özellik olarak iyi planlanmış bir özellik sergilerler; zilleri ve ıslıkları olmasa bile, bu tercih edilebilir; Kalay üzerinde ne yapıyorlar, geriye dönük uyumluluk harika ve gelecekte de iyi çalışmaya devam edecek gibi görünüyor.

Photoshop, özellikler grubuna göre, 5.0'tan beri aynı kodu kullanıyor. ; P Yapar mı? Hayır neden? Satış güncellemeleri. Bugün onunla daha fazlasını yapamazsın.

Bir dosya yöneticisinin özellikleri, FTP, web ve bulut yapmak istediği noktaya kadar, decennia için herhangi bir platform için büyük ölçüde aynıdır. Böyle bir uygulamanın hala 1.0'da olmamalarının tek nedeni kötü planlama, heves, güncelleme dürtüsü ve en azından dünyayı uygulama etrafında değişen bir ölçüde azarlamaktan kaynaklanıyor.

Bunun cevabı, geliştiricinin özellik setine karar vermesinden, hatasız bir programı tamamlamasından ve sınırsız bir şekilde bir şeyler eklemekten ve eklenen şeylerdeki hataları düzelttiğinden ya da hareket ettiğinden, bazı mücevherlerin 1.0 veya 1.0.x'te kalmasıdır. daha fazla mücevher geliştirmek için.

Diğer herkes 1.0 kodun yakınında bir yerde kalmak mümkün değildir. Ve harika bir fikriniz varsa neden uygulamayı yeniden yazmamalısınız? Yapmalısın, kodlaması eğlenceli! :) Ancak, birçok modern yazılım ürününde gerçekleşen şey bu değil. Değişim uğruna değişim (satışlar) ve özellik kümesi tarafından motive edilmeyen ve değişen platformlara uymak için daha küçük bir ölçüde güncellenen, günün sırasıdır.

Ve sürekli güncellenen yazılımın etkileşime giren parçalarından oluşan bu çorbada, birkaç kod tabanı revizyonlardan kaçıyor. Birkaçı hala vakıfların hayalini sürdürmekte ve modülerleşmekte (ve vaktinden önce serbest kalmamakta), ancak büyük çoğunluk yayın düzeltme-güncelleme-güncelleme döngüsünde sıkıştı.


-2

Görünüşe göre iD Tech ve Unreal gibi oyunlar için kullanılan 'modern' sistemler bile hala 1.0 kodun biraz üzerinde olacaktı.

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.