Opa è un linguaggio di programmazione open-source per lo sviluppo di applicazioni web scalabili.
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 |
Modifica dati su Wikidata · Manuale |
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.
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
titolo
vuoto o mancante (aiuto)url
(aiuto).url
(aiuto).url
(aiuto).url
(aiuto).