Microsoft met sous licence open source son langage de programmation P
Utilisé pour développer des programmes selon le modèle de machines à états

Le , par Olivier Famien, Chroniqueur Actualités
P est un langage de programmation destiné à écrire des programmes pour les systèmes asynchrones. Il a été mis en œuvre par Microsoft afin de fournir des primitives pour capturer les protocoles de communication parmi les composants des systèmes asynchrones.

Généralement, pour éviter des erreurs en concevant des programmes pour les systèmes asynchrones, les développeurs procèdent par étape. Dans un premier temps, ils conçoivent le code asynchrone en utilisant des annotations pour le système à états. Pour rappel, un système ou une machine à états peut être défini comme une machine exécutant une suite d’instructions par étape dans un intervalle donné et met à jour son état en fonction des instructions reçues ou émises.

Après avoir conçu le code, les développeurs utilisent des outils de modélisation et de vérification pour s’assurer que tous les aspects des différentes étapes des machines à états sont couverts. Enfin, ils se tournent vers le langage de programmation C pour mettre en œuvre la conception.

Cette méthode s’avère longue et fastidieuse et est sujette à des bogues lorsque les états du système évoluent. Aussi, pour se faciliter la tâche et aller beaucoup plus vite dans le développement de leurs projets pour les systèmes asynchrones, les ingénieurs chez Microsoft ont développé le langage de programmation P. C’est avec ce langage que les ingénieurs de Microsoft sont parvenus à créer la pile du pilote gérant les périphériques USB sur Windows 8.

Il permet aux développeurs de représenter le système comme un ensemble de machines à états qui interagissent et communiquent entre eux en utilisant des évènements. Et à chaque modification du système, P sera en mesure de vérifier les différents états du système et de gérer les différents évènements reçus par chaque état afin de détecter les violations des règles. Il faut noter qu’en plus d’être utilisé comme un outil de modélisation, P peut également être utilisé pour compiler automatiquement la modélisation du système qui a été conçue.

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.

Aussi, vu les avantages qu’offre le langage de programmation P tant au niveau de la conception, de la modélisation, qu’au niveau de la vérification, Microsoft a mis sous licence open source ce langage de programmation afin de favoriser son évolution et son adoption.

P est multi-plate-forme et peut être utilisé pour concevoir des programmes sur Windows, Linux et Mac OS. Pour ceux qui souhaitent concevoir des frameworks afin de faciliter la tâche aux développeurs sur les systèmes Linux et Mac OS, il va falloir utiliser la version 4.5 ou supérieure de Mono (la plateforme de développement .Net basée sur la CLI) et la version 2.8 de CMake (le moteur de génération des fichiers). Pour ce qui concerne Windows, il va falloir se munir de Visual Studio et de la version 4.5 du Framework.Net.

P est distribué 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.

Source : GitHub

Et vous ?

Que pensez-vous de ce langage de programmation ?

Est-ce un langage de trop ? Ou estimez-vous qu’il réponde à un besoin encore insatisfait ?

Voir aussi

F# s’ouvre à la communauté open source, les bénévoles pourront participer au développement du langage de programmation fonctionnelle de Microsoft

La Rubrique .Net, Forum langages DotNet, Cours et tutoriels .Net, FAQ .Net


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de neuneutrinos neuneutrinos - Membre habitué https://www.developpez.com
le 12/10/2016 à 8:55
à essayer !
(je vais lire la doc pour voir de quoi il retourne )
Avatar de sergio_is_back sergio_is_back - Membre régulier https://www.developpez.com
le 12/10/2016 à 9:05
Une machine a état n'est rien d'autre qu'un automate programmé en langage grafcet.

Dans la plupart des langage existants il est possible de coder des classes qui reproduisent ce fonctionnement mais c'est plus ou moins aisé et plus ou moins efficace selon la plateforme et le langage.

Maintenant c'est plutôt intéressant que l'on commence à s'y pencher. Dans l'informatique industrielle la frontière est sous ténue entre l'automate et le PC et le besoin de machines à états se
fait souvent sentir

Dommage qu'il faille encore s'appuyer sur un framework .NET j'aime pas empiler les couches par dessus les couches

