Tout d’abord, un contexte (ce que la plupart d’entre vous connaissent de toute façon):
Chaque langage de programmation populaire a une évolution claire, la plupart du temps marquée par sa version: vous avez Java 5, 6, 7, etc., PHP 5.1, 5.2, 5.3, etc. nouvelles fonctionnalités, nouveaux frameworks, etc. Bref, c'est bien.
Mais qu'en est-il des problèmes de langue (ou de plate-forme)? Si et quand il y a quelque chose qui ne va pas dans une langue, les développeurs l'évitent (s'ils le peuvent) ou apprennent à vivre avec.
Maintenant, les développeurs de ces langages reçoivent beaucoup de commentaires des programmeurs qui les utilisent. Il est donc logique que, avec le temps (et les numéros de version), les problèmes dans ces langues disparaissent lentement mais sûrement. Eh bien pas vraiment. Pourquoi? Compatibilité ascendante, voilà pourquoi. Mais pourquoi est-ce vrai? Lire ci-dessous pour une situation plus concrète.
Le meilleur moyen d'expliquer ma question est d'utiliser PHP comme exemple:
PHP est aimé et détesté par des milliers de personnes. Toutes les langues ont des défauts, mais apparemment PHP est spécial. Découvrez ce blog . Il a une très longue liste de failles dites en PHP. Maintenant, je ne suis pas un développeur PHP (pas encore), mais j’ai tout lu et je suis sûr qu’une bonne partie de cette liste sont de véritables problèmes. (Pas tout, puisqu'il est potentiellement subjectif).
Maintenant, si j'étais l'un des gars qui développent activement PHP, je voudrais sûrement résoudre ces problèmes, un par un. Toutefois, si je le fais, le code reposant sur un comportement particulier du langage sera rompu s’il est exécuté sur la nouvelle version. En résumé en 2 mots: compatibilité ascendante.
Ce que je ne comprends pas, c'est: pourquoi devrais-je conserver une compatibilité ascendante avec PHP? Si je publie la version 8 de PHP avec tous ces problèmes corrigés, ne puis-je pas y mettre un gros avertissement disant: "N'exécutez pas de vieux code sur cette version!"?
Il y a une chose appelée dépréciation. Nous l'avons depuis des années et ça marche. Dans le contexte de PHP: regardez comment de nos jours, les gens découragent activement l'utilisation des mysql_*
fonctions (et recommandent plutôt mysqli_*
PDO). La dépréciation fonctionne. Nous pouvons l'utiliser. Nous devrions l'utiliser. Si cela fonctionne pour des fonctions, pourquoi ne devrait-il pas fonctionner pour des langues entières?
Disons que je (le développeur de PHP) fais ceci:
- Lancer une nouvelle version de PHP (disons 8) avec tous ces défauts corrigés
- Les nouveaux projets commenceront à utiliser cette version, car elle est bien meilleure, plus claire, plus sécurisée, etc.
- Cependant, afin de ne pas abandonner les anciennes versions de PHP, je publie régulièrement des mises à jour, corrige des problèmes de sécurité, des bugs, etc. Ceci est logique pour des raisons que je ne répertorie pas ici. C'est une pratique courante: regardez par exemple comment Oracle conservait la mise à jour de la version 5.1.x de MySQL, même si elle se concentrait principalement sur la version 5.5.x.
- Après environ 3 ou 4 ans, je cesse de mettre à jour les anciennes versions de PHP et je les laisse mourir. C'est bien, car au cours de ces 3 ou 4 années, la plupart des projets seront passés à PHP 8 de toute façon.
Ma question est la suivante: toutes ces étapes ont-elles un sens? Serait-ce si difficile à faire? Si cela peut être fait, alors pourquoi ne le fait-on pas?
Oui, l'inconvénient est que vous supprimez la compatibilité ascendante. Mais n'est-ce pas un prix à payer? En revanche, dans 3 ou 4 ans, vous aurez une langue qui règle 90% de ses problèmes… une langue beaucoup plus agréable à travailler. Son nom assurera sa popularité.
EDIT : OK, donc je ne me suis pas exprimé correctement en disant que dans 3 ou 4 ans, les gens passeraient à l'hypothétique PHP 8. Ce que je voulais dire était: dans 3 ou 4 ans, les gens utiliseront PHP 8 s'ils commencent une nouveau projet.
mysql_*
était obsolète dans la version 5.5, par exemple), mais cela n’a aucune importance si la majorité des fournisseurs d’hébergement ont une ou même deux versions précédentes (la version 5.3 reste malheureusement ce qu’est la majorité des utilisateurs). offres de fournisseurs).