Programmering

Microsofts åbne kilder P-sprog til IoT

Microsofts P-sprog til asynkron begivenhedsstyret programmering og IoT (tingens internet) er blevet open source.

P er gearet til indlejrede systemer, enhedsdrivere og distribuerede tjenester og er et domænespecifikt sprog, som kompileres til og fungerer sammen med C, hvilket i sig selv ofte er blevet brugt i indlejrede systemer og IoT. "Målet med P er at tilvejebringe sprogprimitiver til kortfattet og præcist at fange protokoller, der er forbundet med kommunikation mellem komponenter," sagde Ethan Jackson og Shaz Qadeer fra Microsoft i en tutorial om sproget.

Med P smelter modellering og programmering sammen til en enkelt aktivitet. "Ikke kun kan et P-program kompileres til eksekverbar kode, men det kan også valideres ved hjælp af systematisk test," ifølge sprogets dokumentation på GitHub. "P er blevet brugt til at implementere og validere USB-enhedsdriverstakken, der leveres med Microsoft Windows 8 og Windows Phone."

Microsoft har beskrevet P som at tilbyde "sikker" begivenhedsdrevet programmering. I deres vejledning siger Jackson og Qadeer, at P-programmer har en beregningsmodel, der indeholder tilstandsmaskiner, der kommunikerer via meddelelser, en tilgang, der almindeligvis bruges i indlejrede, netværksbaserede og distribuerede systemer.

Hver statsmaskine har en inputkø, tilstande, overgange, begivenhedshåndterere og maskin-lokal butik til en variabelsamling. Statsmaskiner kører samtidigt, hvor hver udfører en hændelsessløjfe, der afkøler en meddelelse fra inputkøen. Statsmaskinen undersøger også den lokale butik, sender meddelelser mellem maskiner og kan oprette nye maskiner. "I P er en sendeoperation ikke-blokerende. Meddelelsen udføres simpelthen i målmaskinens inputkø." Et program indeholder en samling af hændelses- og maskindeklarationer.

Microsoft tilbyder også P #, en udvidelse til C #, der målretter asynkron programmering, som open source. Og i juni åbnede Microsoft Checked C, en modificeret version af C, der tilføjer ny syntaks og typning til C-sproget med det formål at forbedre sikkerheden i C.