Vai al contenuto

Opa (linguaggio di programmazione)

Da Wikipedia, l'enciclopedia libera.
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

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

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 | modifica wikitesto]

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.

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 | modifica wikitesto]
  • 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, https://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, https://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).

Collegamenti esterni

[modifica | modifica wikitesto]
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica