Quanto del codice originale è rimasto nei moderni prodotti software? [chiuso]


32

Molti di voi là fuori lavorano per grandi aziende che distribuiscono software ben noti. Mi chiedevo, quanto del codice originale (fondamentalmente, il codice che era la versione "v1.0") è rimasto nelle moderne applicazioni di massa, come, diciamo, Firefox, Photoshop, Windows, Linux, ecc.? Preferirei davvero l'esperienza di prima mano e le storie di guerra del mondo reale.

Grazie per soddisfare la mia curiosità.

MODIFICARE

Si scopre che c'è un certo fraintendimento. Quello che sto cercando è sostanzialmente il seguente: quando si incolpa / annota il codice sorgente, ci sono parti o addirittura interi file non toccati dalla versione 1.0 iniziale.


37
Un fiume scorre giù da una montagna. L'acqua evapora e si impregna nel terreno. L'acqua nuova arriva da altri corsi d'acqua. Quando il fiume raggiunge il mare, è lo stesso fiume? Come puoi dirlo? E se nessuna singola molecola dovesse mai compiere l'intero viaggio dalla cima della montagna al mare? Se nessuna molecola è la stessa, come possiamo dire che è lo stesso fiume? E in che modo questa domanda è più significativa della stupida storia del fiume?
S.Lott

4
La domanda inizia OK, ma questa frase "Preferirei davvero l'esperienza di prima mano e le storie di guerra del mondo reale". sta solo invitando un elenco di risposte che dice "abbiamo ancora X% del codice originale" in cui X varia da 0 a 100.
ChrisF

10
@Anton Gogolev: il punto è questo. Perchè chiedere? La mia esperienza nel mondo reale include due prodotti con l'80% uguale a 1.0 e lo 0% uguale a 1.0. Questa è la mia esperienza. Cosa sai ora che non sapevi prima? Quale problema hai risolto? Come ti aiuta questo?
S.Lott

4
@ S. Lott Sono in perdita qui ... Curiosità? Non è affascinante sapere che questa cosa di Windows 7 Ultimate che alcuni di noi stanno eseguendo ha ancora un codice che risale a Windows 3.1?
Anton Gogolev,

6
@Anton Gogolev: "Curiosità?" Mi dispiace, non ha molto senso per me. Se la risposta fosse del 17%, che cosa succede? Cosa segue da quell'osservazione?
S.Lott

Risposte:


36

Più di quanto ti aspetteresti e molto più vecchio di quanto ti aspetteresti. Anche con "riscritture totali" e grandi refactor ci sono molti moduli che rimangono intatti.

Péter suggerisce che ad esempio non troverai il vecchio codice Netscape in Firefox. Il che è sbagliato, se cerchi nel codice sorgente troverai parecchi file con disclaimer come:

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

Ad esempio nelle intestazioni del kernel Linux puoi trovare cose come:

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.

1
Firefox è pieno di codice decennale, sul serio.
kizzx2,

1
Ehi, funziona ancora (probabilmente)
Callum Rogers,

1
@Callum Rogers: funziona, ma non bene, ed è lento ... Peccato che Firefox sia caduto così.
Anto,

2
L'MPL richiede l'aggiunta della cosa "Sviluppatore iniziale", ma ciò non significa che sia stato l'ultimo tocco del file. Firefox ha un sacco di vecchio codice, ma non se è lento - il codice che è abbastanza lento da essere notato da chiunque viene riscritto.
Paul Biggar,

3
Il codice @ kizzx2 non arrugginisce ..

27

Non so quanto, ma il vecchio codice è sicuramente lì, ma lentamente viene rimosso. Ad esempio, in Windows 2008 o Vista vai su c: \ windows \ fonts usando explorer, fai clic con il tasto destro sul riquadro sinistro e scegli "installa nuovo carattere". La finestra di dialogo mostrata è di Windows 3.1 giorni (vedi screenshot). Se vedi lo stesso in Windows 7, ora è un pannello di controllo molto migliore come l'interfaccia utente.

Finestra di dialogo Installa nuovi caratteri


