Разработчик | Анкуш Десаи, Вивек Гупта: не политик, Итан Джексон, Шаз Кадир, Шрирам Раджамани, Microsoft |
---|---|
Впервые появился | 2012 ( 2012 ) |
ОС | Кроссплатформенный |
Лицензия | Лицензия Массачусетского технологического института |
Расширения имени файла | .п |
Веб-сайт | p-org.github.io/P/ |
P — это язык программирования для асинхронного событийно-управляемого программирования и Интернета вещей , разработанный Microsoft и Калифорнийским университетом в Беркли . [1]
P позволяет программистам определять системы, состоящие из набора конечных автоматов , которые взаимодействуют асинхронно в терминах событий. [2] Программы P могут запускаться и анализироваться на любой платформе, поддерживаемой .NET . Кроме того, программы P могут генерировать код C# и C.
P имеет открытый исходный код , лицензирован под лицензией MIT и доступен на GitHub . [3]
машина БанкСервер{ var база данных: База данных; начальное состояние Init { запись (initialBalance: map[int, int]){ база данных = новая База данных((сервер = этот, начальныйБаланс = начальныйБаланс)); перейти к WaitForWithdrawRequests; } } состояние WaitForWithdrawRequests { на eWithDrawReq сделать (wReq: tWithDrawReq) { var currentBalance: int; ответ var: tWithDrawResp; // прочитать текущий баланс счета из базы данных currentBalance = ReadBankBalance(database, wReq.accountId); // если на счете достаточно денег после вывода если (текущийБаланс - wReq. сумма >= 10) { UpdateBankBalance(база данных, wReq.accountId, currentBalance - wReq.amount); ответ = (статус = WITHDRAW_SUCCESS, accountId = wReq.accountId, баланс = currentBalance - wReq.amount, rId = wReq.rId); } в противном случае // недостаточно денег после вывода { ответ = (статус = WITHDRAW_ERROR, accountId = wReq.accountId, баланс = currentBalance, rId = wReq.rId); } // отправить ответ клиенту отправить wReq.source, eWithDrawResp, ответ; } }}