微軟的P語(yǔ)言,用于異步事件驅(qū)動(dòng)的編程和物聯(lián)網(wǎng),現(xiàn)已開(kāi)源。
面向嵌入式系統(tǒng)、設(shè)備驅(qū)動(dòng)程序和分布式服務(wù),P語(yǔ)言是一個(gè)特定領(lǐng)域的編譯語(yǔ)言與實(shí)現(xiàn)與C語(yǔ)言互操作,這本身已被普遍使用在嵌入式系統(tǒng)和物聯(lián)網(wǎng)中。“P語(yǔ)言的目標(biāo)是簡(jiǎn)潔和精確地提供語(yǔ)言原語(yǔ)捕捉協(xié)議,這是通信部件之間與生俱來(lái)的性能。” 在微軟的一次語(yǔ)言教程上EthanJackson和ShazQadeer說(shuō)。
P語(yǔ)言,建模和編程被融合成一個(gè)單一的活動(dòng)。“不僅P語(yǔ)言程序可以被編譯為可執(zhí)行的代碼,它也可以使用系統(tǒng)的測(cè)試驗(yàn)證。”根據(jù)GitHub上語(yǔ)言文檔。“P語(yǔ)言已被用來(lái)驗(yàn)證USB設(shè)備的驅(qū)動(dòng)程序棧,并搭載到微軟Windows8和Windows手機(jī)。”
微軟將P語(yǔ)言描述為提供“安全”事件驅(qū)動(dòng)的編程。在教程中,Jackson和Qadeer說(shuō)P語(yǔ)言程序有一個(gè)計(jì)算的模型,其特征是狀態(tài)機(jī)通過(guò)消息進(jìn)行通信,一種常用的嵌入式、網(wǎng)絡(luò)和分布式系統(tǒng)的方法。
每個(gè)狀態(tài)機(jī)都有一個(gè)輸入隊(duì)列、狀態(tài)、轉(zhuǎn)換、事件處理程序和變量集合的機(jī)器本地存儲(chǔ)區(qū)。狀態(tài)機(jī)并行運(yùn)行,每個(gè)執(zhí)行一個(gè)事件循環(huán),該事件循環(huán)從輸入隊(duì)列進(jìn)入消息隊(duì)列。狀態(tài)機(jī)還檢查本地存儲(chǔ)區(qū),在機(jī)器之間發(fā)送消息,并可以創(chuàng)建新的機(jī)器。“在P語(yǔ)言中,發(fā)送操作是不被阻塞的;消息是簡(jiǎn)單地被執(zhí)行到目標(biāo)機(jī)器的輸入隊(duì)列中。”一個(gè)程序是一個(gè)事件和機(jī)器聲明的集合。
微軟還提供了P#,作為C #目標(biāo)異步編程的一個(gè)擴(kuò)展,并開(kāi)放源代碼。而在六月,微軟開(kāi)源的C語(yǔ)言,一個(gè)修改版本的C語(yǔ)言,增加了新的語(yǔ)法和打字到C語(yǔ)言,意圖提高C語(yǔ)言的安全性。