Opa (linguaggio di programmazione)

linguaggio di programmazione

Opa è un linguaggio di programmazione open source per lo sviluppo di applicazioni web scalabili.

Opa
linguaggio di programmazione
AutoreMLstate
Data di origine2011
Ultima versione1.1.0 (stabile) 13 febbraio 2013
UtilizzoSviluppo web
ParadigmiMulti-paradigma, Funzionale, Imperativo
TipizzazioneForte, Debole
Influenzato daOCaml, Erlang, JavaScript
Implementazione di riferimento
LicenzaGNU Affero General Public License, versione 3
Sito web(EN) http://www.opalang.org

Può essere usato sia per programmazione lato client e lato server, dove programmi completi scritti in Opa sono compilati in Node.js sul server e JavaScript sul client, con un compilatore che rende automatiche tutte le comunicazioni tra i due.[1][2] Opa implementa una tipizzazione forte e statica, utile nella protezione conto attacchi informatici come SQL injection e cross-site scripting.[3]

Il linguaggio è stato presentato ufficialmente per la prima volta alla conferenza OWASP nel 2010,[4] e il codice sorgente rilasciato su GitHub[5] nel giugno 2011, sotto la GNU Affero General Public License. Successivamente, la licenza è stata sostituita con la licenza MIT per la parte del framework (librerie) e la AGPL per il compilatore cosicché le applicazioni scritte in Opa possono essere rilasciate sotto qualunque licenza, che essa sia proprietaria o open source.

Design e funzionalità

modifica

Opa è formata da un server web, un database ed un motore di esecuzione distribuito.[6] Il codice scritto in Opa viene compilato in JavaScript utilizzando Node.js lato server e in JavaScript utilizzando jQuery per garantire una compatibilità cross-browser sul lato client.[7] Il vantaggio di questo approccio rispetto ad altri come le piattaforme Rich Internet Application (RIA) è che gli utenti non devono installare un plugin nel loro browser.[8] Opa condivide l'ideale dei framework per applicazioni web, ma utilizza un approccio alternativo.[9] I suoi designer affermano che ciò aiuta Opa ad evitare molti problemi di sicurezza, come gli attacchi SQL injections o cross-site scripting (XSS).[10]

Il linguaggio di base è di tipo funzionale e ha un sistema dei tipi statico con l'interferenza dei tipi. Opa fornisce inoltre le sessioni che incapsulano uno stato imperativo e comunicano utilizzando una comunicazione a scambio di messaggi, simile ai processi Erlang. Opa fornisce molte strutture e funzioni comuni nello sviluppo web come oggetti first-class, per esempio l'HTML[11] e i suoi parser, basati sulle Parsing Expression Grammars.[12] A causa di questa adesione tra il linguaggio ed i concetti legati al web, Opa non è concepito per la creazioni di applicazioni non web (e quindi applicazioni desktop).[13]

La versione stabile 0.9.0 del febbraio 2012 ha introdotto una tecnologia di mappatura per il database non relazionale orientato ai documenti MongoDB, simile alla object-relational mapping.[14][15][16] La versione 1.1.0 rilasciata nel febbraio 2013 aggiunge inoltre il supporto per PostgreSQL, spianando la strada per il supporto a diversi database SQL.

Hello world

modifica

Il tradizionale programma Hello World, che produce un web server che serve una pagina statica con "Hello, web!" come contenuto, può essere in scritto in Opa così:[17]

Server.start(Server.http,
  { 
    title: "Hello",
    page: function() { 
        <h1>Hello, web!</h1>
    }
  }
)

Può quindi essere compilato in un file codice eseguibile JS con:

$ opa hello_web.opa

L'esecuzione del file risultato JS lancia l'applicazione web:

$ ./hello_web.js

Linguaggi correlati

modifica
  • Dart - un'alternativa a JavaScript per le web app
  • Haxe - un linguaggio di programmazione simile per web app
  • CoffeeScript - un linguaggio di programmazione transcompilato a Javascript per web app
  1. ^ Developer.com. URL consultato il 25 novembre 2019 (archiviato dall'url originale il 23 settembre 2020).
  2. ^ Opa actually supports various server-side backends, Nodejs being the most popular one
  3. ^ https://www.mendeley.com/research/static-enforcement-of-web-application-integrity-through-strong-typing/.
  4. ^ (EN) WASP AppSec Research 2010 - Stockholm, Sweden, in Open Web Application Security Project.
  5. ^ GitHub - MLstate/opalang: The Opa Language for Web Application Development, su github.com.
  6. ^ Opa - The Scalable Open Source Cloud Language, su webappers.com.
  7. ^ infoq.com, http://www.infoq.com/articles/Opa.
  8. ^ infoworld.com, http://www.infoworld.com/d/application-development/introducing-opa-web-dev-language-rule-them-all-172060.
  9. ^ infoworld.com, http://www.infoworld.com/d/developer-world/infoworld-review-tools-rapid-web-development-297.
  10. ^ Auch Opa ist für Cloud-Anwendungen | heise online, su heise.de.
  11. ^ i-programmer.info, http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html.
  12. ^ Logical Methods in Computer Science, su lmcs.episciences.org.
  13. ^ Opa, un nouveau langage pour le développement d’applications Web - LinuxFr.org, su linuxfr.org.
  14. ^ Copia archiviata, su doc.opalang.org. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 12 gennaio 2014).
  15. ^ Copia archiviata, su doc.opalang.org. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 12 gennaio 2014).
  16. ^ Programming Opa: Web development, reimagined ( - Software ). URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 2 ottobre 2016).
  17. ^ Copia archiviata, su morganhill.co.uk. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 25 settembre 2011).

Bibliografia

modifica

Collegamenti esterni

modifica