Ile oryginalnego kodu pozostało w nowoczesnych produktach programowych? [Zamknięte]

32

Wielu z was pracuje dla dużych firm, które dostarczają znane oprogramowanie. Zastanawiałem się, ile oryginalnego kodu (w zasadzie kodu, który był wersją „v1.0”) pozostało w nowoczesnych, masywnych aplikacjach, takich jak np. Firefox, Photoshop, Windows, Linux itp.? Naprawdę wolałbym doświadczenia z pierwszej ręki i prawdziwe historie wojenne.

Dzięki za zaspokojenie mojej ciekawości.

EDYTOWAĆ

Okazuje się, że istnieje pewien stopień nieporozumienia. To, o co mi chodzi, jest w zasadzie następujące: kiedy obwiniasz / adnotujesz kod źródłowy, czy są jakieś części, a nawet całe pliki, nietknięte od początkowej wersji 1.0.

Anton Gogolev
źródło
37
Rzeka płynie w dół góry. Woda paruje i wnika w ziemię. Nowa woda napływa z innych strumieni. Kiedy rzeka dociera do morza, czy jest to ta sama rzeka? Jak możesz powiedzieć? Co jeśli żadna pojedyncza cząsteczka nie przeżyje całej podróży od szczytu góry do morza? Jeśli żadna cząsteczka nie jest taka sama, jak możemy powiedzieć, że to ta sama rzeka? I w jaki sposób to pytanie jest bardziej znaczące niż głupia opowieść o rzece?
S.Lott,
4
Pytanie zaczyna się OK, ale to zdanie „Naprawdę wolę doświadczenia z pierwszej ręki i historie z prawdziwych wojen”. zaprasza tylko na listę odpowiedzi z informacją, że „wciąż mamy X% oryginalnego kodu”, gdzie X zmienia się od 0 do 100.
ChrisF
10
@Anton Gogolev: Chodzi o to. Po co pytać? Moje doświadczenie w świecie rzeczywistym obejmuje dwa produkty z 80% tym samym co 1,0 i 0% tym samym co 1,0. To moje doświadczenie. Co wiesz teraz, czego wcześniej nie wiedziałeś? Jaki masz problem, który został rozwiązany? Jak ci to pomaga?
S.Lott,
4
@ S.Lott Jestem tutaj zagubiony ... Ciekawość? Czy to nie fascynujące, że ta część systemu Windows 7 Ultimate, z którą niektórzy z nas korzystają, nadal zawiera kod pochodzący z systemu Windows 3.1?
Anton Gogolev
6
@Anton Gogolev: „Ciekawość?” Przepraszam, to nie ma dla mnie sensu. Jeśli odpowiedź wyniosła 17%, co wtedy? Co wynika z tej obserwacji?
S.Lott,

Odpowiedzi:

36

Więcej niż się spodziewałeś i znacznie starszy niż się spodziewałeś. Nawet przy „całkowitych przepisaniach” i dużych refaktorach istnieje wiele modułów, które pozostają nietknięte.

Péter sugeruje, że na przykład nie znajdziesz starego kodu Netscape w Firefoksie. Co jest nie tak, jeśli przeszukujesz kod źródłowy, znajdziesz sporo plików z zastrzeżeniem, takich jak:

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

Na przykład w nagłówkach jądra Linuxa można znaleźć takie rzeczy jak:

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.
vartec
źródło
1
Poważnie, Firefox jest pełen dekadowego kodu.
kizzx2
1
Hej, to wciąż działa (prawdopodobnie)
Callum Rogers
1
@Callum Rogers: Działa, ale nie dobrze i jest powolny ... Szkoda, że ​​Firefox tak upadł.
Anto
2
MPL wymaga dodania opcji „Początkowy programista”, ale nie oznacza to, że plik był ostatnio dotykany. Firefox ma mnóstwo starego kodu, ale nie jeśli jest wolny - kod, który jest wystarczająco wolny, aby ktokolwiek zauważył, zostanie przepisany.
Paul Biggar
3
Kod @ kizzx2 nie rdzewieje.
27

Nie wiem ile, ale na pewno jest stary kod, ale powoli się go usuwa. Np. W Windows 2008 lub Vista przejdź do c: \ windows \ fonts za pomocą Eksploratora, kliknij prawym przyciskiem myszy lewy panel i wybierz „zainstaluj nową czcionkę”. Wyświetlone okno dialogowe pochodzi z systemu Windows 3.1 dni (sprawdź zrzut ekranu). Jeśli widzisz to samo w systemie Windows 7, jest to teraz znacznie lepszy panel sterowania, taki jak interfejs użytkownika.

