Quelle quantité de code original reste dans les produits logiciels modernes? [fermé]

32

Beaucoup d'entre vous travaillent pour de grandes entreprises qui proposent des logiciels bien connus. Je me demandais, quelle quantité de code d'origine (essentiellement, le code qui était la version "v1.0") reste dans les applications massives modernes, comme, par exemple, Firefox, Photoshop, Windows, Linux, etc.? Je préférerais vraiment une expérience de première main et des histoires de guerre réelles.

Merci d'avoir satisfait ma curiosité.

MODIFIER

Il s'avère qu'il y a un certain malentendu. Ce que je recherche est essentiellement le suivant: lorsque vous blâmez / annotez le code source, y a-t-il des parties ou même des fichiers entiers intacts depuis la version 1.0 initiale.

Anton Gogolev
la source
37
Une rivière coule sur une montagne. L'eau s'évapore et pénètre dans le sol. De l'eau fraîche arrive d'autres ruisseaux. Quand le fleuve atteint la mer, est-ce le même fleuve? Comment pouvez-vous dire? Et si aucune molécule unique ne faisait le voyage du sommet de la montagne à la mer? Si aucune molécule n'est la même, comment peut-on dire que c'est la même rivière? Et en quoi cette question est-elle plus significative que l'histoire stupide de la rivière?
S.Lott
4
La question commence OK, mais cette phrase "Je préférerais vraiment une expérience de première main et des histoires de guerre réelles." invite juste une liste de réponses disant "nous avons encore X% du code d'origine" où X varie de 0 à 100.
ChrisF
10
@Anton Gogolev: Le point est le suivant. Pourquoi demander? Mon expérience dans le monde réel comprend deux produits avec 80% identiques à 1.0 et 0% identiques à 1.0. C'est mon expérience. Que savez-vous maintenant que vous ne saviez pas auparavant? Quel problème avez-vous résolu? Comment cela vous aide-t-il?
S.Lott
4
@ S.Lott, je suis perdu ici ... Curiosité? N'est-il pas fascinant de savoir que cette chose Windows 7 Ultimate que certains d'entre nous exécutent a toujours du code remontant à Windows 3.1?
Anton Gogolev
6
@Anton Gogolev: "Curiosité?" Désolé, cela n'a pas de sens pour moi. Si la réponse était de 17%, alors quoi? Que découle de cette observation?
S.Lott

Réponses:

36

Plus que ce que vous attendez et beaucoup plus vieux que vous ne le pensez. Même avec des «réécritures totales» et de grands refactors, de nombreux modules restent intacts.

Péter suggère que, par exemple, vous ne trouverez pas l'ancien code Netscape dans Firefox. Ce qui est faux, si vous recherchez dans le code source, vous trouverez de nombreux fichiers avec clause de non-responsabilité comme:

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

Par exemple, dans les en-têtes du noyau Linux, vous pouvez trouver des choses comme:

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
la source
1
Firefox est plein de code vieux de dix ans, sérieusement.
kizzx2
1
Hé, ça marche toujours (probablement)
Callum Rogers
1
@Callum Rogers: Cela fonctionne, mais pas bien, et c'est lent ... Dommage que Firefox soit tombé comme ça.
Anto
2
Le MPL nécessite que la chose «développeur initial» soit ajoutée, mais cela ne signifie pas que c'est la dernière fois que le fichier a été touché. Firefox a beaucoup d'ancien code, mais pas s'il est lent - le code qui est suffisamment lent pour que quiconque le remarque soit réécrit.
Paul Biggar,
3
Le code @ kizzx2 ne rouille pas
27

Je ne sais pas combien mais l'ancien code est définitivement là mais il est lentement supprimé. Par exemple, dans Windows 2008 ou Vista, allez dans c: \ windows \ fonts en utilisant l'explorateur, faites un clic droit sur le volet gauche et choisissez "installer une nouvelle police". La boîte de dialogue qui s'affiche est à partir de Windows 3.1 jours (vérifiez la capture d'écran). Si vous voyez la même chose dans Windows 7, c'est maintenant un bien meilleur panneau de contrôle comme l'interface utilisateur.

Boîte de dialogue Installer de nouvelles polices

