En dehors du titre, le générique masculin est utilisé sans aucune discrimination et uniquement dans le but d'alléger le texte.

Le PHP est le langage le plus utilisé au monde. C’est aussi le plus détesté. Et c’est de la haine pure. Mais pourquoi autant de développeur(euse)s le détestent autant ? Aujourd’hui on va aller jusqu’à l’origine de la haine et on va voir si elle est vraiment fondée.

Touche pas à mon PHP

Si j’ai l’aplomb de t’affirmer que PHP est détesté par le monde entier c’est pas un avis personnel. Je te sors pas ça pour troller. Je sais que c’est mon genre mais là c’est pas le cas. Dans la dernière enquête de stack overflow les développeur(euse)s du monde entier ont mis PHP dans le top 5 des langages les plus craints. La dernière enquête de chez Hired le met carrément en première place des plus détestés. Y’en a plein d’autres c’est accablant et je te parle même pas de ce qui se passe sur Reddit. Si t’es un(e) développeur(euse) PHP depuis 20 ans venu(e) ici en croisade pour me crucifier sur l’autel de Symfony détends toi deux minutes s’il te plait. On est là pour discuter, pose cette arme. Bon maintenant au contraire si tu hais PHP avec passion : prends des pop-corns et assieds toi confort’ t’es au bon endroit.

Bon t’es au bon endroit c’est pas sûr en fait. Il y a quelques années je faisais moi-même du Symfony2. Et j’ai fait ça pendant des années. Et j’aimais bien cette affaire de Symfony franchement c’est pas mal. Y’a très peu de temps j’ai raconté ça à un développeur que j’ai rencontré à un meetup devops. Il était choqué, à deux doigt de vomir, il me regardait comme si j’avais assassiné un nouveau-né. À partir de maintenant je vais l’appeler Jean-Jean pour que ça soit plus simple. Du coup j’ai tout de suite posé une question à Jean-Jean : pourquoi tant de haine ?

Le passé de PHP

Pour comprendre ce qui va suivre il te faut du contexte. Pour ce faire petit retour en arrière. Nous somme en 1994 et Rasmus Lerdorf code rapidement une suite d’outils en C. Cette suite d’outils lui sert à gérer son site web perso. Rasmus il fait ça juste pour sa gueule à ce moment là. Il ne veut pas en faire un langage de programmation. Rien n’est désigné dans cette suite d’outils pour le devenir. Un an plus tard Rasmus publie en open source cette suite d’outils appelée alors : PHP/FI. Et ça ressemblait à ça.

<!--include /text/header.html--> <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->

On est loin de ce que tu utilises aujourd’hui dans ton énorme framework PHP7 pas vrai ? Pourtant tout vient de là. Pour la suite de l’histoire le code est repris par une équipe de dev et PHP/FI2 sort en 1997. En 1998 une partie est réécrite et PHP3 fait son apparition. En 1999 le cœur de PHP est totalement réécrit pour produire Zend. PHP4 suit l’année d’après et PHP5 sort en 2004 avec Zend2. PHP6 est carrément annulé tellement son développement s’est transformé en enfer sur terre. Enfin via une énième réécriture majeur du langage : PHP7 sort en 2015. Je me rappelle qu’a l’époque j’étais tout excité. Mais à la base Rasmus il codait juste son truc dans son coin. En 2003 il fait une interview et raconte des choses incroyables.



“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.”

Inconsistance et mauvais design

Retour en 2019 avec notre ami Jean-Jean du meetup qui vomit PHP comme pas possible. Il a tout de suite commencé à me parler de la syntaxe “dégueulasse” de PHP. Du fait que le langage soit non typé. Du fait que cette “horreur de langage” soit la plupart du temps imprévisible. Que ça soit du côté des retours de fonction ou bien de l’utilisation des opérateurs. Il y a également les inconsistances incroyables du nommage des fonctions. Bref je t’épargne la liste des problèmes techniques car sinon cet article va te prendre la journée à lire.

Si vraiment tu veux tout savoir je t’ai trouvé la personne la plus énervée du monde contre PHP qui déverse sa haine sans retenue. Non, en fait je crois que celui qui déteste le plus PHP c’est lui en fait. Des articles comme ça y’en a 1 milliards sur les internets. Et ils valident tous pas mal ce que me disait Jean-Jean. Les développeur(euse)s détestent PHP car c’est un langage techniquement inconsistant avec un mauvais design. Quand on le compare à d’autres langages le contraste est flagrant. Si après la lecture de ces deux articles tu ne peux pas avouer que PHP a des problèmes alors c’est que c’est devenu ta religion. Et j’ai arrêté d’essayer de convaincre des fanatiques.

