PHP fête ses 25 ans avec un nouveau bond de performances à l’horizon

Nicolas Furno |

C’est le 8 juin 1995 que Rasmus Lerdorf a annoncé publiquement l’existence de la version 1.0 de PHP. Cela fait donc 25 ans que ce langage de développement omniprésent sur le web existe, 25 ans aussi qu’il se traine la réputation d’être un mauvais langage. Pas forcément pour une mauvaise raison, d’ailleurs, puisque le PHP n’a jamais été pensé à l’origine pour tout ce qu’on lui a fait faire par la suite.

Rasmus Lerdorf a choisi le nom de PHP pour « Personal Home Page ». Ce petit projet personnel devait uniquement servir à créer des pages web à partir de modèles (templates). Chaque modèle contenait du HTML augmenté de quelques lignes de PHP, par exemple pour chercher une information dans une base de données et remplir la page web finale. Il faut dire que dans les années 1990, la seule alternative à la production de pages web « à la main » était d’écrire du code en C et ce projet a considérablement simplifié le processus.

Mais comme son créateur l’a reconnu par la suite, son idée de base était que le PHP servirait uniquement à la mise en page du site et le reste devait toujours être écrit en C. Sauf que personne ne voulait coder des sites web en C et au contraire, tout le monde voulait utiliser PHP pour tout faire sur les serveurs. Pour répondre à cette demande, les fonctions ont été ajoutées au fil des mises à jour, mais toujours sur cette base simple et sans aucune réflexion d’ensemble.

C’est la source de la mauvaise réputation de PHP, un langage de développement qui n’a pas eu de spécification formelle avant 2014, près de vingt ans après sa création. Plusieurs nouveautés majeures ont été ajoutées après coup, à l’image des concepts de programmation objet qui sont arrivés avec PHP 5. Cette accumulation de fonctions et son approche très simple qui a permis à de nombreux développeurs pas toujours expérimentés d’écrire du mauvais PHP ont conduit à des performances souvent désastreuses et d’énormes failles de sécurité.

Depuis quelques années, les concepteurs de PHP travaillent néanmoins à corriger ces défauts originels. Avec PHP 7 sorti en décembre 2015, les performances ont connu un bond en avant impressionnant. Et ce n’est pas fini : PHP 8 qui devrait sortir à la fin de l’année permettra de doubler à nouveau les performances dans certains cas. La grosse nouveauté sera la compilation « JIT » (Just In Time) qui compilera à la demande le PHP en code machine x86 et pourra ainsi accélérer les traitements.

Graphique adapté de celui publié par @php_swoole.

Les gains réels dépendront du type d’opération réalisé, ils devraient surtout se retrouver sur les opérations les plus lourdes, notamment celles qui reposent sur des calculs mathématiques. Malgré tout, c’est intéressant de voir que le langage le plus utilisé sur le web est en train de devenir un champion des performances. Mais même si ses créateurs avancent rapidement, ses utilisateurs ne bénéficient pas toujours des dernières nouveautés.

On estime que près de 80 % des sites web reposent aujourd’hui sur PHP, dont un bon tiers environ uniquement grâce à WordPress. PHP 5 continue toutefois d’être utilisé par quasiment la moitié de ces sites et même pour ceux qui ont mis à jour, la majorité est encore en version 7.2 ou antérieure, alors que l’on en est à la 7.4. Et puis même si les serveurs sont à jour, les apps installées sur les serveurs exploitent encore rarement les nouveautés du langage.

WordPress, pour en revenir au plus gros CMS sur le web, commence tout juste à envisager de mettre à jour son code pour PHP 7. Jusque-là, les développeurs assuraient une rétro-compatibilité jusqu’à PHP 5.2 qui les empêchait de bénéficier des dernières innovations. Autant dire qu’il reste encore un gros travail pour que l’immense base de lignes de code qui forme WordPress soit entièrement mise à jour.

Pour aller plus loin :
Source
Tags
avatar julien74 | 

