Choreographic programming: Difference between revisions

Content deleted Content added
No edit summary
m clean up, added orphan tag
Line 1:
{{short description|Programming paradigm}}
{{Orphan|date=January 2022}}
 
{{Programming paradigms}}
In [[computer science]], '''choreographic programming''' is a [[programming paradigm]] where programs are compositions of interactions among multiple [[concurrent computing|concurrent]] participants.<ref name="bt-survey">{{Cite journal|url=https://doi.org/10.1561/2500000031|doi = 10.1561/2500000031|title = Behavioral Types in Programming Languages|year = 2016|last1 = Yoshida|first1 = Nobuko|last2 = Vasconcelos|first2 = Vasco T.|last3 = Padovani|first3 = Luca|last4 = Bono|first4 = Nicholas Ng|last5 = Neykova|first5 = Rumyana|last6 = Montesi|first6 = Fabrizio|last7 = Mascardi|first7 = Viviana|last8 = Martins|first8 = Francisco|last9 = Johnsen|first9 = Einar Broch|last10 = Hu|first10 = Raymond|last11 = Giachino|first11 = Elena|last12 = Gesbert|first12 = Nils|last13 = Gay|first13 = Simon J.|last14 = Deniélou|first14 = Pierre-Malo|last15 = Castagna|first15 = Giuseppe|last16 = Campos|first16 = Joana|last17 = Bravetti|first17 = Mario|last18 = Bono|first18 = Viviana|last19 = Ancona|first19 = Davide|journal = Foundations and Trends® in Programming Languages|volume = 3|issue = 2–3|pages = 95–230}}</ref><ref name="mp-langs">{{Cite book|url=https://doi.org/10.4230/LIPIcs.ECOOP.2021.22|doi = 10.4230/LIPIcs.ECOOP.2021.22|year = 2021|last1 = Giallorenzo|first1 = Saverio|last2 = Montesi|first2 = Fabrizio|last3 = Peressotti|first3 = Marco|last4 = Richter|first4 = David|last5 = Salvaneschi|first5 = Guido|last6 = Weisenburger|first6 = Pascal|title = Multiparty Languages: The Choreographic and Multitier Cases (Pearl)|series = Leibniz International Proceedings in Informatics (LIPIcs)|volume = 194|pages = 22:1–22:27|isbn = 9783959771900}} [https://2021.ecoop.org/details/ecoop-2021-ecoop-research-papers/9/Multiparty-Languages-the-Choreographic-and-Multitier-Cases (ECOOP 2021 Distinguished Paper)]</ref>
Line 40 ⟶ 42:
The inspiration for the syntax of choreographic programming languages can be traced back to [[security protocol notation]], also known as "Alice and Bob" notation. Choreographic programming has also been heavily influenced by standards for [[service choreography]] and [[sequence diagram|interaction diagrams]], as well as developments of the theory of [[process calculus|process calculi]].<ref name="mp-langs"/><ref>{{Cite journal|url=https://doi.org/10.1145/2220365.2220367|doi=10.1145/2220365.2220367|title=Structured Communication-Centered Programming for Web Services|year=2012|last1=Carbone|first1=Marco|last2=Honda|first2=Kohei|last3=Yoshida|first3=Nobuko|journal=ACM Transactions on Programming Languages and Systems|volume=34|issue=2|pages=1–78|s2cid=15737118}}</ref>
 
Choreographic programming is an active area of research. The paradigm has been used in the study of [[Information_flow_Information flow (information_theoryinformation theory)|information flow]],<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-319-23165-5_20|doi = 10.1007/978-3-319-23165-5_20|chapter = Discretionary Information Flow Control for Interaction-Oriented Specifications|title = Logic, Rewriting, and Concurrency|series = Lecture Notes in Computer Science|year = 2015|last1 = Lluch Lafuente|first1 = Alberto|last2 = Nielson|first2 = Flemming|last3 = Nielson|first3 = Hanne Riis|volume = 9200|pages = 427–450|isbn = 978-3-319-23164-8|url = https://backend.orbit.dtu.dk/ws/files/119987994/Discretionary_Information_Flow_Control_for_Interaction_Oriented_Specifications.pdf}}</ref> [[parallel computing]],<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-319-39570-8_8|doi = 10.1007/978-3-319-39570-8_8|chapter = Choreographies in Practice|title = Formal Techniques for Distributed Objects, Components, and Systems|series = Lecture Notes in Computer Science|year = 2016|last1 = Cruz-Filipe|first1 = Luís|last2 = Montesi|first2 = Fabrizio|volume = 9688|pages = 114–123|arxiv = 1602.08863|isbn = 978-3-319-39569-2|s2cid = 18067252}}</ref> [[cyber-physical system|cyber-physical systems]]s,<ref>{{Cite book|chapter-url=https://doi.org/10.1145/3019612.3019656|doi=10.1145/3019612.3019656|chapter=Choreographing cyber-physical distributed control systems for the energy sector|title=Proceedings of the Symposium on Applied Computing|year=2017|last1=López|first1=Hugo A.|last2=Heussen|first2=Kai|pages=437–443|isbn=9781450344869|s2cid=39112346}}</ref><ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-319-39570-8_13|doi = 10.1007/978-3-319-39570-8_13|chapter = Enforcing Availability in Failure-Aware Communicating Systems|title = Formal Techniques for Distributed Objects, Components, and Systems|series = Lecture Notes in Computer Science|year = 2016|last1 = López|first1 = Hugo A.|last2 = Nielson|first2 = Flemming|last3 = Nielson|first3 = Hanne Riis|volume = 9688|pages = 195–211|isbn = 978-3-319-39569-2}}</ref> [[adaptability|runtime adaptation]],<ref name="aiocj-paper">{{Cite journal|url=https://doi.org/10.23638/LMCS-13(2:1)2017|doi = 10.23638/LMCS-13(2:1)2017|year = 2017|last1 = Preda|first1 = Mila Dalla|last2 = Gabbrielli|first2 = Maurizio|last3 = Giallorenzo|first3 = Saverio|last4 = Lanese|first4 = Ivan|last5 = Mauro|first5 = Jacopo|title = Dynamic Choreographies: Theory and Implementation|journal = Logical Methods in Computer Science ; Volume 13|volume = 13|issue = 2|s2cid = 5555662}}</ref> and [[system integration]].<ref>{{Cite book|chapter-url=https://doi.org/10.1007/978-3-030-02671-4_2|doi = 10.1007/978-3-030-02671-4_2|chapter = ChIP: A Choreographic Integration Process|title = On the Move to Meaningful Internet Systems. OTM 2018 Conferences|series = Lecture Notes in Computer Science|year = 2018|last1 = Giallorenzo|first1 = Saverio|last2 = Lanese|first2 = Ivan|last3 = Russo|first3 = Daniel|volume = 11230|pages = 22–40|isbn = 978-3-030-02670-7|url = https://findresearcher.sdu.dk:8443/ws/files/153104697/ChIP.pdf}}</ref>
 
== Languages ==
* AIOCJ ([http://www.cs.unibo.it/projects/jolie/aiocj.html website]).<ref name="aiocj-paper"/> A choreographic programming language for [[Adaptation_Adaptation (computer_sciencecomputer science)|adaptable systems]] that produces code in in [[Jolie (programming language)|Jolie]].
* Chor ([https://www.chor-lang.org/ website]).<ref>{{Cite book|chapter-url=https://doi.org/10.1145/2429069.2429101|doi=10.1145/2429069.2429101|chapter=Deadlock-freedom-by-design|title=Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '13|year=2013|last1=Carbone|first1=Marco|last2=Montesi|first2=Fabrizio|page=263|isbn=9781450318327|s2cid=15627190}}</ref> A [[session type|session-typed]] choreographic programming language that compiles to [[microservices]] in [[Jolie (programming language)|Jolie]].
* Choral ([https://www.choral-lang.org/ website]). A higher-order, object-oriented choreographic programming language that compiles to libraries in [[Java (programming language)|Java]].