En PHP c’est très facile de coder quelque chose avec son cul. D’autres languages ont beaucoup plus de restrictions et empêchent les libertés et les facilités. Le meilleur exemple ici est le fort typage présent dans beaucoup de langage. On voit aussi beaucoup de problèmes de sécurité avec PHP. Et le problème est le même : c’est très facile de faire du code non sécurisé avec PHP. Mais PHP n’est pas un trou de sécurité si on fait les choses proprement. Les développeur(euse)s détestent PHP car tu es plus susceptible d’avoir des erreurs avec un langage qui laisse autant de liberté. Et les bugs dans du spaghetti code PHP c’est pas la joie. Surtout quand grand nombre de ces utilisateurs sont des débutants du fait de la facilité d’accès de PHP.

Victime de son succès

Il y a un autre facteur important dans cette haine ambiante. Les développeur(euse)s détestent PHP car il est utilisé partout. Ce blog tourne sur du PHP7. Comme la majeure partie du web j’ai juste besoin d’hoster une page dynamique qui est ensuite cachée en HTML statique. Mon blog c’est pas Amazon. Et du coup PHP ça fait la job comme on dit au Québec. Oui le langage en lui même n’est pas le meilleur. Oui il y a plus joli. Mais on s’en fout en fait. Ca répond à mon besoin de façon rapide et accessible. Et c’est également pour cette raison que 80% du web tourne en PHP.

Quand j’ai expliqué la même chose à Jean-Jean il a commencé à bouillonner. Comme toi et moi Jean-Jean a des amis et de la famille. Ces gens lui demandent fréquemment de l’aide pour leur site pro et perso. Devine quelle langage revient toujours sur les sites de ces connaissances ? Du coup Jean-Jean il se retrouve de temps à autre à devoir changer des choses en PHP. Et ça, ça lui file un mal de tête incroyable.

Avec l’avènement de WordPress qui domine littéralement les Internets Jean-Jean a pas fini de rager. En passant je te parle comme si ce langage savait que chier un blog comme le mien, mais pas du tout ! Facebook, Wikipedia, Yahoo, Flickr, Tumblr tous ces sites tournent en PHP et accueillent des millions d’utilisateurs tous les mois et des milliers de façons concurrentes sans broncher. PHP fait ça très bien et il le fait depuis longtemps.

Vieux de la veille

Ca fait 10 ans que t’entends que PHP va mourir. Pourtant il est toujours là. Malgré le temps et les dernières technologies hypes il ne bouge pas. Les développeur(euse)s détestent PHP car c’est le contraire du hype driven development. Dans un métier ou tout le monde investit rapidement sur les dernières nouveautés, PHP est un vieux monsieur qui ne veut pas vendre son terrain. Un vieux monsieur qui continue à danser de façon insolente avec ces 80% d’occupation du web.

The reports of my death are greatly exaggerated. pic.twitter.com/dFTe63T4pG — php.net (@official_php) August 14, 2019

Bref en tout cas ma discussion avec Jean-Jean continue normalement et tout d’un coup il me dit quelque chose de complètement choquant tellement c’est faux. “En plus de ça PHP est de très loin le langage le plus lent de tout ce que tu trouve pour faire du web”. Quand il a dit ça j’ai compris que Jean-Jean avait pas fait sa veille depuis longtemps.

PHP évolue, pas sa réputation

Dans la tête de beaucoup de développeur(euse)s, PHP est resté en version 4. À l’époque ou le langage était instable, où la performance était désastreuse et où la POO était inexistante. Les développeur(euse)s détestent PHP car ils sont persuadés que le langage stagne depuis 20 ans. Quand tu connais PHP aujourd’hui et tous les frameworks qu’ils l’entourent force est de constater qu’on est loin de PHP4.

PHP7 est plus rapide que Python et Ruby. Le langage peut être fortement typé si tu le souhaites. Le tooling évolue aussi avec des analyseurs statiques qui sont apparus ces dernières années. Les frameworks comme Symfony ou Zend forcent les bonnes pratiques. Une nouvelle version est release tous les ans avec un agenda bien précis. D’ailleurs PHP7.4 arrive bientôt et promet encore plus de performance. Encore une fois je vais pas te faire la liste de tout ce qui se passe dans le PHP moderne par soucis de longueur. Si tu veux tout savoir je t’invite à consulter cet article qui va t’ouvrir les yeux sur PHP en 2019. Il est temps de nuancer ton regard haineux qui date de 2003 sur un langage qui n’a plus rien à voir avec ce qu’il était.

Si je fais cet article c’est aussi pour ouvrir les yeux aux gens qui n’ont pas touché à PHP depuis longtemps et qui ont une haine aveugle envers le langage. Les développeur(euse)s détestent PHP car c’est cool de détester PHP. Ce langage continue à se trainer cette réputation de language monstre alors qu’il s’agit d’un langage comme les autres. Avec certes un fort legacy et pas mal de problème mais avec autant de forces.

Épilogue

La plupart des développeur(euse)s qui détestent PHP le détestent par élitisme ou par ignorance. Dans les deux cas c’est débile. Il faut choisir une technologie par rapport à son besoin. PHP est fortement utile et performant dans de nombreux scénarios. Et le sortir de l’équation seulement à cause de sa réputation est aussi con que désespérant. Et y’a plein de gens désespérants.