En 2012, Microsoft a présenté P, un langage de programmation pour écrire du code asynchrone piloté par les événements : Microsoft avait expliqué que P permet au développeur de spécifier le système comme une collection de machines d'état qui interagissent, qui communiquent entre elles à l'aide d'événements. « P unifie la modélisation et la programmation en une activité pour le développeur. Non seulement un programme P peut être compilé en code exécutable, mais il peut également être vérifié à l'aide de la vérification du modèle », assurait l’éditeur.
L’année dernière, l’américain a décidé de le rendre disponible en open source sous licence MIT, ce qui signifie que les utilisateurs peuvent s’en servir aussi bien dans leurs projets personnels que pour la redistribution ou la commercialisation. L’objectif est d’en favoriser l’évolution et l’adoption.
P est recommandé dans les environnements des systèmes en réseau, des systèmes embarqués ainsi que des systèmes distribués. En l’utilisant pour concevoir et vérifier la pile du pilote USB sur Windows 8, les ingénieurs estiment qu’ils sont parvenus à concevoir un pilote plus fiable qui s’exécute mieux que son prédécesseur qui n’a pas été conçu avec P. En plus, ces derniers affirment qu’ils ont plus confiance à la robustesse de son design due aux abstractions du langage et à la vérification fournie par P.
Dans un billet de blog, Shaz Qadeer, Principal Researcher chez Microsoft, a expliqué que « La complexité des applications logicielles émergentes nécessite de nouvelles approches pour la compréhension, puis la construction, le test et le débogage de ces systèmes efficacement. Le logiciel d'aujourd'hui utilise des ressources cloud, est souvent intégré dans des appareils dans le monde physique et utilise des techniques d'intelligence artificielle. Ces trois facteurs rendent les systèmes logiciels d'aujourd'hui un ordre de grandeur plus difficile à développer ».
Il a rappelé qu’il n’est pas rare que ces applications modernes présentent un asynchronisme, ce qui se produit lorsque, pour améliorer les performances, le demandeur d'une opération continue sans exiger l'achèvement de l'opération. Il voit en P la réponse à ce genre de défis.
« P transforme le développement de l'infrastructure cloud dans Azure. Azure, comme d'autres fournisseurs de cloud, fait face au défi de Heisenbugs causé par des conditions de course inattendues et des défauts logiciels ou matériels. Ces bogues entraînent une perturbation des services en direct – un énorme problème pour les clients et les fournisseurs de services cloud », a indiqué Shaz. Il a assuré que P permet aux ingénieurs de modéliser précisément les interfaces asynchrones entre les composants d'un grand service Azure. Il permet également aux ingénieurs de découvrir et de déboguer des problèmes sur leur poste de travail qui, autrement, prendraient des mois et parfois même des années pour se manifester après déploiement du service.
Une caractéristique importante de P, qui la rend particulièrement appropriée pour valider les services distribués tolérants aux pannes, est la possibilité d'effectuer un test de basculement approfondi, c'est-à-dire de valider que le service récupère et reprend son fonctionnement lorsqu'il survient un défaut inattendu. « Les retombées du message réseau et les défaillances individuelles de la machine d'état sont modélisées comme des événements. La modélisation d'un défaut en tant qu'événement dans P automatise entièrement l'injection de panne et permet de tester systématiquement le basculement sous un nombre énorme de commandes et de défauts d'événements, avec peu d'efforts du développeur », a assuré Shaz.
Les capacités de test systématique dans P permettent d’effectuer des recherches en profondeur sur les choix induits par l'ordonnancement indéterminé des événements lancés simultanément. Cependant, ses capacités sont limitées en ce qui concerne la gestion de l'entrée de données explicite, en particulier lorsque cette entrée dépasse de grands domaines. Cette limitation rend difficile l'application de P à des domaines comme la robotique où une source importante de complexité est la prise de décision sous une entrée incertaine.
télécharger P (GitHub)
Source : Microsoft
Pour Microsoft, son langage de programmation P, qui est dédié à la programmation asynchrone,
Transforme le développement de l'infrastructure cloud
Pour Microsoft, son langage de programmation P, qui est dédié à la programmation asynchrone,
Transforme le développement de l'infrastructure cloud
Le , par Stéphane le calme
Une erreur dans cette actualité ? Signalez-nous-la !