Comme tout langage, on peut mal programmer avec n’importe quoi.
Il n’y a pas de typage en PHP, mais rien n’empêche de se faire ses propres fonctions pour vérifier / filtrer les donnees.
On peut écrire un code impossible à lire en C++ si on utilise les expressions ternaire et et aussi des objets manipulant des redéfinitions des opérateurs avec des classes avec template
On peut faire du code java avec des fuites mémoires a foisons
Etc...

avatar mszy | 

@julien74

"Comme tout langage, on peut mal programmer avec n’importe quoi."

La principale différence, comme dit dans l’article, c’est que dans d’autres langages, on peut bien coder, si on respecte les règles etc.

Les règles en PHP sont sorties en 2014 (bien après son utilisation intensive) et le langage n’a pas été réfléchie pour être bien utiliser dès le début...

avatar julien74 | 

@mszy

Le Ç t’oblige au typage
Le PHP te laisse libre de faire ce que tu veux. Un bon code ou un mauvais.
Après en activant les notice dans les Log quand tu n’as plus rien en log même à ce niveau de verbosité, ça veut dire que ton code est pas trop mal et finalement, pas loin de ce qu’oblige un langage moins permissif.

avatar mszy | 

@julien74

Faux, déjà les logs dont tu parles sont arrivés très tardivement, et quand un langage est créé pour faire une petite page web « personnelle » et que tu l’utilises pour en faire un énorme site, forcément tu ne peux pas faire quelque chose de propre.

Si tu veux une analogie, le bois c’est très bien, ça permet de faire facilement des meubles, des objets, .... par contre, si tu veux construire un hôtel avec, ça va être très compliquer (pas impossible) de faire en sorte qu’il soit solide, robuste et qu’il tienne dans le temps.

avatar julien74 | 

@mszy

En restant sur ton analogie, on peut parfaitement faire un hôtel en bois. Il y a des projets pour faire des immeubles en bois d’ailleurs, avec des avantages à ce systèmes: fabriquer les éléments en amont... pour moi je ne vois pas l’incompatibilité

Pour ce langage c’est pareil, il a débuté pas du tout dans l’optique de faire 3 trucs tout pourri pour renforcer le HTML. Ses fonctions de manipulation de string et de tableau est complètement farfelu car l’ordre des paramètres c’est du n’importe quoi.
Mais voilà.

avatar bonnepoire | 

Pour ce langage c’est pareil, il a débuté pas du tout dans l’optique de faire 3 trucs tout pourri pour renforcer le HTML. Ses fonctions de manipulation de string et de tableau est complètement farfelu car l’ordre des paramètres c’est du n’importe quoi.
Mais voilà.

Ta phrase aussi est farfelue...

avatar julien74 | 

@bonnepoire

Explicite

avatar mszy | 

@julien74

J’ai bien précisé que c’était possible de faire un hôtel en bois, mais il faut être un génie et ce n’est pas à la porté de tout le monde.

Alors effectivement, je veux bien émettre la possibilité qu’un génie sache faire un gros projet propre en PHP...

Mais s’il faut être un génie pour faire un bon programme en PHP, n’est ce pas le signe d’un problème ?

avatar julien74 | 

@mszy

Pas besoin d’être un génie pour faire un gros projet en PHP. Il faut juste de la rigueur. Bien programmer quoi.

avatar mszy | 

@julien74

"Pas besoin d’être un génie pour faire un gros projet en PHP. Il faut juste de la rigueur. Bien programmer quoi."

C’est mon opinion et mon expérience personne en tant que dev C++, j’ai vu beaucoup (trop) de projets être abandonnés au milieu parce que prototyper avec du PHP c’est facile, mais sortir une application fonctionnelle et efficace, beaucoup moins.

avatar dorninem | 

@julien74

Le pire étant sûrement Visual Basic 🙄
Javascript aussi, pas TypeScript.
J'avais assisté à une conf Microsoft Expérience sur l'informatique quantique avec un slide top
'Javascript est-il quantique ?'
'Les variables sont dans une superposition de string, number,boolean, object ou fonction. Et vous n'avez aucune idée de ce qu'il y a dedans tant que vous ne mesurez pas'
😁😊

avatar mszy | 

@dorninem

Apparemment, ils n'ont absolument pas pris en compte ça quand ils ont conçu le C# alors...

avatar Marius_K | 

Joyeux anniversaire PHP !!!

