Opa (limbaj de programare)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Ofertă de preluare
limbaj de programare
Autor MLstate
Data de origine 2011
Ultima versiune 1.1.0 (stabil) 13 februarie 2013
Utilizare dezvoltare web
Paradigme Multi-paradigmă, funcțională, imperativă
Tastare Puternic firav
Influențată de OCaml , Erlang , JavaScript
Implementare referință
Licență Licență publică generală GNU Affero, versiunea 3
Site-ul web ( EN ) http://www.opalang.org

Opa este un limbaj de programare open-source pentru dezvoltarea de aplicații web scalabile .

Poate fi folosit atât pentru programarea clientului, cât și pentru cea a serverului , unde programele complete scrise în Opa sunt compilate în Node.js pe server și JavaScript pe client , cu un compilator care automatizează toate comunicațiile dintre cele două. [1] [2] Opa implementează o tastare puternică și statică , utilă pentru protejarea împotriva atacurilor cibernetice, cum ar fi injecția SQL și scriptarea între site-uri . [3]

Limba a fost dezvăluită oficial pentru prima dată la conferința OWASP din 2010, [4] și codul sursă lansat pe GitHub [5] în iunie 2011, sub licența publică generală GNU Affero . Ulterior, licența a fost înlocuită cu licența MIT pentru partea cadrului (biblioteci) și AGPL pentru compilator, astfel încât aplicațiile scrise în Opa să poată fi lansate sub orice licență, indiferent dacă este proprietară sau open source.

Proiectare și funcționalitate

Opa constă dintr-un server web , o bază de date și un motor de execuție distribuită. [6] Codul scris în Opa este compilat în JavaScript folosind server-ul Node.js și JavaScript folosind jQuery pentru a asigura compatibilitatea client- cross-browser. [7] Avantajul acestei abordări față de altele precum platformele Rich Internet Application (RIA) este că utilizatorii nu trebuie să instaleze un plugin în browserul lor. [8] Opa împărtășește idealul cadrelor de aplicații web , dar folosește o abordare alternativă. [9] Designerii săi susțin că acest lucru îl ajută pe Opa să evite multe probleme de securitate, cum ar fi injecțiile SQL sau atacurile de tip cross-site scripting (XSS). [10]

Limbajul de bază este de tip funcțional și are un sistem de tip static cu interferență de tip . Opa oferă, de asemenea, sesiuni care încapsulează o stare imperativă și comunică utilizând comunicarea de schimb de mesaje , similar proceselor Erlang . Opa oferă multe structuri și funcții comune în dezvoltarea web ca obiecte de primă clasă, de exemplu HTML [11] și analizoarele sale, pe baza gramaticilor de expresie de analiză. [12] Datorită acestei aderențe între limbaj și conceptele legate de web, Opa nu este conceput pentru crearea de aplicații non-web (și, prin urmare, de aplicații desktop ). [13]

Versiunea stabilă 0.9.0 din februarie 2012 a introdus o tehnologie de cartografiere pentru baza de date non-relațională orientată către documente MongoDB , similară cu cartografierea obiect-relațională . [14] [15] [16] Versiunea 1.1.0 lansată în februarie 2013 adaugă, de asemenea, suport pentru PostgreSQL , deschizând calea pentru suport pentru mai multe baze de date SQL .

Exemple

Salut Lume

Programul tradițional Hello World , care produce un server web care servește o pagină statică cu „Hello, web!” ca conținut, poate fi scris în Opa după cum urmează: [17]

 Server . start ( Server . http ,
  { 
    title : "Bună ziua" ,
    pagina : function () { 
        <h1> Bună ziua, web! </h1>
    }
  }
)

Poate fi apoi compilat într-un fișier de cod executabil JS cu:

 $ opa hello_web.opa

Rularea fișierului rezultat JS lansează aplicația web:

 $ ./hello_web.js

Limbi conexe

  • Dart - o alternativă la JavaScript pentru aplicațiile web
  • Haxe - un limbaj de programare similar pentru aplicațiile web
  • CoffeeScript - un limbaj de programare transcompilat în Javascript pentru aplicații web

Notă

  1. ^ Developer.com .
  2. ^ Opa acceptă de fapt diverse backend-uri de pe server, Nodejs fiind cel mai popular
  3. ^ https://www.mendeley.com/research/static-enforcement-of-web-application-integrity-through-strong-typing/ .
  4. ^ (EN) WASP AppSec Research 2010 - Stockholm, Suedia , în OWASP .
  5. ^ GitHub - MLstate / opalang: The Opa Language for Web Application Development , la github.com .
  6. ^ Opa - Limbajul cloud scalabil cu sursă deschisă | Resurse Web | WebAppers , pe 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 , la heise.de .
  11. ^ i-programmer.info , http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html .
  12. ^ Metode logice în informatică , la lmcs.episciences.org .
  13. ^ Opa, a nouveau langage pour le développement d'applications Web - LinuxFr.org , pe linuxfr.org .
  14. ^ Copie arhivată , la doc.opalang.org . Adus la 1 decembrie 2018 (arhivat din original la 12 ianuarie 2014) .
  15. ^ Copie arhivată , la doc.opalang.org . Adus la 1 decembrie 2018 (arhivat din original la 12 ianuarie 2014) .
  16. ^ Programare Opa: Dezvoltare web, reinventat (- Software) . Adus la 1 decembrie 2018 (arhivat din original la 2 octombrie 2016) .
  17. ^ Copie arhivată , la morganhill.co.uk . Adus la 1 decembrie 2018 (arhivat din original la 25 septembrie 2011) .

Bibliografie

linkuri externe