A voir
Avatar de abriotde abriotde - Membre éclairé https://www.developpez.com
le 12/10/2016 à 9:12
Cela me semble très intéressant car a ma connaissance, dans ce domaine très restreint, il n'existe pas grand chose. Je ne connais que le Grafcet mais qui est plus graphique et moins puissant à ma connaissance (au sens ou il est moins interfaçable avec du C/C++).
Il n'a donc pas de concurrent direct contrairement au Go ou Rust, il y a là une vrai innovation et non seulement une recherche plus théorique qu'autre chose...
Avatar de Markand Markand - Membre actif https://www.developpez.com
le 12/10/2016 à 9:17
Encore un nouveau langage...

C#, VB, F#, P, TypeScript, ...
Avatar de Gugelhupf Gugelhupf - Modérateur https://www.developpez.com
le 12/10/2016 à 12:21
Si vous jetez un coup d'oeil à P, vous verrez qu'il ne s'agit pas d'un langage comme les autres, c'est un langage qui en quelque sorte fait concurrence aux outils graphiques tels que PL7 de Schneider ou au STEP 7 de Siemens.

Concernant le langage, je me demande si C# avec une librairie "P" au lieu d'un langage P n'aurait pas été suffisant (avec un plugin qui interdit l'utilisation des fonctionnalités inutiles de C# pour ce type de plateforme).

Concernant son adoption j'ai un doute, bien qu'il soit open source, l'industrie est ancrée sur les solutions propriétaires, c'est comme demander aux grandes entreprises qui utilisent du Oracle ou DB2 d'utiliser une techno libre, mais pourquoi pas
Avatar de neuneutrinos neuneutrinos - Membre habitué https://www.developpez.com
le 12/10/2016 à 15:56
P et C#, dans les infos que j'ai survolé, il parle de P# comme une extension de C#

https://www.microsoft.com/en-us/rese...ogramming-p-p/
P# provides P-style modeling and specification techniques not as a separate language but as an extension to C#, a language that is already familiar to many programmers. In contrast to P, the approach in P# is minimal syntactic extension and maximal use of libraries to deliver modeling, specification, and testing capabilities. P# can be used both to write new services and to test existing services.

Avatar de HSO1956 HSO1956 - Candidat au Club https://www.developpez.com
le 13/10/2016 à 10:32
Bonjour
Pour ce genre d'application ( Machine d'état - Graphcet - Automate - PLC etc), j'utilise avec succès depuis de nombreuses années un logiciel appelé Twincat.
La dernière version ( TC3) est disponible gratuitement et l'édition se fait dans Visual Studio ( ou un Shell de Visual Studio ). Voir le site de la firme Beckhoff pour plus d'info
Avatar de JPLAROCHE JPLAROCHE - Membre habitué https://www.developpez.com
le 21/10/2016 à 18:08
bonjour,
personne ne parle du websocket , dont la validation par l'ensemble des acteurs majeurs (Microsoft , GNU, Mozilla, .... IBM, .... ) en début d'année 2016. d'ailleurs au passage je signal que libwebsocket pour "c" & "c++" fonctionne à merveille et réponde parfaitement pour faire du transactionnel . et rend synchrone sans être gourmand en ressource .
je ne vois pas pourquoi rajouter encore et encore un autre langage. on en fini plus après tout framework pour travailler avec internet ... etc pour faire du web personnellement je fais du C++ , pour la sécurité, pour la rapidité, une fois les lib de fond écrites votre L4G est près .... j'ai beaucoup de mal a comprendre les contentieux divers envers le C & C++, je peux comprendre que d'autre langage existe mais pourquoi allez ailleurs du moment que je peux faire mes courses dans mon marché. Quand aux spécifiques rien ne vaux un peu d'huile de coude et d'écrire quelque chose qui colle a la peau d'un besoin pour le rendre performant.
maintenant après avoir lu je ne suis pas convaincu d'un réel apport. d’où ma réponse. Bon je vous l'accorde en ce moment je suis préocupé par le temps réel qui dit temps réel dit communication voir ce que j'écris est ce que je vois vis versa pareille pour la voix etc... ainsi que lock record commit rollback etc...
peut être suis-je à coté de la plaque ???
@bientôt
Offres d'emploi IT
Ingénieur intégration, validation, qualification du système de drone H/F
Safran - Ile de France - Éragny (95610)
Ingénieur conception en électronique de puissance H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Responsable protection des données H/F
Safran - Ile de France - Magny-les-Hameaux (78114)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil