PHP a-t-il un avenir, ou est-ce que vingt-cinq ans suffisent ?

En juin 1995, Rasmus Lerdorf fait une annonce sur un groupe Usenet. Vous pouvez encore le lire.

Aujourd’hui, vingt-cinq ans plus tard, PHP est à peu près aussi omniprésent qu’il aurait pu le devenir. Je serais prêt à parier que pour la majorité des lecteurs de cet article, leurs premières incursions dans la programmation Web impliquaient PHP.

Annonce de la version 1.0 des outils de page d’accueil personnelle (outils PHP).

Ces outils sont un ensemble de petits binaires cgi serrés écrits en C.

Mais quelle que soit la riche histoire et la large base d’utilisateurs de PHP, cela ne justifie pas son utilisation dans un paysage en évolution rapide. Alors que PHP sera inévitablement présent pendant des années dans les applications existantes, a-t-il un avenir dans les nouveaux sites ?

Avant de nous tourner vers l’avenir, nous devons d’abord étudier comment PHP a évolué dans le passé.

Les débuts

Rasmus Lerdorf a initialement créé PHP pour suivre les utilisateurs qui ont consulté son CV en ligne. Une fois que le code source a été publié et que la base de code a été réécrite à partir de zéro un nombre important de fois, PHP jouissait d’une certaine popularité, aurait été installé sur 1% de tous les domaines en 1998. À ce stade, le langage ne ressemblait en rien à nous savons aujourd’hui. Il a été entièrement écrit dans avec une syntaxe sensiblement différente des versions modernes.

Entrez Zeev Suraski et Andi Gutmans, qui utilisaient PHP pour essayer de créer une entreprise, mais ont trouvé qu’il manquait de fonctionnalités. En collaboration avec Rasmus, PHP a de nouveau été réécrit et publié en tant que PHP 3.0. Nous allons maintenant quelque part, avec PHP 3 installé sur environ 10% des domaines à l’époque. C’est également à ce moment que la signification de PHP est passée de la page d’accueil personnelle à l’acronyme récursif préféré de tous, “PHP : Hypertext Preprocessor”. Cette version et cette période sont généralement considérées comme le moment où PHP a cimenté son statut futur. Entre PHP 3 et 4, phpMyAdmin a été créé, Zeev et Andi ont mélangé leurs noms et ont fondé la société de services PHP Zend, et le vénérable logo de l’éléphant est apparu.

Le reste appartient à l’histoire : peu de temps après PHP 4 est venu Drupal ; en 2003, nous avons eu WordPress ; puis en 2004 est venu un étudiant à Harvard nommé Mark.

Facebook et PHP

Facebook a commencé comme un site PHP. Mais lorsque des milliers d’utilisateurs sont devenus des millions, et que des millions ont commencé à ressembler à des milliards, il y a eu des difficultés de croissance.

En particulier, PHP était (et est toujours) un langage de script. Idéal pour la productivité des développeurs, pas si génial pour l’efficacité des ressources. Ainsi, en 2008, Facebook a commencé à travailler sur HipHop pour PHP, un transpileur. Très simplement, il a analysé PHP, l’a transpilé en C++, puis a compilé le C++ résultant en x64. Ce n’était pas une mince affaire étant donné que PHP est faiblement typé et dynamique. Mais les résultats parlent d’eux-mêmes : une réduction de 50 % de la charge du processeur.

Je suis sûr que vous imaginez l’horreur de travailler en tant que développeur chez Facebook en utilisant ce processus. Apporter une modification au code PHP, exécuter le transpileur, puis le compilateur, tambouriner vos doigts, exécuter l’exécutable et trouver le problème que vous devez revenir en arrière et résoudre. C’est un cycle d’itération assez long, c’est pourquoi Facebook a également développé HPHPi, un interpréteur qui fait le même travail que le transpileur/compilateur (HPHPc), mais juste pour être utilisé pour le développement. Comme vous pouvez l’imaginer, garder les deux projets synchronisés était un véritable casse-tête, alors en 2011, ils ont développé HHVM, la machine virtuelle HipHop.

HHVM est un runtime PHP. Il utilise la compilation JIT (juste à temps) pour fournir le meilleur des deux mondes. C’est plutôt cool, et vous pouvez en savoir plus sur le blog de Facebook si vous êtes intéressé. La prochaine grande étape a eu lieu en 2014, avec l’invention de Hack, un langage spécialement conçu pour HHVM. C’est à la fois un sur-ensemble et un sous-ensemble de PHP, ajoutant des annotations de type facultatives et des fonctionnalités supplémentaires telles que l’architecture asynchrone. Cela contribue également à rendre le JIT de HHVM plus efficace en lui permettant d’optimiser en toute confiance à l’aide des indications de type spécifiées. Bientôt, un nouveau code sur Facebook a été écrit en Hack, le code existant étant converti au fil du temps. Hack et HHVM sont tous deux open source et activement maintenus aujourd’hui.

Le fait que Facebook ait trouvé PHP dans sa forme native inutilisable à grande échelle signifie-t-il que c’est un langage mal conçu ? Non je ne pense pas. Je ne crois pas qu’aucune des options qui existaient à l’époque n’ait été créée pour l’échelle ou les spécificités requises par Facebook. Cependant, cela n’empêche pas les gens de l’utiliser contre PHP.

La haine

Au sein de la communauté des logiciels au sens large, à mesure que PHP s’agrandit, il a inévitablement attiré le feu d’un groupe croissant de cyniques. Sauf que, objectivement parlant, PHP est plus détesté que la plupart des autres langages. Selon la récente enquête 2020 Stack Overflow Developer Survey, PHP est le sixième langage le plus redouté. Pourquoi?