Personnellement c'est le premier langage de programmation que j'ai appris et je l'adore !
Certes il est très facile de faire des choses atroces en php mais si on se donne un minimum la peine d'apprendre comme il faut on peut faire des programmes très puissants et très sécurisés !
Et comme le dit @julien74 on peut faire de la mauvaise programmation avec n'importe quel langage...

avatar mszy | 

@weagt

"Et comme le dit @julien74 on peut faire de la mauvaise programmation avec n'importe quel langage... "

Oui, mais peut-on faire de la bonne programmation avec tous les langages ?

avatar julien74 | 

@mszy

La bonne programmation est dans les mains de ce qui se trouve à l’interface chaise clavier...
Le Java qui est un très bon langage avec des notions objets que l’on ne voit ps partout peut faire des programmes pourris avec des fuites mémoires de partout. Ou de très bons codes scientifiques entre les mains de bons scientifiques

avatar mszy | 

@julien74

Ce n’est pas du tout le sens de ma phrase. Le Java est un langage adapté pour de gros projets.

Le Perl par exemple ne l’est pas du tout, tout comme le bash. Effectivement on peut faire des gros projets avec, mais est-ce qu’ils seront bien fait ? Est-ce que la probabilité qu’il soit bien fait n’est pas très proche de 0 ?

avatar julien74 | 

@mszy

Avec le bash certainement...

Je suis juste furieux contre ceux (pas contre toi) qui décrète que le PHP n’est pas un langage sérieux et capable de gros progrès.
Tout est question de la qualité du code, et donc du codeur, des briques logicielles utilisées etc...

Pour avoir programmé en PHP entre autre un meta moteur de DB, entièrement fait en Objet, je peux soutenir que le PHP tient la route.

avatar mszy | 

@julien74

Le PHP est un langage sérieux mais qu’il faut utiliser pour ce qu’il est.

Par curiosité, ton projet de meta moteur, il est utilisé quelque part ?

avatar julien74 | 

@mszy

Dans la boîte dans lequel je l’avais conçu. Le besoin etsit de pouvoir stocker tout type d’infos dans des « tables » sans avoir à toucher au schéma de la DB. Tout se faisaient dynamiquement dans le navigateur
Mais du coup j’ai du concevoir une couche de DB « virtuelle » au dessus de mysql.

avatar bonnepoire | 

@ mszy
Tu as beau critiquer mais essaie de faire un site en asp qu'on rigole. L'usine à gaz n'est pas celle qu'on croit.

avatar mszy | 

@bonnepoire

Ton argument ici est vraiment de comparer quelque chose avec quelque chose de pire ?

Genre « c’est pas bon » « oui mais essaye de manger du caca pour voir »... ;)

avatar hartgers | 

@mszy : La question initiale est à prendre au second degré je suppose. N'empêche. Comme dans toute discipline, tout outil ne peut pas tout faire. Peut-être qu'un savant fou parviendra à faire de la belle programmation avec un langage inadapté, mais ce sera au prix de concessions, de sacrifices et de difficultés qu'il aurait été possible de s'épargner. S'écharper pour savoir quel est le pire langage dans telle situation n'a pas de sens, car les outils ont tous leurs potentiels et limites. Donc oui, dans l'absolu on peut produire avec n'importe quel outil, mais peut-être que ce sera plus élégant et plus facile avec un outil plus adapté. Cherchez bien et vous trouverez cette discussion dans tout domaine où l'outil technique a une grande importance (photographie : jetable/portable/reflex ; musique : ordinateur/matériel de studio). On peut fabriquer une maison avec ses mains et de l'argile. Le fait d'avoir recours à des grues, des banches et du béton pour un immeuble n'invalide en rien les qualités de la maison en argile, et inversement. Si par contre j'essaie de faire un immeuble en argile avec mes mains, je vais être confronté à d'énormes problèmes, et peut-être qu'en cherchant bien, je trouverai des solutions (et certaines civilisations ont déjà répondu à ces problèmes collectivement). Bref, l'important c'est le résultat et sa pertinence. Sachant que faire des choses avec un matériel inadapté produit de belles surprises, comme faire de la musique avec des lecteurs de disquettes de Macintosh : https://www.youtube.com/watch?v=Oym7B7YidKs

