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 weagt | 

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

👏👌

Pages

CONNEXION UTILISATEUR