Multitier programming: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Alter: template type, last, journal. Add: page, date, pages, issue, arxiv, journal, chapter-url, chapter, s2cid, isbn, volume, series, author pars. 1-1. Removed or converted URL. Removed parameters. Formatted dashes. Some additions/deletions were actually parameter name changes. Correct ISBN10 to ISBN13. | You can use this bot yourself. Report bugs here. | Suggested by Ost316 | Category:AfC pending submissions by age/6 days ago‎ | via #UCB_Category 5/54
No edit summary
Line 2:
{{AFC submission|d|nn|u=Guidosalva|ns=118|decliner=Sulfurboy|declinets=20200503041732|ts=20200502105719}} <!-- Do not remove this line! -->
 
'''Multitier programming''' is a [[programming paradigm]] for [[Distributeddistributed computing|distributed software]]., which typically Infollows a [[multitier programmingarchitecture]], thephysically functionalitiesseparating thatdifferent belongfunctional toaspects multipleof the software into different ''tiers'' (e.g., the client, the server and the database in a Web application). areMultitier partprogramming ofallows thefuctionalities samethat compilationspan unitmultiple andof aresuch tiers to be developed in thea samesingle compilation unit using a single [[programming language]]. InWithout contrast,multitier traditionallyprogramming, tiers are developed using different languages, e.g., [[JavaScript]] for the Web client, [[PHP]] for the Web server and [[SQL]] for the database. The first multitier programming languages include Links.<ref name=":0">{{Cite book|last=Cooper|first=Ezra|date=2006|title=Links: Web Programming Without Tiers.|series=Lecture Notes in Computer Science|volume=4709|url=https://dblp.org/rec/conf/fmco/CooperLWY06.html|pages=266–296|doi=10.1007/978-3-540-74792-5_12|isbn=978-3-540-74791-8}}</ref> and Hop<ref name=":1">{{Cite journal|last=Serrano|first=Manuel|date=2012|title=Multitier programming in Hop.|url=https://dblp.org/rec/journals/cacm/SerranoB12.html|journal=Commun. ACM|volume=55|issue=8|pages=53–59|doi=10.1145/2240236.2240253|s2cid=2152326}}</ref>
 
*Multitier programming was pioneered by the Hop/Hop.js<ref name=":10">{{Cite journal|last=Serrano|first=Manuel|date=2012|title=Multitier programming in Hop.|url=https://dblp.org/rec/journals/cacm/SerranoB12.html|journal=Commun. ACM|volume=55|issue=8|pages=53–59|doi=10.1145/2240236.2240253|s2cid=2152326}}</ref> and Links<ref name=":1">{{Cite journalbook|last=SerranoCooper|first=ManuelEzra|date=2006|title=HopLinks: aWeb languageProgramming forWithout programming the web 2.0Tiers.|urlseries=https://dblp.org/rec/conf/oopsla/SerranoGL06.html|pages=975–985|doi=10.1145/1176617.1176756|s2cid=14306230}}</ref><ref>{{CiteLecture book|last=Serrano|first=Manuel|date=2016|title=ANotes glimpsein ofComputer Hopjs.Science|volume=4709|url=https://dblp.org/rec/conf/icfpfmco/SerranoP16CooperLWY06.html|pages=180–192266–296|doi=10.11451007/2951913.2951916978-3-540-74792-5_12|isbn=9781450342193978-3-540-74791-8}}</ref> languages
and has found industrial adoption in a number of languages<ref name=":2">{{Cite journal|last=Balat|first=Vincent|date=2006|title=Ocsigen: typing web interaction with objective Caml.|url=https://dblp.org/rec/conf/ml/Balat06.html|pages=84–94|doi=10.1145/1159876.1159889|s2cid=6131454}}</ref><ref name=":3">{{Cite journal|last1=Bjornson|first1=Joel|last2=Tayanovskyy|first2=Anton|last3=Granicz|first3=Adam|date=2010|title=Composing Reactive GUIs in F# Using WebSharper|journal=Proceedings of the 22nd International Conference on Implementation and Application of Functional Languages|page=49|___location=Berlin, Heidelberg|publisher=Springer-Verlag|doi=10.1007/978-3-642-24276-2_13}}</ref><ref name=":4">{{Cite book|last=Strack, Isaac|url=https://www.worldcat.org/oclc/823718999|title=Getting started with Meteor JavaScript framework|date=January 2012|isbn=978-1-78216-083-0|___location=Birmingham|oclc=823718999}}</ref>.
 
== Example ==
Line 181 ⟶ 184:
== List of multitier programming languages ==
 
* LinksHop/Hop.js<ref name=":0">{{Cite bookjournal|last=CooperSerrano|first=EzraManuel|date=20062012|title=Links:Multitier Webprogramming Programmingin Without TiersHop.|series=Lecture Notes in Computer Science|volume=4709|url=https://dblp.org/rec/confjournals/fmcocacm/CooperLWY06SerranoB12.html|journal=Commun. ACM|volume=55|issue=8|pages=266–29653–59|doi=10.10071145/978-3-540-74792-5_122240236.2240253|isbns2cid=978-3-540-74791-82152326}}</ref><ref>{{Cite journal|last=FowlerSerrano|first=SimonManuel|date=20192006|title=ExceptionalHop: asynchronousa sessionlanguage types:for sessionprogramming typesthe withoutweb tiers2.0.|url=https://dblp.org/rec/journalsconf/pacmploopsla/FowlerLMD19SerranoGL06.html|journalpages=Proc975–985|doi=10. ACM Program1145/1176617.1176756|s2cid=14306230}}</ref><ref>{{Cite Lang.book|volumelast=3Serrano|issuefirst=POPLManuel|pagesdate=28:1–282016|title=A glimpse of Hopjs.|url=https:29//dblp.org/rec/conf/icfp/SerranoP16.html|pages=180–192|doi=10.1145/32903412951913.2951916|s2cidisbn=577574699781450342193}}</ref>
* Links<ref name=":1">{{Cite book|last=Cooper|first=Ezra|date=2006|title=Links: Web Programming Without Tiers.|series=Lecture Notes in Computer Science|volume=4709|url=https://dblp.org/rec/conf/fmco/CooperLWY06.html|pages=266–296|doi=10.1007/978-3-540-74792-5_12|isbn=978-3-540-74791-8}}</ref><ref>{{Cite journal|last=Fowler|first=Simon|date=2019|title=Exceptional asynchronous session types: session types without tiers.|url=https://dblp.org/rec/journals/pacmpl/FowlerLMD19.html|journal=Proc. ACM Program. Lang.|volume=3|issue=POPL|pages=28:1–28:29|doi=10.1145/3290341|s2cid=57757469}}</ref>
 
* Hop/Hop.js<ref name=":1">{{Cite journal|last=Serrano|first=Manuel|date=2012|title=Multitier programming in Hop.|url=https://dblp.org/rec/journals/cacm/SerranoB12.html|journal=Commun. ACM|volume=55|issue=8|pages=53–59|doi=10.1145/2240236.2240253|s2cid=2152326}}</ref><ref>{{Cite journal|last=Serrano|first=Manuel|date=2006|title=Hop: a language for programming the web 2.0.|url=https://dblp.org/rec/conf/oopsla/SerranoGL06.html|pages=975–985|doi=10.1145/1176617.1176756|s2cid=14306230}}</ref><ref>{{Cite book|last=Serrano|first=Manuel|date=2016|title=A glimpse of Hopjs.|url=https://dblp.org/rec/conf/icfp/SerranoP16.html|pages=180–192|doi=10.1145/2951913.2951916|isbn=9781450342193}}</ref>
*Ur/Web<ref>{{Cite journal|last=Chlipala|first=Adam|date=2015|title=Ur/Web: A Simple Model for Programming the Web.|url=https://dblp.org/rec/conf/popl/Chlipala15.html|pages=153–165|doi=10.1145/2676726.2677004|s2cid=9440677}}</ref>
*Eliom/Ocsigen<ref name=":2">{{Cite journal|last=Balat|first=Vincent|date=2006|title=Ocsigen: typing web interaction with objective Caml.|url=https://dblp.org/rec/conf/ml/Balat06.html|pages=84–94|doi=10.1145/1159876.1159889|s2cid=6131454}}</ref><ref>{{Cite book|last=Radanne|first=Gabriel|date=2018|title=Tierless Web Programming in the Large.|url=https://dblp.org/rec/conf/www/RadanneV18.html|pages=681–689|doi=10.1145/3184558.3185953|isbn=9781450356404|s2cid=3304415}}</ref>
*ScalaLoci<ref>{{Cite journal|last=Weisenburger|first=Pascal|date=2018|title=Distributed system development with ScalaLoci.|url=https://dblp.org/rec/journals/pacmpl/WeisenburgerKS18.html|journal=Proc. ACM Program. Lang.|volume=2|issue=OOPSLA|pages=129:1–129:30|doi=10.1145/3276499|s2cid=53090153}}</ref>
*StiP.js<ref>{{Cite book|last=Philips|first=Laure|date=2014|title=Towards Tierless Web Development without Tierless Languages.|url=https://dblp.org/rec/conf/oopsla/PhilipsRCM14.html|pages=69–81|doi=10.1145/2661136.2661146|isbn=9781450332101|s2cid=15774367}}</ref><ref>{{Cite journal|last=Philips|first=Laure|date=2018|title=Search-based Tier Assignment for Optimising Offline Availability in Multi-tier Web Applications.|url=https://dblp.org/rec/journals/programming/PhilipsKMR18.html|journal=Programming Journal|volume=2|issue=2|pages=3|doi=10.22152/programming-journal.org/2018/2/3|s2cid=11256561}}</ref>
Line 192 ⟶ 194:
*AmbientTalk/R<ref>{{Cite book|last=Carreton|first=Andoni Lombide|date=2010|title=Loosely-Coupled Distributed Reactive Programming in Mobile Ad Hoc Networks.|series=Lecture Notes in Computer Science|volume=6141|url=https://dblp.org/rec/conf/tools/CarretonMCM10.html|pages=41–60|doi=10.1007/978-3-642-13953-6_3|isbn=978-3-642-13952-9}}</ref><ref>{{Cite book|last=Dedecker|first=Jessie|date=2006|title=Ambient-Oriented Programming in AmbientTalk.|chapter=Ambient-Oriented Programming in Ambient ''Talk''|series=Lecture Notes in Computer Science|volume=4067|chapter-url=https://dblp.org/rec/conf/ecoop/DedeckerCMDM06.html|pages=230–254|doi=10.1007/11785477_16|isbn=978-3-540-35726-1}}</ref>
*ML5<ref>{{Cite book|last=VII|first=Tom Murphy|date=2007|title=Type-Safe Distributed Programming with ML5.|series=Lecture Notes in Computer Science|volume=4912|url=https://dblp.org/rec/conf/tgc/VIICH07.html|pages=108–123|doi=10.1007/978-3-540-78663-4_9|isbn=978-3-540-78662-7}}</ref>
*WebSharper<ref name=":3">{{Cite journal|last1=Bjornson|first1=Joel|last2=Tayanovskyy|first2=Anton|last3=Granicz|first3=Adam|date=2010|title=Composing Reactive GUIs in F# Using WebSharper|journal=Proceedings of the 22nd International Conference on Implementation and Application of Functional Languages|page=49|___location=Berlin, Heidelberg|publisher=Springer-Verlag|doi=10.1007/978-3-642-24276-2_13}}</ref>
*WebSharper<ref>{{Cite web|title=WebSharper|url=https://websharper.com/|website=websharper.com|access-date=2020-05-04}}</ref>
*Haste<ref>{{Cite journal|last1=Ekblad|first1=Anton|last2=Claessen|first2=Koen|date=2015-05-11|title=A seamless, client-centric programming model for type safe web applications|url=http://dx.doi.org/10.1145/2775050.2633367|journal=ACM SIGPLAN Notices|volume=49|issue=12|pages=79–89|doi=10.1145/2775050.2633367|issn=0362-1340}}</ref>
*Fun<ref>{{Cite web|title=Fun (a programming language for the realtime web)|url=http://marcuswest.in/essays/fun-intro/|website=marcuswest.in|access-date=2020-05-04}}</ref>
Line 200 ⟶ 202:
*Volta<ref>{{Cite journal|last=Manolescu|first=Dragos|date=2008|title=Volta: Developing Distributed Applications by Recompiling.|url=https://dblp.org/rec/journals/software/ManolescuBL08.html|journal=IEEE Software|volume=25|issue=5|pages=53–59|doi=10.1109/MS.2008.131|s2cid=24360031}}</ref>
*GWT<ref>{{Cite book|last=Kereki, Federico, 1960-|url=https://www.worldcat.org/oclc/606556208|title=Essential GWT : building for the web with Google Web toolkit 2|date=2011|publisher=Addison-Wesley|isbn=978-0-321-70563-1|___location=Upper Saddle River, NJ|oclc=606556208}}</ref>
*Meteor<ref name=":4">{{Cite book|last=Strack, Isaac|url=https://www.worldcat.org/oclc/823718999|title=Getting started with Meteor JavaScript framework|date=January 2012|isbn=978-1-78216-083-0|___location=Birmingham|oclc=823718999}}</ref>
*J-Orchestra<ref>{{Cite book|last=Tilevich|first=Eli|date=2002|title=J-Orchestra: Automatic Java Application Partitioning.|series=Lecture Notes in Computer Science|volume=2374|url=https://dblp.org/rec/conf/ecoop/TilevichS02.html|pages=178–204|doi=10.1007/3-540-47993-7_8|isbn=978-3-540-43759-8}}</ref>
*Hiphop<ref>{{Cite journal|last1=Berry|first1=Gérard|last2=Nicolas|first2=Cyprien|last3=Serrano|first3=Manuel|date=2011|title=Hiphop|url=http://dx.doi.org/10.1145/2093328.2093337|journal=Proceedings of the 1st ACM SIGPLAN International Workshop on Programming Language and Systems Technologies for Internet Clients - PLASTIC '11|page=49|___location=New York, New York, USA|publisher=ACM Press|doi=10.1145/2093328.2093337|isbn=978-1-4503-1171-7|s2cid=1280230}}</ref>