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