PHP : un langage, des utilisateurs aux besoins très différents

21 avril 2015php
 Cet article a été rédigé il y a plusieurs années et peut ne plus être tout à fait à jour…

Il m’arrive régulièrement de discuter de PHP1 et de son évolution avec d’autres développeurs, que ce soit au bureau, lors d’événements communautaires comme les Apéros PHP ou les ForumPHP/PHPTour, ou même plus simplement par mails ou messageries instantanées.

Assez fréquemment, ces développeurs veulent voir le langage (et son écosystème) continuer à mûrir, à se professionnaliser : ils souhaitent du typage statique, des espaces de noms, du type-hinting (ou type-enforcing) sur les paramètres de méthodes ou leur valeur de retour, des générateurs, des annotations intégrées au langage, … Bref, plein de fonctionnalités qui nous – moi y compris – simplifieraient grandement la vie et nous permettraient de tirer le meilleur parti du langage que nous manipulons.

Toutefois, nous oublions souvent que nous ne sommes pas les seuls utilisateurs du langage PHP. Pour moi, en généralisant un peu et simplifiant beaucoup, on pourrait aller jusqu’à distinguer quatre catégories d’utilisateurs de notre langage. Et chacun de ces types d’utilisateurs peut avoir des besoins différents des autres !


Les débutants en programmation (et en PHP)

Une des grandes forces de PHP depuis sa naissance, et sans aucun doute la principale raison de son succès, est que PHP et son écosystème ont pendant longtemps été extrêmement accessibles aux débutants en programmation voulant faire un peu de web.

Cela se traduit à travers plusieurs points, dont notamment :

  • La gratuité, que ce soit pour de nombreux outils de développement2 ou hébergements3.
  • La facilité d’installation, de configuration et d’exécution :
    • Au niveau du poste de travail – avec, par exemple, des outils comme EasyPHP ou WAMP qui permettent d’installer une stack PHP+MySQL en trois clics sur « suivant », sans même avoir à comprendre comment ça fonctionne4.
    • Au niveau du déploiement : il suffit d’un glisser-déposer dans un client FTP, sans avoir à redémarrer un serveur d’application ou quelqu’autre lourdeur du même type.
    • Et au niveau de l’exécution : il suffit d’appuyer sur F5 pour constater l’effet du code que l’on vient d’écrire ou de déployer !
  • L’existence de nombreux tutoriels5, ainsi que d’une documentation officielle claire et en très grande partie traduite en français.

Pour un débutant, PHP doit être un langage simple : plus le langage se complexifie (par l’ajout de fonctionnalités), plus il devient difficile à prendre en main.

Même si les nouveautés de chaque version ne sont pas obligatoires et qu’il est possible de développer sans les utiliser, elles constituent autant de points qui sont susceptibles de provoquer des moments de confusion et de frustration lors de lecture de tutoriels, d’exemples de code, ou même de documentations.

PHP a été le premier langage orienté web que j’ai appris – l’autre langage que je connaissais à ce moment là est le C, qui n’est pas de bien haut niveau et ne s’encombre pas de certaines lourdeurs modernes6. Si, à l’époque, pour entrer dans PHP, il avait fallu que je me débatte avec les closures, les espaces de noms, les générateurs, composer ou symfony… Je ne sais pas si je ne me serais pas plutôt mis aux CGI7 ^^


Les amateurs

Une partie des débutants se prend au jeu, sans pour autant devenir professionnels comme beaucoup d’entre-nous l’ont fait – et deviennent alors ce que j’appelle des développeurs amateurs. Cette appellation regroupe pour moi ceux dont le développement n’est pas le métier, mais qui en savent assez pour oser mettre en place des scripts ou de petites applications répondant à leurs besoins.

Comme exemple assez marquant, j’avais un collègue il y a quelques années qui était product owner : son métier n’était pas le développement, mais il avait suivi quelques cours de JAVA et PHP à l’école et travaillait dans une entreprise où il côtoyait quotidiennement nombre de développeurs. Il se débrouillait suffisamment bien en PHP pour développer des scripts lui permettant d’automatiser certaines tâches (détection de mise à jour et téléchargement de documentation, parsing de fichiers CSV pour en extraire les valeurs importantes, …) qu’il aurait autrement dû effectuer manuellement. Sans pour autant avoir un compilateur dans la tête, il était capable de comprendre la structure d’une portion de code et ce qu’elle faisait dans les grandes lignes – ce qui facilitait d’autant les échanges avec les développeurs de son équipe !

PHP est à mes yeux un bon langage pour ces amateurs : sa simplicité d’utilisation (cf ce que je disais plus haut pour les débutants), combinée à sa verbosité ainsi qu’à sa souplesse (au niveau du typage, notamment), en font un outil bien adapté aux besoins de personnes qui souhaitent automatiser des tâches, sans que le développement ne soit pour autant leur métier. En contrepartie, cette souplesse peut parfois être à double tranchant, puisqu’elle encourage trop souvent des pratiques de développement peu sûres, notamment au niveau de ce qui est sécurité.

Pour PHP lui-même, le juste-milieu est difficile à trouver pour les développeurs amateurs : ils ont des notions, parfois bonnes, en programmation et sont capables de comprendre des concepts assez avancés – à condition que ceux-ci arrivent graduellement et ne masquent pas la simplicité du langage en le rendant moins accessible.


Les utilisateurs et intégrateurs de logiciels

Ma troisième catégorie de développeurs est composée de ceux qui partent de logiciels existant (assez typiquement, des CMS comme Drupal ou Wordpress) qui répondent au gros de leurs besoins et tirent profit de l’extensibilité de ces outils pour développer des modules complémentaires répondant aux quelques pourcents de leurs besoins qui ne sont pas couverts de base.

