Prochain Live découverte TSSR et AIS : jeudi 10 octobre à 12h (je m’inscris)

Est-ce que PHP est encore utile ?

2021-08-05
Est-ce-que-PHP-est-encore-utile
Bon, PHP… Entre ceux qui trouvent ça cool de dire que t’es naze (sans forcément savoir pourquoi) et ceux qui se demandent chaque année si t’es encore vivant : on est d’accord pour dire que ta cote de popularité n’est pas incroyable. Si on prend le clavier aujourd’hui, c’est pour se demander : pourquoi tant de haine dans le mot hannetonnant, mais surtout sur ce débat ? (ouais, faut la comprendre celle-là).  Est-ce que ces critiques sont bien fondées, sont-elles encore d’actualité ? Et surtout : est-ce que PHP est encore utile ? 

Pourquoi PHP est Le mal aimé ?

Stack Overflow nous livre un graphique présentant le classement des langages détestés par les développeurs web. Et PHP décroche quand même la 5e place, c’est pas folichon, disons-le.

Classement des langages détestés par les développeurs web
Merci Stack Overflow pour l’info.

On nous dit dans l’oreillette que si le PHP traîne aujourd’hui une mauvaise réputation comme un boulet au P, c’est à cause de sa genèse. Mais qu’est-ce qui a pu déranger à ce point pour en arriver là aujourd’hui ? On y vient.

Un problème paternel ?

Tout commence en 1994 avec Rasmus Lerdorf, celui qui a mis au monde PHP. Lorsqu’il crée sa première version, ce n’est même pas vraiment un langage, c’est plus une suite d’outils en C qui lui permet de gérer son site web perso. Mais en 1995, il va publier cette suite d’outils en Open-source. Et là, il va l’appeler PHP/FI, puis le code va être repris par une équipe de développeurs pour arriver à PHP/FI2, qui va être réécrit à son tour pour donner PHP3. Ensuite le cœur de PHP va complètement être revu pour donner naissance à Zend, puis PHP4, PHP5, Zend2, suivi de PHP6 (bon, celui-là va être annulé, mais on le cite quand même). Et en 2015 PHP7 sort.

Entre temps, en 2003, il répond à quelques questions qu’on lui pose et ça donne ça :

Je n’aime vraiment pas la programmation. J’ai construit cet outil pour programmer moins afin de pouvoir simplement réutiliser du code[…]. Je ne sais pas comment l’arrêter, il n’y a jamais eu d’intention d’écrire un langage de programmation […]. Je ne sais absolument pas comment écrire un langage de programmation, j’ai juste continué à ajouter l’étape logique suivante.

Rasmus LerdorF

Ce discours ne va pas vraiment plaire à tous les développeurs. Certains disent même que c’est à ce moment précis qu’il va s’attirer les foudres de pas mal de monde dans le milieu. Et ça le poursuit encore aujourd’hui :

Pourquoi PHP est détesté ?

Mais rappelons-nous quand même que Rasmus a dit ça en 2003, et que la dernière version de PHP est sortie en 2015. Y’a peut-être des choses qui ont changé en 12 ans, non ?

Victime de son succès.

Si PHP a une si belle place au classement des langages détestés par les développeurs web, ce n’est pas pour rien. Pour détester quelque chose, il faut l’avoir utilisé. Et justement, c’est là que réside tout le paradoxe de ce langage, puisque c’est le plus utilisé actuellement. 80% des sites web sont en PHP, rien que ça. Alors, oui on aurait pu prendre cet argument pour répondre à la question initiale de cet article : est-ce que PHP est encore utile ? Et en rester là, mais il y a encore tellement de choses à dire et visiblement cet argument n’est pas suffisant pour certains. Bien au contraire, sa popularité lui fait plutôt défaut. Quand on est le langage le plus utilisé au monde, forcément on s’intéresse davantage à vous. Et il y en a qui s’en donnent à cœur joie pour scruter les moindres détails afin de trouver un maximum de défauts. C’est aussi le cas de WordPress CMS qui représente  42% du web à lui tout seul.  Ce qui nous avait d’ailleurs poussés à écrire un article intitulé WordPress, c’est caca ? Bref, pas besoin de vous faire un dessin : PHP est victime de son succès.

Avec plus de liberté, c’est plus facile de se planter.

PHPPHP, c’est un langage qui laisse beaucoup de liberté. Et qui dit beaucoup de liberté dans le développement web, dit aussi beaucoup de façons de laisser passer des erreurs de syntaxe ou autre dans le code. Ce qui a tendance à jouer sur les nerfs des utilisateurs de PHP. Et puis, pour rajouter un peu d’huile sur le feu, ce langage est très accessible par tous : des plus expérimentés aux plus novices. Alors, quand t’es celui qui a le plus d’expérience et qui doit aller filer un coup de main au débutant avec ses bugs dans un code en spaghettis, ça peut te donner envie d’insulter ce langage et de crier haut et fort que PHP ferait mieux de ne plus exister.