+100 In realtà l'ho trovato io stesso qualche anno fa
Nicolai Reuschling

Sì, questo è ... msoOldStyleDialog (?) Va bene, ancora supportato per i programmi legacy che sono finiti e quindi sono rimasti a 1.0.x. Come un semplice selettore di file. Anche se in questo caso si tratta solo di una finestra di dialogo che hanno perso durante le revisioni della GUI.
Henrik Erlandsson,

6

Non so quanti anni ha il codice al lavoro. Posso solo tornare a quando è stato inserito in Subversion, e ce ne sono molti che risalgono a così lontano.

Tuttavia, ho un amico che ha lavorato sul codice di Microsoft Office. Alcuni anni fa, mi disse che aveva rimosso alcune chiamate SaveA5World da esso. Quella chiamata aveva uno scopo sui vecchi Macintoshes con processori M680? 0 e non ha avuto alcun vantaggio da quando Apple è passata ai Mac PowerPC nei primi anni '90.

Nelle mie osservazioni, qualsiasi potente sistema software su cui un'azienda fa affidamento è stato costruito con la tecnologia che nessuno vuole più usare.


2

"Se hanno svolto il loro lavoro estremamente bene fin dall'inizio, una grande parte, altrimenti una piccola parte."

Le lingue rigorose mostrano questo tratto. Molto poco ha dovuto cambiare nelle lingue di Nicklaus Wirth, perché pianificate con precisione. (Questo è effettivamente cambiato di recente per Delphi e cambierà di più con la prossima versione di distribuzione universale.)

C'è anche un rovescio della medaglia, ovviamente. Decidere che il codice originale è abbastanza buono, come nel caso di Microsoft Windows, o di applicazioni adorabili come ACDSee, editor di testo o le famose applicazioni da riga di comando "spirit of Linux".

Anche se queste applicazioni possono sembrare ingombranti a coloro che forse non le hanno amate in primo luogo, mostrano un tratto ben pianificato e un set di caratteristiche ben definito; anche se non hanno campane e fischietti, questo può essere preferito; fanno ciò che è in serbo, la retrocompatibilità è ottima e probabilmente continueranno a funzionare bene in futuro.

Photoshop avrebbe il 90% dello stesso codice dalla 5.0, se utilizzi il set di funzionalità. ; P Lo fa? No perchè? Vendita di aggiornamenti. Non puoi davvero farne di più oggi.

Il set di funzionalità di un file manager, fino al punto in cui vuole fare FTP, web e cloud, è sostanzialmente lo stesso per qualsiasi piattaforma per i decennali. L'unica ragione per cui un'applicazione non è ancora a 1.0 è dovuta a una cattiva pianificazione, a un capriccio, a un bisogno di aggiornamento - e almeno in piccola parte al mondo che cambia intorno all'applicazione.

La risposta è che alcune gemme rimangono a 1.0 o 1.0.x perché lo sviluppatore ha deciso il set di funzionalità, ha completato un programma privo di bug e non beneficia dell'aggiunta continua di roba e correzione dei bug nella roba aggiunta o si è spostato per sviluppare più gemme.

È improbabile che tutto il resto rimanga vicino al codice in 1.0. E perché non dovresti riscrivere l'applicazione se hai una grande idea? Dovresti, è divertente programmare! :) Tranne che non è quello che è successo in molti prodotti software moderni. Il cambiamento per motivi di cambiamento (vendite) e non motivato dal set di funzionalità e, in misura minore, l'aggiornamento per adeguarsi al cambiamento delle piattaforme, è all'ordine del giorno.

E in questa zuppa di pezzi interattivi di software in costante aggiornamento, poche basi di codice sfuggono alle revisioni. Alcuni continuano a sognare le basi e la modularizzazione (e non il rilascio prematuro), ma la stragrande maggioranza è bloccata nel ciclo release-fix-update.


-2

Anche apparentemente sistemi "all'avanguardia" usati per i giochi, come iD Tech e Unreal, avrebbero ancora un bel po 'di codice 1.0 in essi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.