La parole est aux speakers : Baptiste Langlade

Publié le

Jusqu’au Forum PHP 2025, retrouvez nos interviews de speakers pour mieux comprendre leur parcours et le sujet qu’ils ou elles aborderont lors de leur conférence !

La conférence

Et si le futur de la programmation concurrentielle avait déjà 50 ans ?

Les projets PHP ont beaucoup évolués avec le temps et on gère de plus en plus de cas d'usages.

On est maintenant coutumier de gérer des tâches lourdes, ou longues, dans nos projets. La solution est souvent la même : l'utilisation de systèmes de queues (tel que RabbitMQ) pour les traiter en tâche de fond.

La partie technique est un sujet maintenant bien maitrisé. Mais la partie logique nous expose encore à toute une série de problèmes :

  • sous-utilisation des ressources, comment faire en sorte que les workers ne passent pas la majorité de leur temps à attendre que d'autres actions finissent,
  • gestion de la priorité, comment faire en sorte qu'une tâche ne monopolise pas tous les workers,
  • gestion de la concurrence, comment faire en sorte que les workers ne se marchent pas sur les pieds.

On reste confronté à ces problèmes car on perpétue les modèles de programmation qu'on a toujours connus en PHP, à savoir la programmation synchrone.

Mais le reste de l'industrie y est confronté depuis un moment et y a répondu. La réponse se trouve dans un paradigme inventé il y a plus de 50 ans : l'Actor Model. Une approche de la programmation concurrentielle.

C'est un modèle très peu connu dans le monde PHP et pourtant vous l'utilisez probablement déjà indirectement à titre personnel ou professionnel. En effet c'est le modèle à la base de WhatsApp et RabbitMQ. On le retrouve aussi dans les serveurs de jeux multijoueurs.

Dans cette conférence nous verrons, à travers un exemple concret d'un crawler, l'expression de ces problèmes. Nous aborderons les fondements de l'Actor Model et comment ils solutionnent nos problèmes. Pour finir nous verrons l'avancement des travaux qui permettent d'utiliser ce modèle en PHP.

Cécile HAMEREL - HJK
09/10/2025
14:55-15:35

Quel conseil donnerais-tu à un·e dev qui débute avec les monades et l’architecture fonctionnelle en PHP ?

Je conseillerais d’abord de se familiariser avec les fonctions, surtout les anonymes, et le fait qu’une fonction peut attendre une fonction en argument ou retourner une autre fonction. Beaucoup de sujets dans la programmation fonctionnelle découlent de ces mécanismes.

Un exercice simple, applicable dans du code orienté objet, est si vous utilisez des getters pour extraire des données que vous modifiez ailleurs pour ensuite injecter le résultat via des setters dans l’objet initial. À la place, essayez de mettre la logique dans une fonction anonyme qui attend en argument les données de l’objet, et passez cette fonction à une méthode de l’objet. C’est cette méthode qui va appeler la fonction anonyme en passant les propriétés interne de l’objet en argument à la fonction.

Tu as participé lors du Forum PHP 2023 à un créneau spécial intitulé « les histoires extraordinaires », où tu nous expliquais les expériences dans lesquelles tu plongeais dans ton cerveau. Est-ce que le partage de cette information personnelle a été le sujet d’interactions différentes avec le public ?

Oui, juste après, j’ai pu échanger avec quelques personnes de la communauté. On a discuté sur leurs expériences de rêves en pleine conscience, sujet que j’avais oublié avoir étudié quelques années plus tôt. C’était intéressant 🙂.

Tu as été speaker à des événements de l’AFUP sur ces dernières années et t’es prêté plusieurs fois à l’exercice de l’interview. Y a-t-il une question que tu aurais souhaitée que l’on te pose et quelle en est la réponse ?

Pas évident comme exercice 😅 . Je n’ai pas de question brûlante qui me vient. 

Des amis m’ont plusieurs fois posé une question qui me parait intéressante : Pourquoi tu fais de la programmation fonctionnelle en PHP ?

Comme je le mentionne dans mes conférences, je maintiens plusieurs projets open source (autour de la centaine). Ce sont principalement des abstractions construites les unes sur les autres. Avec le temps, j’ai remarqué que plus l’abstraction était haut niveau, plus l’implémentation était difficile et limitée en fonctionnalités. Pour lever ces limitations, cela me demandait souvent de revoir les abstractions sous-jacentes ou devoir en créer de nouvelles. Chaque nouveau projet demandait de plus en plus de temps à le réaliser.

La source de ce problème : la gestion des erreurs (alias les exceptions).

Avec ce nombre de projets, je ne pouvais plus m’assurer que je gérais toutes les erreurs au bon endroit pour toutes les callstack. C’est en étudiant les alternatives aux exceptions que je suis tombé dans la programmation fonctionnelle. C’est cette étude qui m’a fait découvrir les monades et m’a amené à donner la conférence « Les Exception : le trou dans la raquette du typage« .

En adoptant cette gestion des erreurs dans mes projets, ça a solutionné ce problème, mais aussi celui des limitations des abstractions. Plus je pousse mes projets dans cette direction fonctionnelle, plus chaque abstraction ouvre de nouvelles possibilités pour les autres au lieu de les fermer. 

Avec mes 2 conférences cette année, j’espère pouvoir montrer ce qu’il est possible de faire avec cette approche (et qui aurait été difficile, voir impossible, de faire avec un code objet « standard »).

Je continue en PHP au lieu de prendre un langage plus approprié parce que j’aime apprendre en réimplémentant les concepts. J’espère que ces projets pourront aider des gens, qui voudraient justement changer de langage, à se former sur ces sujets via un langage familier.

Une conférence présentée par

Baptiste LANGLADE
Baptiste LANGLADE
Baptiste est un architecte logiciel passionné par indexer Internet, la programmation fonctionnelle, les graphes et les neurosciences.

Autres interviews