Programování

Jazyk P open source Microsoft pro IoT

Jazyk P společnosti Microsoft pro asynchronní programování řízené událostmi a IoT (internet věcí) byl otevřený.

P je zaměřen na vestavěné systémy, ovladače zařízení a distribuované služby a je jazyk specifický pro doménu, který se kompiluje a spolupracuje s C, což se samo o sobě běžně využívá ve vestavěných systémech a IoT. „Cílem P je poskytnout jazyková primitiva pro stručné a přesné zachycení protokolů, které jsou neodmyslitelnou součástí komunikace mezi komponentami,“ uvedli Ethan Jackson a Shaz Qadeer z Microsoftu v tutoriálu k jazyku.

S P jsou modelování a programování sloučeny do jedné aktivity. „Program P lze nejen zkompilovat do spustitelného kódu, ale lze jej také ověřit pomocí systematického testování,“ uvádí dokumentace jazyka na GitHubu. „P bylo použito k implementaci a ověření sady ovladačů zařízení USB dodávaných se systémy Microsoft Windows 8 a Windows Phone.“

Microsoft popsal P jako nabídku „bezpečného“ programování řízeného událostmi. Ve svém tutoriálu Jackson a Qadeer tvrdí, že programy P mají výpočetní model, který obsahuje stavové automaty komunikující prostřednictvím zpráv, což je přístup běžně používaný ve vestavěných, síťových a distribuovaných systémech.

Každý stavový stroj má vstupní frontu, stavy, přechody, obslužné rutiny událostí a místní úložiště počítače pro kolekci proměnných. Stavové stroje běží souběžně, přičemž každý provádí smyčku událostí, která odstraní fronty zpráv ze vstupní fronty. Stavový stroj také zkoumá místní úložiště, odesílá zprávy mezi stroji a může vytvářet nové stroje. "V P operace odesílání neblokuje; zpráva se jednoduše provede do vstupní fronty cílového počítače." Program obsahuje kolekci deklarací událostí a strojů.

Společnost Microsoft také nabízí P #, rozšíření C #, které cílí na asynchronní programování, jako otevřený zdroj. A v červnu Microsoft open-source Checked C, upravená verze C, která přidává novou syntaxi a psaní do jazyka C, s cílem zlepšit bezpečnost v C.

$config[zx-auto] not found$config[zx-overlay] not found