En fonction de l’outil choisi, les développements peuvent être assez cadrés, rendant difficile (ou décourageant, ne serait-ce que par leur non-utilisation dans le cœur de l’outil) l’utilisation de certaines fonctionnalités récentes. De plus, des contraintes de compatibilité avec de vieilles versions de PHP peuvent être souhaitées pour les modules qui sont destinés à être diffusés auprès de la communauté.

En fonction de leur niveau d’expérience, des fonctionnalités qu’ils souhaitent développer (faut-il personnaliser beaucoup ou peu ?), ainsi que de leur volonté ou non de diffuser ceux-ci à un large public, les développeurs de modules pour ces logiciels vont avoir tendance à exploiter ou non les fonctionnalités avancées de PHP8.

Pour ce public cible, qui compte nombreux professionnels, un langage qui évolue peut faciliter le travail sur le long terme, même si ces évolutions requièrent parfois une passe de formation : celle-ci sera probablement amortie au bout d’un moment. Cela dit, le langage doit rester stable, et ne pas subir une révolution tous les ans !


Les développeurs (PHP) full-time

Le dernier groupe de développeurs que j’ai retenu pour cet article est composé de ceux dont le développement est le métier principal – considérant mon lectorat habituel, il y a de bonnes chances pour que vous soyez dans ce cas.

Pour beaucoup de développeurs à plein temps, chaque nouvelle fonctionnalité, chaque évolution, est susceptible de nous faire gagner du temps ou d’aider à améliorer la qualité de nos projets : manipulant PHP au quotidien, que ce soit dans un contexte pro ou en dehors, le temps investi à expérimenter avec les usages d’une évolution sera rapidement amorti ! C’est par exemple souvent ici que sont regroupés ceux qui voudraient plus de typage statique, plus de type-hinting, ou encore ceux qui regardent avec un certain intérêt les spécificités du langage Hack.

Le plus souvent, les développeurs PHP avec qui je discute d’évolution du langage font partie de ce dernier groupe – et oublient qu’ils ne représentent qu’une (petite) partie des développeurs qui manipulent PHP ! Même si c’est peut-être celle qui a le plus tendance à s’exprimer dans la communauté ?


Et PHP dans tout ça ?

Au milieu de ces quatre types d’utilisateurs, l’évolution de PHP est tiraillée entre des besoins très différents :

  • D’un côté, le langage doit évoluer et continuer à se professionnaliser, pour répondre aux besoins de ceux d’entre nous qui l’utilisent tous les jours, sur des applications importantes, où la maintenabilité et l’évolutivité sont primordiales. Et des très gros progrès ont été fait ces dernières années !
  • Mais, d’un autre côté, le langage doit rester fidèle à son image de facilité et d’accessibilité : sans débutant hier, PHP n’aurait jamais eu la place qu’il a aujourd’hui. Et sans débutant aujourd’hui, PHP ne conservera pas sa place actuelle.

Au-delà des dimensions politiques et de maintenabilité de PHP en lui-même, ces deux points de vue, souvent opposés, se retrouvent fréquemment lors des discussions autour de propositions de fonctionnalités au sein du langage – et sont parfois une explication au fait que certaines évolutions, qui pourraient sembler indispensables à un groupe ou inimaginables à l’autre, passent ou non.



  1. PHP au sens large : le langage et son évolution, l’écosystème applicatif, les frameworks et bibliothèques, les outils, la qualité, … ↩︎

  2. Pour développer en PHP, un éditeur de texte suffit – même si, avec le temps et l’expérience, on aura souvent tendance à se tourner vers des environnements plus complets. ↩︎

  3. Ça se fait peut-être moins maintenant qu’il y a quelques temps (ça fait un moment que je ne me suis pas posé la question), mais avant, on trouvait des hébergements PHP gratuits un peu partout. ↩︎

  4. Comprendre comment une pile serveur web + langage côté serveur + base de données fonctionne est important lorsque l’on souhaite progresser vers du développement plus poussé… Mais est-ce qu’un débutant a réellement besoin de comprendre ces notions dès qu’il se lance ? A mon avis, non : il y a plus intéressant (et plus fun !) à voir avant ! ↩︎

  5. J’admets : le problème avec de nombreux tutoriels est qu’ils sont vieux, pas forcément mis à jour avec les bonnes pratiques de développement, parfois bourrés d’erreurs et de références à des fonctions obsolètes ou à des pratiques dépassées (y compris dans des tutoriels récents) – donnant ainsi parfois de mauvaises habitudes aux développeurs débutant qui les suivent souvent aveuglément. ↩︎

  6. En fait, lorsque j’ai commencé à apprendre le PHP, ce langage pouvait presque être comparé à du C (en supprimant le gros de la gestion de la mémoire, ce qui simplifiait bien les choses). En particulier, il n’y avait pas, en PHP, d’orientation objet et de tout ce qui va avec ! ↩︎

  7. J’ai fait un peu de Perl dans ma jeunesse, et j’aimais beaucoup en écrire (en relire, par contre, c’est autre chose). Si me mettre à PHP avait semblé plus complexe que fouiller l’écriture de CGI en Perl, je ne me serais peut-être pas mis à PHP ! ↩︎

  8. J’ai il y a quelques années eu l’occasion de développer plusieurs modules un peu complexes pour Drupal 6 (qui n’était lui-même pas vraiment « orienté objet ») – et je n’ai pas hésité à tirer profit des fonctionnalités avancées du langage. ↩︎