avatar mszy | 

@hartgers

Tu résumes pas mal ma pensée ;)

avatar Un Type Vrai | 

Ton argument, c'est vraiment :
"PHP est le mal, donc on peut faire des choses bien avec du mal, mais utilisez Java plutôt ?"

Moi je dis que si on regarde un projet un peu sérieux avec son propre framework et vieux en PHP, disons Typo3 pour prendre un nombre de feature et de ligne de code important, on va vite voir que très tôt, il y a eu des guideline pour développer.
Il y avait un framework sous Typo3 AVANT les classes php.

Prenons un exemple plus jeune : Drupal migre bien d'un framework interne à un framework en PHP...

En résumé, la "faiblesse" dans le langage (que tu vois) a été une véritable force pour faire émerger des bonnes pratiques, des conventions, du nomage etc.
Et depuis que PHP publie des recommandation, Symphony (donc Drupal), Typo3 et autres les adaptent rapidement.

Il reste des incohérences etc. Mais qui a connu php4 ne peut que saluer la direction du langage et sa bonne tenue.

avatar Rom 1 | 

@hartgers

👏👌

avatar mk3d | 

Il y a des bons et des mauvais chasseurs...

avatar iDanny | 

Bah au final, toutes les briques de base du web n’ont pas été prévues pour faire autant de choses que ce qu’on fait avec encore aujourd’hui.

Ça me rappelle un prof d’info en 1998 qui nous expliquait qu’il ne voulait pas recevoir de pièces jointes par mail, car c’était une horreur non prévue dans les RFC et que ça surchargeait les boîtes mails 😬
Dans le fond il avait raison le coquinou... allez dire ça à ceux qui s’envoient des vidéos par mail de nos jours 😅

avatar julien74 | 

@iDanny

C’est ça, le protocole smtp n’a pas du tout été pensé pour envoyer des.... vidéos.
Comme le créateur du HTML n’avait pas conscience que l’on concevrait des pages dynamiques avec jquery...

avatar rbhack | 

“Source: Michel Tsai”

Sacré Michou ! Le plus français des américains 😂

avatar Nicolas Furno | 

@rbhack

🤦‍♂️

Corrigé, merci !

avatar rbhack | 

@nicolasf

🙏👍

avatar Antwan | 

Ça reste une crasse.
Ceux qui soutiennent PHP en 2020 ne se sont jamais donné la peine de se mettre sérieusement à un autre langage.

Go, Ruby, Python, Scala, voire même .NET ou java, les exemples ne manquent pas pour faire du backend web plus proprement.
Quiconque a essayé quelque chose d’autre sur de vrais projets ne peut soutenir ce boulet qu’est PHP.

avatar julien74 | 

@Antwan

C’est aussi comme toute nouvelle chose à prendre en main, un compromis entre faire ce que l’on a besoin (en temps non illimité) en 5mn en php ou alors passer 1j pour la même chose avec un langage que l’on découvre...

avatar Un Type Vrai | 

Ceux qui ne sont pas de ton avis sont des ***s ?
Si tu veux.
Par contre, Go, Ruby, Python, Scala, voire même .NET ou java sont du pipi de chat face à Eiffel.
Et là, tu n'auras aucun argument.
(tu défends .NET et Go, vraiment ?)

Ruby, les gens ont essayé 2-3 ans et ont tous abandonné avec RoR.

Il y a de très complet, cohérent et performant framework en php malgré les nombreux défauts du langage. Les développeurs qui font du Drupal ne codent pas en php ... (en fait, il y a bien longtemps que personne ne fait du php de base).

avatar julien74 | 

@Un Type Vrai

Je suis bien d’accord que si on enleve ceux qui utilisent les frameworks PHP tout fait, il doit pas rester un grand nombre de vrais développeurs en PHP...(c’est à dire qui savent faire et comprendre un accès mysql, accès fichier, programmation objet, classes abstraites, méthodes statiques etc.....)

avatar Christophe Durandeau | 

