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.
source-code
history
Anton Gogolev
źródło
źródło
Odpowiedzi:
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:
Na przykład w nagłówkach jądra Linuxa można znaleźć takie rzeczy jak:
źródło
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.
źródło
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ć.
źródło
„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.
źródło
Nawet pozornie „najnowocześniejsze” systemy stosowane w grach, takie jak iD Tech i Unreal, nadal zawierałyby sporo kodu 1.0.
źródło