Opa (programming language): Difference between revisions

Content deleted Content added
lang=opa
m clean up per WP:CHECKWIKI using AWB
Line 15:
}}
 
'''Opa''' is an [[open source software|open source]] [[programming language]] for developing [[Scalability|scalable]] [[web applications]].
 
It can be used for both [[client-side scripting|client-side]] and [[server-side scripting]], where complete programs are written in Opa and subsequently compiled to [[Nodejs]] on the [[server (computing)|server]] and [[JavaScript]] on the [[client (computing)|client]], with the [[compiler]] automating all communication between the two.<ref>{{cite web |author=Adam Koprowski|url=http://www.developer.com/open/opa-vs.-node.js-javascript-framework-comparison.html|title=Node.js vs. Opa: Web Framework Showdown|publisher=developer.com|date=24 February 2012}}</ref><ref>Opa actually supports various server-side backends, Nodejs being the most popular one</ref> Opa implements [[Strong typing|strong]], [[static typing]], which can be helpful in protecting against security issues such as [[SQL injection]]s and [[cross-site scripting]] attacks.<ref>{{cite journal|url=http://www.mendeley.com/research/static-enforcement-of-web-application-integrity-through-strong-typing/|title=Static Enforcement of Web Application Integrity Through Strong Typing|last1=Robertson |first1=William |last2=Giovanni |first2=Vigna |year=2009|journal=SSYM'09 Proceedings of the 18th conference on USENIX security symposium}}</ref>
Line 32:
The core language is [[functional programming|functional]] and has a static [[type system]] with [[type inference]]. Opa also provides sessions which encapsulate an [[imperative programming|imperative]] state and communicate using [[message passing]], similar to [[Erlang (programming language)|Erlang]] processes. Opa provides many structures or functions that are common in web development, as [[first-class object]]s,
for instance [[HTML]]<ref>{{cite web|url=http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html
|title=Opa - a unified approach to web programming |publisher=i-Programmer |date=28 August 2011}}</ref> and [[parser]]s, based on [[Parsing Expression Grammar]]s.<ref>{{cite web |author=Koprowski, Binsztok |year=2011|url=http://www.lmcs-online.org/ojs/viewarticle.php?id=708&layout=abstract|title=TRX: A Formally Verified Parser Interpreter|publisher=Logical Methods in Computer Science |}}</ref>
Because of this adhesion between the language and web-related concepts, Opa is not intended for non-web applications (for instance [[desktop application]]s).<ref>{{cite web |url=http://linuxfr.org/news/opa-un-nouveau-langage-pour-le-d%C3%A9veloppement-d%E2%80%99applications-web |title=Opa, un nouveau langage pour le développement d’applications Web|publisher=LinuxFr |language=French|date=22 June 2011}}</ref>