Conçu pour les systèmes embarqués, les pilotes de périphériques et les services distribués, le langage de programmation P, spécifique à un domaine, peut être compilé et interagir avec le langage C, lequel a lui-même été souvent utilisé dans les systèmes embarqués et l’IoT. « La raison d’être du langage P est de fournir des primitives pour capturer de façon succincte et précise les protocoles de communication utilisés entre eux par les composants des systèmes asynchrones », ont expliqué dans un tutoriel sur le langage Ethan Jackson et Shaz Qadeer, deux chercheurs du Research in Software Engineering (RiSE) Group de Microsoft.
La programmation P permet d’effectuer la modélisation et le codage en une seule opération. « Non seulement un programme écrit en langage P peut être compilé en code exécutable, mais il peut aussi être validé en utilisant des tests systématiques », selon la documentation en ligne publiée sur GitHub. « Le langage P a notamment été utilisé pour concevoir et vérifier la pile du pilote USB sur Windows 8 et Windows Phone ».
Un système représenté comme des machines à états
Selon Microsoft, le langage P permet de réaliser une programmation événementielle « sûre ». Dans leur tutoriel, les chercheurs Ethan Jackson et Shaz Qadeer expliquent encore que la programmation P permet de représenter le système comme un ensemble de machines à états qui interagissent et communiquent entre elles en utilisant des évènements. Cette approche par messages est couramment utilisée dans les systèmes en réseau, les systèmes embarqués et les systèmes distribués.
Chaque machine à états présente une file d'attente en entrée, des états, des transitions, des gestionnaires d'événements, et un magasin-machine en local pour stocker des séries de variables. Les machines à états fonctionnent simultanément, chacune exécutant une boucle d'événement, sortant un à un les messages de la file d'attente en entrée. La machine à états examine également le magasin local, envoie des messages entre les machines, et peut créer de nouvelles machines. « En programmation P, l’opération d'envoi est non bloquante, c’est-à-dire que le message est simplement exécuté dans la file d'attente en entrée de la machine cible ». Un programme écrit en P intègre une série d'événements et de déclarations machine.
Le langage Checked C également en open source
Microsoft a également livré en open source le langage P#, une extension du langage C# utilisé en programmation asynchrone. Au mois de juin dernier, Microsoft avait déjà livré le langage Checked C en open source, une version transformée du langage de programmation C, qui ajoute une nouvelle syntaxe et un nouveau mode de saisie au langage C afin d'améliorer sa sécurité.