GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Main page
  • Contents
  • Current events
  • Random article
  • About Wikipedia
  • Contact us
  • Help
  • Learn to edit
  • Community portal
  • Recent changes
  • Upload file
  • Special pages
  • Search
  • Donate

This view

  • Original page
  • New address

GeezerVison is showing en.wikipedia.org — P (programming language) - Wikipedia

P
P
DeveloperAnkush Desai, Vivek Gupta, 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 Internet of things 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[int, int]){
      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

  • Microsoft Research
  • Free software movement

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.

External links

  • Official website
  • Source code on GitHub
  • P: Safe Asynchronous Event-Driven Programming
  • P: A programming language designed for asynchrony, fault-tolerance and uncertainty


Stub icon

This programming-language-related article is a stub. You can help Wikipedia by adding missing information.

  • v
  • t
  • e
Retrieved from "https://en.wikipedia.org/w/index.php?title=P_(programming_language)&oldid=1379018371"
Categories:
  • Microsoft free software
  • Microsoft programming languages
  • Programming languages created in 2012
  • Software using the MIT license
  • Systems programming languages
  • 2012 software
  • Programming language topic stubs
Hidden categories:
  • Articles with short description
  • Short description is different from Wikidata
  • Pages using infobox programming language with unknown parameters
  • Official website different in Wikidata and Wikipedia
  • All stub articles
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.