Opa (linguaggio di programmazione)
Opa linguaggio di programmazione | |
---|---|
Autore | MLstate |
Data di origine | 2011 |
Ultima versione | 1.1.0 (stabile) 13 febbraio 2013 |
Utilizzo | Sviluppo web |
Paradigmi | Multi-paradigma, Funzionale, Imperativo |
Tipizzazione | Forte, Debole |
Influenzato da | OCaml, Erlang, JavaScript |
Implementazione di riferimento | |
Licenza | GNU 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.
Esempi[modifica | modifica wikitesto]
Hello world[modifica | modifica wikitesto]
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
Note[modifica | modifica wikitesto]
- ^ Developer.com. URL consultato il 25 novembre 2019 (archiviato dall'url originale il 23 settembre 2020).
- ^ Opa actually supports various server-side backends, Nodejs being the most popular one
- ^ https://www.mendeley.com/research/static-enforcement-of-web-application-integrity-through-strong-typing/.
- ^ (EN) WASP AppSec Research 2010 - Stockholm, Sweden, in Open Web Application Security Project.
- ^ GitHub - MLstate/opalang: The Opa Language for Web Application Development, su github.com.
- ^ Opa - The Scalable Open Source Cloud Language, su webappers.com.
- ^ infoq.com, http://www.infoq.com/articles/Opa .
- ^ infoworld.com, http://www.infoworld.com/d/application-development/introducing-opa-web-dev-language-rule-them-all-172060 .
- ^ infoworld.com, http://www.infoworld.com/d/developer-world/infoworld-review-tools-rapid-web-development-297 .
- ^ Auch Opa ist für Cloud-Anwendungen | heise online, su heise.de.
- ^ i-programmer.info, http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html .
- ^ Logical Methods in Computer Science, su lmcs.episciences.org.
- ^ Opa, un nouveau langage pour le développement d’applications Web - LinuxFr.org, su linuxfr.org.
- ^ Copia archiviata, su doc.opalang.org. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 12 gennaio 2014).
- ^ Copia archiviata, su doc.opalang.org. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 12 gennaio 2014).
- ^ Programming Opa: Web development, reimagined ( - Software ). URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 2 ottobre 2016).
- ^ Copia archiviata, su morganhill.co.uk. URL consultato il 1º dicembre 2018 (archiviato dall'url originale il 25 settembre 2011).
Bibliografia[modifica | modifica wikitesto]
- Opa: Up and Running, 2013, O'Reilly Media ISBN 978-1449328856
Collegamenti esterni[modifica | modifica wikitesto]
- (EN) Sito ufficiale, su opalang.org.
- Repository sorgenti di Opa, su github.com.