softveda
la source
+100 Je l'ai trouvé moi-même il y a quelques années
Nicolai Reuschling
Oui, c'est ... msoOldStyleDialog (?) D'accord, toujours pris en charge pour les programmes hérités qui sont terminés et sont donc restés à 1.0.x. Comme un simple sélecteur de fichiers. Bien que dans ce cas, ce soit juste une question de dialogue qu'ils ont manqué lors de la révision de l'interface graphique.
Henrik Erlandsson
6

Je ne peux pas dire quel âge a le code au travail. Je ne peux que revenir au moment où il a été mis dans Subversion, et il y en a beaucoup qui remontent à ce jour.

Cependant, j'ai un ami qui a travaillé sur le code Microsoft Office. Il y a quelques années, il m'a dit qu'il en avait supprimé certains appels SaveA5World. Cet appel avait un objectif sur les anciens Macintoshes avec des processeurs M680? 0, et n'a servi à rien depuis qu'Apple a opté pour les Mac PowerPC au début des années 90.

Selon mes observations, tout système logiciel puissant sur lequel une entreprise s'appuie a été construit avec une technologie que personne ne veut vraiment utiliser.

David Thornley
la source
2

"S'ils ont fait leur travail extrêmement bien dès le départ, une grande partie, sinon une petite partie."

Les langues strictes affichent ce trait. Très peu de choses ont dû changer dans les langues de Nicklaus Wirth, car elles ont été planifiées avec précision. (Cela a en fait changé récemment pour Delphi et changera davantage avec la prochaine version de déploiement universel.)

Il y a aussi un revers à cela, bien sûr. Décider que le code d'origine est assez bon, comme dans le cas de Microsoft Windows, ou de belles applications comme ACDSee, des éditeurs de texte ou les applications en ligne de commande bien connues de "l'esprit de Linux".

Même si ces applications peuvent sembler maladroites à ceux qui ne les aimaient peut-être pas en premier lieu, elles affichent un trait bien planifié ainsi qu'un ensemble de fonctionnalités bien défini; même s'ils n'ont pas de cloches et de sifflets, cela peut être préféré; ils font ce qui est sur l'étain, la compatibilité descendante est excellente et continuera probablement à bien fonctionner à l'avenir.

Photoshop aurait 90% le même code depuis 5.0, si vous optez pour le jeu de fonctionnalités. ; P le fait? Non pourquoi? Vendre des mises à jour. Vous ne pouvez pas vraiment en faire plus aujourd'hui.

L'ensemble de fonctionnalités d'un gestionnaire de fichiers, au point où il souhaite faire du FTP, du Web et du cloud, est en grande partie le même pour n'importe quelle plate-forme pendant des décennies. La seule raison pour laquelle une telle application n'est toujours pas à 1.0 est due à une mauvaise planification, à un caprice, à une envie de mise à jour - et au moins dans une faible mesure au monde qui change autour de l'application.

La réponse est que certaines gemmes restent à 1.0 ou 1.0.x parce que le développeur a décidé de l'ensemble de fonctionnalités, a terminé un programme sans bogues et ne profite pas de l'ajout sans fin de trucs et de la correction des bogues dans les trucs ajoutés, ou a déménagé pour développer plus de gemmes.

Il est peu probable que tout le reste reste près du code en 1.0. Et pourquoi ne pas réécrire l'application si vous avez une bonne idée? Vous devriez, c'est amusant de coder! :) Sauf que ce n'est pas ce qui s'est produit dans de nombreux logiciels modernes. Le changement dans un souci de changement (ventes) et non motivé par l'ensemble de fonctionnalités, et dans une moindre mesure la mise à jour pour se conformer aux plateformes changeantes, est à l'ordre du jour.

Et dans cette soupe de morceaux interactifs de logiciels constamment mis à jour, peu de bases de code échappent aux révisions. Quelques-uns continuent de rêver de fondations et de modularisation (et de ne pas sortir prématurément), mais la grande majorité est coincée dans le cycle de mise à jour-correction-mise à jour.

Henrik Erlandsson
la source
-2

Même les systèmes ostensiblement «de pointe» utilisés pour les jeux, comme iD Tech et Unreal, contiendraient encore un peu de code 1.0.

Alan B
la source