Viele von Ihnen arbeiten für große Unternehmen, die bekannte Software liefern. Ich habe mich gefragt, wie viel ursprünglicher Code (im Grunde genommen Code der Version "v1.0") in modernen Massenanwendungen wie z. B. Firefox, Photoshop, Windows, Linux usw. noch vorhanden ist. Ich würde Erfahrung aus erster Hand und echte Kriegsgeschichten wirklich vorziehen.
Vielen Dank für die Befriedigung meiner Neugier.
BEARBEITEN
Es stellt sich heraus, dass es ein gewisses Maß an Missverständnissen gibt. Was ich will, ist im Grunde wie folgt: Wenn Sie den Quellcode beschuldigen / kommentieren , gibt es Teile oder sogar ganze Dateien, die seit der ersten Version 1.0 nicht mehr betroffen sind.
source-code
history
Anton Gogolev
quelle
quelle
Antworten:
Mehr als Sie erwarten und viel älter als Sie erwarten. Selbst mit "Total Rewrites" und großen Refactors gibt es viele Module, die unberührt bleiben.
Péter schlägt vor, dass Sie beispielsweise in Firefox keinen alten Netscape-Code finden. Was falsch ist, wenn Sie den Quellcode durchsuchen, finden Sie einige Dateien mit Haftungsausschluss wie:
In Linux-Kernel-Headern finden Sie beispielsweise Folgendes:
quelle
Ich weiß nicht, wie viel, aber alter Code ist definitiv da, wird aber langsam entfernt. ZB in Windows 2008 oder Vista gehen Sie mit dem Explorer zu c: \ windows \ fonts, klicken Sie mit der rechten Maustaste auf den linken Bereich und wählen Sie "Neue Schriftart installieren". Das angezeigte Dialogfeld stammt aus Windows 3.1 (siehe Screenshot). Wenn Sie dasselbe in Windows 7 sehen, ist es jetzt eine viel bessere Systemsteuerung wie die Benutzeroberfläche.
quelle
Ich kann nicht sagen, wie alt der Code bei der Arbeit ist. Ich kann nur auf die Zeit zurückgreifen, als sie in Subversion eingestellt wurde, und es gibt eine Menge, die bis dahin zurückreichen.
Ich habe jedoch einen Freund, der an Microsoft Office-Code gearbeitet hat. Vor ein paar Jahren erzählte er mir, er habe einige SaveA5World-Anrufe entfernt. Dieser Aufruf hatte einen Zweck für die alten Macintosh-Computer mit M680-0-Prozessoren und hat keinen Zweck erfüllt, seit Apple in den frühen 90er-Jahren zu den PowerPC-Macs wechselte.
Nach meinen Beobachtungen wurde jedes leistungsfähige Softwaresystem, auf das sich ein Unternehmen verlässt, mit Technologie gebaut, die niemand wirklich mehr verwenden möchte.
quelle
"Wenn sie ihre Arbeit von Anfang an überaus gut gemacht haben, ein großer Teil, ansonsten ein kleiner Teil."
Strenge Sprachen weisen dieses Merkmal auf. An den Sprachen von Nicklaus Wirth musste nur sehr wenig geändert werden, da sie präzise geplant wurden. (Dies hat sich in letzter Zeit für Delphi tatsächlich geändert und wird sich mit der kommenden Universal Deploy-Version noch mehr ändern.)
Das hat natürlich auch eine Kehrseite. Zu entscheiden, ob der ursprüngliche Code gut genug ist, wie im Fall von Microsoft Windows, oder umwerfenden Anwendungen wie ACDSee, Texteditoren oder den bekannten "Spirit of Linux" -Befehlszeilenanwendungen.
Auch wenn diese Anwendungen für diejenigen, die sie vielleicht gar nicht geliebt haben, klobig erscheinen, weisen sie ein gut geplantes Merkmal sowie ein genau definiertes Feature-Set auf. Auch wenn sie keine Schnickschnack haben, ist das vielleicht vorzuziehen. Sie tun, was auf dem Zinn steht, die Abwärtskompatibilität ist großartig und wird wahrscheinlich auch in Zukunft gut funktionieren.
Photoshop hätte 90% den gleichen Code seit 5.0, wenn Sie das Featureset verwenden würden. ; P Tut es? Nein, warum? Aktualisierungen verkaufen. Mehr kann man heute nicht damit machen.
Der Funktionsumfang eines Dateimanagers ist bis zu dem Punkt, an dem FTP, Web und Cloud ausgeführt werden sollen, für jede Plattform für Jahrzehnte weitgehend identisch. Der einzige Grund, warum eine solche Anwendung immer noch nicht auf 1.0 steht, ist eine schlechte Planung, eine Laune, der Drang zu aktualisieren - und zumindest in geringem Maße, dass sich die Welt um die Anwendung herum verändert.
Die Antwort ist, dass einige Edelsteine bei 1.0 oder 1.0.x bleiben, weil der Entwickler sich für das Feature-Set entschieden hat, ein fehlerfreies Programm fertiggestellt hat und entweder nicht davon profitiert, endlos Dinge hinzuzufügen und die Fehler in den hinzugefügten Dingen zu beheben, oder umgezogen ist auf mehr Edelsteine zu entwickeln.
Es ist unwahrscheinlich, dass alles andere in der Nähe des Codes in 1.0 bleibt. Und warum sollten Sie die Anwendung nicht umschreiben, wenn Sie eine großartige Idee haben? Du solltest, es macht Spaß zu programmieren! :) Abgesehen davon, dass dies in vielen modernen Softwareprodukten nicht der Fall ist. Änderungen aus Gründen der Änderung (des Verkaufs) und nicht durch Featuresets motiviert, und in geringerem Umfang Aktualisierungen, um sie an sich ändernde Plattformen anzupassen, sind an der Tagesordnung.
Und in dieser Suppe interagierender Teile einer ständig aktualisierten Software entgehen nur wenige Codebasen Revisionen. Einige halten sich immer noch an den Traum von Grundlagen und Modularisierung (und nicht vorzeitigem Release), aber die große Mehrheit bleibt im Release-Fix-Update-Zyklus stecken.
quelle
Sogar angeblich 'modernste' Systeme, die für Spiele verwendet werden, wie iD Tech und Unreal, enthalten immer noch ein gutes Stück 1.0-Code.
quelle