Tu banner alternativo

P (programming language)

In this article, we will delve into the fascinating world of P (programming language), exploring its many facets and shedding light on issues that have sparked the interest and curiosity of many. From its impact on society to its implications in the scientific field, including its influence on popular culture, this exhaustive analysis will seek to unravel the mysteries surrounding P (programming language) and offer a panoramic view that allows our readers to better understand its importance and relevance. in a world in constant change and evolution. Join us on this journey of discovery and reflection about P (programming language), whose impact is felt in all areas of modern life.

Tu banner alternativo
P
DeveloperAnkush Desai, Vivek Gupta: not the politician, Ethan Jackson, Shaz Qadeer, Sriram Rajamani, Microsoft
First appeared2012 (2012)
Stable release
2.3.5 / February 19, 2025 (2025-02-19)
OSCross-platform
LicenseMIT License
Filename extensions.p
Websitep-org.github.io/P/

P is a programming language for asynchronous event-driven programming and the IoT that was developed by Microsoft and University of California, Berkeley.[1]

P enables programmers to specify systems consisting of a collection of state machines that communicate asynchronously in terms of events.[2] P programs can run and be analyzed on any platform supported by .NET. Additionally, P programs can generate C# and C code.

P is open source, licensed under MIT License, and available on GitHub.[3]

Example

machine BankServer
{
  var database: Database;

  start state Init {
    entry (initialBalance: map){
      database = new Database((server = this, initialBalance = initialBalance));
      goto WaitForWithdrawRequests;
    }
  }

  state WaitForWithdrawRequests {
    on eWithDrawReq do (wReq: tWithDrawReq) {
      var currentBalance: int;
      var response: tWithDrawResp;

      // read the current account balance from the database
      currentBalance = ReadBankBalance(database, wReq.accountId);
      // if there is enough money in account after withdrawal
      if(currentBalance - wReq.amount >= 10)
      {
        UpdateBankBalance(database, wReq.accountId, currentBalance - wReq.amount);
        response = (status = WITHDRAW_SUCCESS, accountId = wReq.accountId, balance = currentBalance - wReq.amount, rId = wReq.rId);
      }
      else // not enough money after withdraw
      {
        response = (status = WITHDRAW_ERROR, accountId = wReq.accountId, balance = currentBalance, rId = wReq.rId);
      }

      // send response to the client
      send wReq.source, eWithDrawResp, response;
    }
  }
}

See also

References

  1. ^ Microsoft open-sources P language for IoT
  2. ^ Ankush Desai; Vivek Gupta; Ethan Jackson; Shaz Qadeer; Sriram Rajamani (November 2012). "P: Safe Asynchronous Event-Driven Programming". Microsoft. Retrieved 20 February 2017.
  3. ^ Sergio De Simone. "Microsoft Open-Sources P Language for Safe Async Event-Driven Programming". InfoQ. Retrieved 20 October 2016.

Further reading

  • P: Safe asynchronous event-driven programming. Ankush Desai, Vivek Gupta, Ethan Jackson, Shaz Qadeer, Sriram Rajamani, and Damien Zufferey. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), 2013.
  • Systematic testing of asynchronous reactive systems. Ankush Desai, Shaz Qadeer, and Sanjit A. Seshia. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2015).
  • Building Reliable Distributed Systems With P. Ankush Desai, Ethan Jackson, Amar Phanishayee, Shaz Qadeer and Sanjit A. Seshia. University of California, Berkeley. Technical Report No. UCB/EECS-2015-198.