Wie viel Originalcode ist in modernen Softwareprodukten noch vorhanden? [geschlossen]

32

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.

Anton Gogolev
quelle
37
Ein Fluss fließt einen Berg hinunter. Wasser verdunstet und dringt in den Boden ein. Neues Wasser kommt aus anderen Bächen. Wenn der Fluss das Meer erreicht, ist es derselbe Fluss? Woran erkennst du das? Was ist, wenn kein einzelnes Molekül jemals die gesamte Reise vom Gipfel zum Meer zurücklegt? Wenn kein Molekül dasselbe ist, wie können wir dann sagen, dass es der gleiche Fluss ist? Und wie ist diese Frage sinnvoller als die dumme Geschichte über den Fluss?
S.Lott
4
Die Frage fängt in Ordnung an, aber dieser Satz "Ich würde Erfahrung aus erster Hand und echte Kriegsgeschichten wirklich vorziehen." lädt nur eine Liste mit Antworten ein, in der steht: "Wir haben immer noch X% des ursprünglichen Codes", wobei X von 0 bis 100 variiert.
ChrisF
10
@ Anton Gogolev: Der Punkt ist dies. Warum fragst du? Meine reale Erfahrung umfasst zwei Produkte mit 80% gleich 1,0 und 0% gleich 1,0. Das ist meine Erfahrung. Was weißt du jetzt, wo du es vorher nicht gewusst hast? Welches Problem hast du damit gelöst? Wie hilft dir das?
S.Lott
4
@S.Lott Ich bin hier ratlos ... Neugier? Ist es nicht faszinierend zu wissen, dass dieses Windows 7 Ultimate-Produkt, das einige von uns ausführen, immer noch Code aus Windows 3.1 enthält?
Anton Gogolev
6
@ Anton Gogolev: "Neugierde?" Sorry, das macht für mich wenig Sinn. Wenn die Antwort 17% war, was dann? Was folgt aus dieser Beobachtung?
S.Lott

Antworten:

36

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:

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

In Linux-Kernel-Headern finden Sie beispielsweise Folgendes:

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
quelle
1
Firefox ist voll von jahrzehntelangem Code, im Ernst.
kizzx2
1
Hey, es funktioniert immer noch (wahrscheinlich)
Callum Rogers
1
@ Callum Rogers: Es funktioniert, aber nicht gut, und es ist langsam ... Schade, wie Firefox so gefallen ist.
Anto
2
Die MPL verlangt, dass das "Anfängliche Entwickler" -Ding hinzugefügt wird, dies bedeutet jedoch nicht, dass die Datei zum letzten Mal berührt wurde. Firefox hat viel alten Code, aber nicht, wenn er langsam ist - Code, der langsam genug ist, um bemerkt zu werden, wird neu geschrieben.
Paul Biggar
3
@ Kizzx2 Code rostet nicht ..
27

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.

Dialogfeld "Neue Schriftarten installieren"

softveda
quelle
+100 Das habe ich tatsächlich vor ein paar Jahren selbst gefunden
Nicolai Reuschling
Ja, das ist ... msoOldStyleDialog (?) In Ordnung, wird immer noch für Legacy-Programme unterstützt, die fertig sind und daher bei 1.0.x geblieben sind. Wie eine einfache Dateiauswahl. In diesem Fall handelt es sich jedoch nur um einen Dialog, den sie während der GUI-Überholung (en) verpasst haben.
Henrik Erlandsson
6

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.

David Thornley
quelle
2

"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.

Henrik Erlandsson
quelle
-2

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.

Alan B
quelle