Okno dialogowe Zainstaluj nowe czcionki

softveda
źródło
+100 Właściwie to znalazłem kilka lat temu
Nicolai Reuschling
Tak, to jest ... msoOldStyleDialog (?) W porządku, nadal obsługiwane dla starszych programów, które są gotowe i dlatego pozostały na 1.0.x. Jak prosty selektor plików. Chociaż w tym przypadku jest to tylko kwestia dialogu, który przegapili podczas przeglądu GUI.
Henrik Erlandsson
6

Nie mogę powiedzieć, ile lat ma kod w pracy. Mogę tylko cofnąć się do momentu, w którym został on umieszczony w Subversion, a wiele sięga tak daleko.

Mam jednak znajomego, który pracował nad kodem Microsoft Office. Kilka lat temu powiedział mi, że usunął z niego niektóre połączenia SaveA5World. To wywołanie miało sens na starych komputerach Macintosh z procesorami M680? 0 i nie przyniosło żadnego celu, odkąd Apple przeszedł na komputery Mac PowerPC na początku lat 90.

Z moich obserwacji wynika, że ​​każdy potężny system oprogramowania, na którym opiera się firma, został zbudowany z wykorzystaniem technologii, której tak naprawdę nikt już nie chce używać.

David Thornley
źródło
2

„Jeśli od początku wykonali swoją pracę wyjątkowo dobrze, duża część, w przeciwnym razie niewielka część”.

Ścisłe języki pokazują tę cechę. Bardzo niewiele musiało się zmienić w językach Nicklausa Wirtha, ponieważ były one planowane z precyzją. (To się ostatnio zmieniło dla Delphi i zmieni się bardziej w nadchodzącej uniwersalnej wersji wdrażania).

Oczywiście ma to również drugą stronę. Podejmując decyzję, że oryginalny kod jest wystarczająco dobry, na przykład w przypadku Microsoft Windows lub uroczych aplikacji, takich jak ACDSee, edytory tekstu lub dobrze znane aplikacje wiersza poleceń „ducha Linuksa”.

Mimo że aplikacje te mogą wydawać się niezręczne dla tych, którzy być może ich nie kochają, wykazują dobrze zaplanowaną cechę, a także dobrze zdefiniowany zestaw funkcji; nawet jeśli nie mają dzwonków i gwizdków, może to być preferowane; robią to, co jest w puszce, kompatybilność wsteczna jest świetna i prawdopodobnie nadal będą dobrze funkcjonować w przyszłości.

Photoshop miałby 90% tego samego kodu od wersji 5.0, jeśli przejdziesz przez zestaw funkcji. ; P Czy to? Nie dlaczego? Sprzedaż aktualizacji. Naprawdę nie możesz dziś więcej z tym zrobić.

Zestaw funkcji menedżera plików, aż do momentu, w którym chce robić FTP, internet i chmurę, jest w dużej mierze taki sam dla każdej platformy przez dziesięciolecia. Jedynym powodem, dla którego taka aplikacja wciąż nie jest w wersji 1.0, jest złe planowanie, kaprys, potrzeba aktualizacji - a przynajmniej w niewielkim stopniu zmieniający się świat wokół aplikacji.

Odpowiedź jest taka, że ​​niektóre klejnoty pozostają w wersji 1.0 lub 1.0.x, ponieważ programista zdecydował się na zestaw funkcji, ukończył program bezbłędny i albo nie czerpie korzyści z niekończącego się dodawania rzeczy i naprawiania błędów w dodawanych rzeczach, albo przeprowadził się aby rozwinąć więcej klejnotów.

Cała reszta raczej nie pozostanie w pobliżu kodu w wersji 1.0. A dlaczego nie powinieneś przepisać aplikacji, jeśli masz świetny pomysł? Powinieneś, fajnie jest kodować! :) Tyle że nie tak było w wielu nowoczesnych produktach. Zmiana ze względu na zmianę (sprzedaż), która nie jest motywowana zestawem funkcji, oraz w mniejszym stopniu aktualizacją w celu dostosowania do zmieniających się platform, jest kolejnością dnia.

A w tej zupie oddziałujących na siebie części ciągle aktualizowanego oprogramowania niewiele baz kodów ucieka od wersji. Kilku wciąż marzy o fundamentach i modularyzacji (i nie wypuszczaniu ich przedwcześnie), ale zdecydowana większość utknęła w cyklu wydania-poprawki-aktualizacji.

Henrik Erlandsson
źródło
-2

Nawet pozornie „najnowocześniejsze” systemy stosowane w grach, takie jak iD Tech i Unreal, nadal zawierałyby sporo kodu 1.0.

Alan B.
źródło