Je ne veux pas entrer dans les détails techniques ici, mais si vous le faites, PHP : une fractale de mauvaise conception, est le billet de blog biblique pour les ennemis de PHP. Écrit en 2012, certains problèmes qu’il mentionne ont depuis été corrigés, mais beaucoup ne l’ont pas été. (par exemple : pourquoi n’y a-t-il pas de support asynchrone natif en 2020 ?)

Enquête Stack Overflow 2020 sur les langues les plus redoutées

Je pense que des problèmes plus généraux résident dans la philosophie de la langue. C’est un outil pour un domaine assez restreint, implémenté de manière complexe. Dans un monde idéal, si une application doit être complexe, la complexité doit être visible pour le développeur dans le code utilisateur, et non dans le langage lui-même. Vous n’avez pas besoin d’un outil complexe pour créer des projets complexes. Quand je dis que PHP est complexe, je ne dis pas qu’il est difficile à utiliser pour les débutants (bien au contraire en fait), je dis qu’il a des conventions de nommage incohérentes et beaucoup de fonctions très spécifiques, les deux facilitent la création d’erreurs qui ne sont pas capturés avant l’exécution. Mais ces propriétés de l’âge de PHP sont-elles simplement prévisibles ? Bien que ce soit peut-être un facteur, ce n’est certainement pas la raison de la haine. Après tout, Python a été créé en 1989, six ans avant PHP, et se présente comme le 3e langage le plus apprécié dans l’enquête Stack Overflow, tout en étant l’un des langages à la croissance la plus rapide aujourd’hui.

En matière de sécurité, il y a un débat pour savoir si le nombre supérieur à la moyenne de vulnérabilités sur les sites PHP est la faute du langage ou des développeurs du site. D’une part, un langage de codage conçu pour plaire à un large éventail de personnes, y compris des non-programmeurs, qui produisent des sites avec du code piraté à partir de didacticiels vieux de plusieurs décennies, aura toujours des problèmes, quel que soit le mérite du langage lui-même. D’un autre côté, PHP a tenté de résoudre les problèmes de sécurité de base de manière douteuse, par exemple en fixant d’abord l’injection SQL avec escape_string()puis en corrigeant les vulnérabilités en ajoutant real_escape_string()puis en ajoutant addslashes(), mysql_escape_string(), pg_escape_string() etc. Ajoutez à cela sa gestion labyrinthique des erreurs/exceptions (oui, les erreurs et les exceptions sont différentes), et il est facile de faire des erreurs si vous ne maîtrisez pas bien les nuances du langage. Le nombre de sites exécutant d’anciennes versions non prises en charge de PHP au-delà de leur fin de vie continue d’être incroyablement élevé, de sorte que les sites PHP continueront d’être des fruits à portée de main pour les pirates pour les années à venir.

Quoi qu’il en soit, je ne suis pas convaincu que les problèmes de la langue soient aussi importants que beaucoup le diraient. Bien qu’il y ait des motifs raisonnables de se plaindre de PHP, il me semble qu’une grande partie de la stigmatisation est absorbée parce que c’est à la mode, plutôt que motivé par des individus.

L’avenir

Cet auteur est bien conscient de l’ironie de taper des critiques de la langue dans une page avec post.php dans la barre d’adresse. Mais il ne s’agit pas de sites existants. Je ne pense pas que même les foules de fourches les plus ardentes suggéreraient que nous réécrivions tous les sites existants créés avec PHP. La question est, en juin 2020, si je veux créer un nouveau site Web, PHP devrait-il être une option que j’envisage ?

Il ne fait aucun doute que les tendances actuelles du développement Web ouvrent la voie aux applications à page unique – où votre navigateur ne se recharge jamais, mais les navigations se produisent à partir de Javascript restituant la page à l’aide de données provenant d’appels d’API ultra-rapides (par exemple : navigation sur GitHub ou Google Conduire). Il existe un écosystème sans cesse croissant de bibliothèques, de frameworks et d’outils Javascript pour créer des applications réactives et performantes dans le navigateur – React et Vue étant les plus populaires.

En fin de compte, PHP est destiné au rendu côté serveur. C’est bien pour la plupart des sites et la meilleure option pour beaucoup. Mais si vous construisez quelque chose de nouveau en 2020, vous devez accepter que cela apporte des limites. Et tandis que le rendu côté serveur de style PHP n’est pas mort (tout le monde a-t-il oublié le référencement ?), les sites modernes sont susceptibles d’être isomorphes, c’est-à-dire capables de rendre le même Javascript sur le serveur et le client, en utilisant des frameworks tels que Next. js (pour React) ou Nuxt.js (pour Vue), mettant PHP hors service sur le serveur.

Mais nous ne pouvons pas ignorer le fait que PHP évolue aussi. Laravel, autoproclamé comme “Le framework PHP pour les artisans du web”, fournit une architecture MVC pour créer des applications PHP en toute sécurité et rapidement. Il est tenu en haute estime par la communauté et connaît un développement actif et rapide. De plus, PHP 8 sortira plus tard cette année, avec un tas de nouvelles fonctionnalités (dont beaucoup vous sembleront familières dans la section Facebook), telles qu’un JIT, des types d’union et des erreurs améliorées.

Alors, joyeux vingt-cinquième anniversaire PHP, vous êtes infiniment excentrique et durerez sans aucun doute encore de nombreuses années. Vous avez responsabilisé de nombreuses personnes et joué un rôle clé dans l’essor du Web. Mais ne soyez pas trop contrarié si les gens regardent ailleurs pour l’avenir, c’est 2020 après tout.

Leave a Comment