La parole est aux speakers : Baptiste Langlade
Jusqu’à l’AFUP Day 2023, 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
Monades : paradigme unique pour la programmation (a)synchroneLa programmation asynchrone se fait de plus en plus présente grâce aux Fibers mais, actuellement, passer de la programmation synchrone à asynchrone demande un changement important de la façon de programmer nos applications. Or passer à l'asynchrone est un besoin technique de performance et ne devrait avoir qu'un impact minimum sur nos applications (au même titre qu'ajouter du cache). Et à ce titre cela devrait être de la responsabilité des abstractions de gérer ça correctement, et non aux devs de savoir comment gérer l'asynchrone au mieux. La programmation fonctionnelle avec le pattern Monad nous permet d'avoir un paradigme unique de programmer qui permet de passer du synchrone à l'asynchrone de manière transparente. Cette conférence présentera des cas d'usage pour montrer concrètement d'un point de vue utilisateur comment cela est possible. |
C.P.E. 12/05/2023 11:15-11:55 |
Tu nous as introduit la notion de monades permettant le typage d’erreurs lors du Forum PHP 2021. Peut-on dire que ce nouveau talk en sera la suite ?
En quelque sorte oui. En 2021 même si je n’ai montré que « comment » gérer les erreurs, j’évoquais qu’il existait d’autres monades. L’objectif cette fois est d’en présenter une autre pour démontrer comment avec une même logique, on peut adresser différents problèmes.
Pourrais-tu nous donner quelques exemples pour lesquels la programmation asynchrone est intéressante dans une application ?
L’exemple habituel est la possibilité d’implémenter un serveur HTTP ou Websocket en PHP, c’est surtout intéressant pour pouvoir conserver en mémoire des données qu’on aurait tendance à récupérer à chaque requête dans un modèle standard (avec nginx, Apache, etc…).
On peut aussi penser à un script d’upload de fichiers sur un service distant. Imaginons qu’on ait 3 fichiers à uploader (un gros fichier et deux petits, dans cet ordre) : pour notre script, que ce soit fait en synchrone ou asynchrone, ça prendra le même temps. Par contre le service distant recevra le premier petit fichier avant la fin de l’upload du gros fichier. Le résultat est que le service distant passe moins de temps à attendre.
Mais un usage qui m’intéresse beaucoup est la possibilité d’implémenter un modèle d’Acteur (Actor model en anglais, comme Erlang). Ce type de programmation permet de résoudre les problèmes d’accès concurrents à une ressource en découpant nos applications en petits « programmes » (des acteurs) qui communiquent entre eux par passage de messages. L’asynchrone dans ce cas-là, du point de vue des devs utilisant un tel système, n’est pas directement visible mais il permet une meilleure implémentation d’un tel système, car il permet de maximiser l’utilisation des ressources d’une machine.
Qu’apporte à tes projets la programmation fonctionnelle et est-ce adapté au PHP d’aujourd’hui ?
Actuellement, je maintiens environ 90 projets open source répartis en différents niveaux d’abstraction. Au fil du temps gérer tous les cas d’erreurs (via des exceptions) devenait de plus en plus difficile. La programmation fonctionnelle (combiné à l’analyse statique de code) a complètement résolu ce problème via les monades que j’ai présenté au Forum PHP 2021. Et de manière plus générale elle m’aide à produire du code plus simple.
Aujourd’hui, il ne me semble pas réaliste de vouloir réaliser un projet PHP complet en programmation fonctionnelle pour des soucis de typage, d’outillage ou de difficulté. Cependant, je pense qu’elle est indispensable pour certains de ses principes de base tels que l’immuabilité des données et les fonctions pures.
À titre plus personnel elle m’a permis une plus grande facilité à lire des programmes dans d’autres langages que PHP et donc ouvrir l’horizon à d’autres solutions techniques.
Une conférence présentée par
Baptiste LANGLADE |
Baptiste Langlade est un développeur PHP (certifié symfony2) passionné par indexer Internet, la programmation fonctionnelle, les graphes et le fonctionnement du cerveau. |