@julien74
Je dois faire partie de ceux là alors. Peut-être parce que j’ai presque 50 balais, que lorsque j’etais ado je codais en assembleur et qu’au final je ne suis qu’un vieux con 🧐
Plus sérieusement, j’ai horreur des frameworks type Symphonie que je trouve hyper lourds.
Je code mes sites en pure php, avec un modele MVC. Je trouve que c’est un langage très souple, qui permet de prototyper très rapidement quelque chose à montrer au client.
J’ai conçu des projets de dizaines de milliers de lignes de php (hors html, css, etc) et ça tient la route.
Mais peut-être que pour de très gros projets on arrive aux limites de l’outil.

avatar julien74 | 

@Christophe Durandeau
Je programmais en assembleur sur hp48 donc voilà...

Pareil je trouve ces outils trop lourds et/ou j’ai jamais fait l’effort de les utiliser.
A la place j’ai mes propres classes mysql, gestion de formulaire, session par stockage en DB, gestion d’arbre, performance de code, qui marchent niquel depuis 15 ans.
Et je fait du MVC sans le savoir comme Mr Jourdain faisait de la prose.
Php tient parfaitement la route. Langage clair, syntaxe lisible, et ne permettant pas des délires syntaxiques comme le Perl, bonne POO, interface avec des éléments extérieurs...
je hais le powershell, pour un langage moderne et crée de toute pièce , de devoir écrire des -eq dans un if est une connerie à mon sens.

avatar R5555 | 

Bien content d'avoir pu coder salement avec un langage sale des pages web sales sans formations. J'ai dans l'idée que c'est un peu ça le web aussi.

avatar ideclik | 

« WordPress, pour en revenir au plus gros CMS sur le web, commence tout juste à envisager de mettre à jour son code pour PHP 7. Jusque-là, les développeurs assuraient une rétro-compatibilité jusqu’à PHP 5.2 qui leur empêchait de bénéficier des dernières innovations. Autant dire qu’il reste encore un gros travail pour que l’immense base de lignes de code qui forme WordPress soit entièrement mise à jour. »

Oh mon dieux... ce qu’il ne faut pas lire.
https://wordpress.org/support/article/requirements/

avatar Nicolas Furno | 

@ideclik

Ben quoi ? 🤔

Je n'ai pas écrit qu'il fallait PHP 5.2 pour faire tourner WordPress, je parle du code source du CMS. Et j'ai même glissé un lien, pour en savoir plus sur le sujet.

avatar ideclik | 

@nicolasf

Oui mais la phrase est (selon moi) très tendancieuse.
WordPress et 100% compatible PHP7 et ce n’est pas la conclusion que j’en tire à la lecture de l’article.
Le code de WordPress est à jour pour PHP7, juste que certaines fonctionnalités propres à cette version ne sont pas intégrées 👌🏻

avatar Pkoka | 

Il manque un chiffre aux 3 premières barres du graphique.

avatar Nicolas Furno | 

@Pkoka

Mais tout à fait ! 🤦‍♂️

Ils sont absents sur le graphique original, j'ai corrigé en mettant un zéro de plus à chaque fois. Désolé, en plus je voulais corriger ce matin et j'ai oublié au moment de publier.

avatar vince29 | 

Et accessoirement une échelle. Choux-fleurs par km ?

avatar Nicolas Furno | 

@vince29

Yep, c'est un autre problème. J'aimerais avoir la réponse, mais l'auteur du graphique ne l'a pas donné.

C'est sûrement le résultat d'un bench PHP quelconque, il y en a un paquet qui traine.

avatar Pkoka | 

Pas de soucis, très bon article au passage, merci à toi.

avatar yayel2 | 

Euh dans les années 90 on faisait surtout du Perl pour le web, pas du C.

avatar jackhal | 

PHP 7.4 est très bon. Un truc qui a tout changé :
https://stitcher.io/blog/typed-properties-in-php-74

avatar julien74 | 

@jackhal

Punaise le typage, trop bon.... ça évite de scruter les notice dans les logs au moment du dev....!

avatar deodorant | 

Chez les hébergeurs mutualisés parfois on a pas beaucoup le choix et php reste incontournable... je croyais que WordPress avait adopté la version 7?

Pages

CONNEXION UTILISATEUR