Domanda

Innanzitutto, un po 'di contesto (cose che molti di voi conoscono comunque):

Ogni linguaggio di programmazione popolare ha una chiara evoluzione, la maggior parte del tempo contrassegnato dalla sua versione: hai Java 5, 6, 7 ecc., PHP 5.1, 5.2, 5.3 ecc. Rilasciare una nuova versione rende disponibili nuove API, corregge i bug, aggiunge Nuove funzionalità, nuovi framework ecc. Quindi tutto sommato: va bene.

Ma che dire dei problemi della lingua (o della piattaforma)? Se e quando c'è qualcosa di sbagliato in una lingua, gli sviluppatori lo evitano (se possono) o imparano a conviverci.

Ora, gli sviluppatori di queste lingue ricevono molti feedback dai programmatori che li usano. Quindi ha senso che, col passare del tempo (e dei numeri di versione), i problemi in quelle lingue andranno lentamente ma sicuramente andranno via. Beh, non proprio. Come mai? Compatibilità all'indietro, ecco perché. Ma perché è così? Leggi di seguito per una situazione più concreta.


Il modo migliore per spiegare la mia domanda è usare PHP come esempio:

PHP è amato e odiato da migliaia di persone. Tutte le lingue hanno difetti, ma apparentemente PHP è speciale. Guardare Questo post sul blog. Ha un elenco molto lungo di cosiddetti difetti in PHP. Ora, non sono uno sviluppatore PHP (non ancora), ma ho letto tutto e sono sicuro che un grosso pezzo di quell'elenco sia davvero veri problemi. (Non tutto, poiché è potenzialmente soggettivo).

Ora, se fossi uno dei ragazzi che sviluppa attivamente PHP, vorrei sicuramente risolvere quei problemi, uno per uno. Tuttavia, se lo faccio, il codice che si basa su un particolare comportamento della lingua si interromperà se funziona sulla nuova versione. Riassumendolo in 2 parole: compatibilità all'indietro.

Quello che non capisco è: perché dovrei mantenere PHP all'indietro compatibile? Se rilascio PHP versione 8 con tutti questi problemi risolti, non posso semplicemente dare un grande avvertimento su di esso dicendo: "Non eseguire il vecchio codice su questa versione!"?

C'è una cosa chiamata deprecazione. Lo abbiamo avuto per anni e funziona. Nel contesto di PHP: guarda come in questi giorni le persone scoraggiano attivamente l'uso del mysql_* funzioni (e invece lo consiglio mysqli_* e PDO). DOGRECATION WORKS. Possiamo usarlo. Dovremmo usarlo. Se funziona per le funzioni, perché non dovrebbe funzionare per intere lingue?

Diciamo che io (lo sviluppatore di PHP) lo faccio:

  • Avvia una nuova versione di PHP (diciamo 8) con tutti quei difetti fissi
  • Nuovi progetti inizieranno a utilizzare quella versione, poiché è molto migliore, più chiaro, più sicuro ecc.
  • Tuttavia, per non abbandonare versioni precedenti di PHP, continuo a rilasciare aggiornamenti ad esso, risolvere problemi di sicurezza, bug ecc. Questo ha senso per le ragioni che non sto elencando qui. È pratica comune: cerca ad esempio come Oracle ha continuato ad aggiornare la versione 5.1.x di MySQL, anche se si è concentrato principalmente sulla versione 5.5.x.
  • Dopo circa 3 o 4 anni, smetto di aggiornare le vecchie versioni di PHP e le lascio morire. Questo va bene, poiché in quei 3 o 4 anni, la maggior parte dei progetti sarà comunque passata a PHP 8.

La mia domanda è: Tutti questi passaggi hanno senso? Sarebbe così difficile da fare? Se può essere fatto, perché non è fatto?

Sì, il rovescio della medaglia è che rompi la compatibilità all'indietro. Ma non è un prezzo che vale la pena pagare? Come rialzo, in 3 o 4 anni avrai una lingua che ha risolto il 90 % dei suoi problemi .... una lingua molto più piacevole con cui lavorare. Il suo nome garantirà la sua popolarità.

MODIFICARE: Ok, quindi non mi sono espresso correttamente quando ho detto che tra 3 o 4 anni le persone si sposteranno nell'ipotetico PHP 8. quello che intendevo dire era: tra 3 o 4 anni, le persone useranno PHP 8 se iniziano un nuovo progetto.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top