C’est moche, beurk, brûlez-le !

Ne comptons pas le nombre de fois où l’on a entendu : “PHP, c’est pas joli”, “le design est éclaté au sol” et on en passe, sinon l’article n’en finirait pas. Alors, oui, le langage en lui-même n’est peut-être pas le plus esthétique, mais faut bien avouer qu’il fait le boulot. PHP n’est pas là pour gagner un concours de beauté niveau design, il répond à un besoin de façon rapide et accessible, ça tombe bien, c’est tout ce qu’on lui demande. C’est même pour ça que côté serveur : Wikipédia, Facebook ou encore Yahoo tournent en PHP.

Tu tiens encore debout toi ? Tu ne laisserais pas ta place aux petits nouveaux ?

meme PHP

Ça fait plus de 10 ans qu’on entend dire que PHP va passer l’arme à gauche et pourtant, il est toujours là. Malgré le temps et les dernières technologies à la mode, il ne bouge pas, ce qui a tendance à en énerver plus d’un. Le développement web est un milieu où tout le monde investit rapidement sur les dernières nouveautés. Le fait que PHP prenne toujours autant de place sur la toile, c’est vu chez certains développeurs comme un élément qui bloquerait l’avancée d’autres langages. Il y a même une tendance qui s’est créée autour de ça, Le Hype Driven Development”. C’est quoi ? Lorsqu’un dev décide d’utiliser une techno ou un langage en se basant uniquement sur une tendance Twitter, GitHub, ou sur l’avis d’un blogueur populaire, c’est ça. Le problème ? C’est qu’en faisant son choix en fonction de ce qui est considéré comme “cool”, plutôt qu’en faisant des recherches solides et en prenant en compte l’impact que cela pourrait avoir sur le projet, c’est pas forcément bénéfique pour le projet en question.

PHP, c’est lent.

PHP FAUX!Dans les griefs qu’on entend assez régulièrement, il y en a un qui revient souvent : PHP ne serait pas très rapide. C’est complètement faux. Si on se réfère à la première version de PHP, certes, c’était pas une fusée. Mais quand on regarde les avancées : PHP7 est plus rapide que Python et Ruby. Alors, il serait peut-être temps pour certains de mettre à jour leurs infos avant de cracher sur PHP et gaspiller de la salive pour rien. Une fois de plus, la balance penche du côté de PHP et nous montre qu’il est toujours d’actualité. 

C’est un langage à typage faible.

C’est vrai, mais ceux qui utilisent cet argument oublient de dire (ou ne le savent peut-être pas, on leur laisse le bénéfice du doute), c’est qu’avec le type-hinting on peut régler ce problème. 

Bon, là, soit t’as tout compris, t’es carrément d’accord avec nous et tu peux sauter la traduction de ce qu’on vient de dire et passer directement à la partie “Les conflits de classes !”, soit t’as fait une rupture de la paupière en lisant  “type-hinting” et dans ce cas là, on laisse Fabio t’expliquer tout ça.

Le p’tit mot de Fabio

Un langage à typage faible, c’est un peu comme des tupperwares. Tu mets ce que tu veux dedans : potée auvergnate, banana split… C’est pratique, tu peux tout réutiliser à l’infini. Mais en dev, changer le contenu d’un de ces tupperwares, ça peut poser problème. Si par exemple, quelqu’un remplace ton tupp’ avec le banana split par la potée auvergnate, ça ne fait pas le même effet au dessert. Du coup, c’est là que le type-hinting fait son entrée : il permet de recréer des comportements de langage à typage fort. Et là, tu pourras ajouter une étiquette à ton tupp’ à dessert pour empêcher quelqu’un de mettre de la potée dedans.

Les conflits de classes !

Une fois de plus, c’est un reproche qui n’est plus d’actualité. Le problème de conflits de classes a été résolu depuis la version PHP 5.3, avec les namespaces. Besoin d’une explication ? Attends, ne tape pas “tuto conflit de classes”…

Hé, Fabio, tu peux revenir deux petites secondes ? 

Le p’tit mot de Fabio

Les classes sont des outils pour organiser le code, jusque-là, tout va bien. Mais le hic, c’est que plusieurs outils peuvent porter le même nom, ce qui n’est pas franchement pratique pour s’y retrouver. Par exemple, si on dit à PHP “passe-moi le tournevis”, PHP va regarder l’établi, en voir 4, ne pas savoir lequel prendre et va remettre son existence en question. C’est là que les namespaces entrent en jeu. Ce sont des sortes de rangements pour avoir des classes qui portent le même nom, mais sans rentrer en conflit. Et avec eux, on dira plutôt “passe-moi le tournevis rangé sur l’étagère du haut, à côté des ampoules classées que j’aurais dû jeter depuis bien longtemps”. Et là, c’est tout de suite plus clair.