Opa (мова програмування)

(Перенаправлено з Opa (programming language))

Opa — мова програмування з відкритим вихідним кодом для розробки масштабованих вебдодатків.

Opa
Парадигма мульти-парадигма: функціональна та імперативна
Дата появи 2011
Розробник MLstate
Останній реліз 1.1.0 (stable) (13 лютого 2013; 11 років тому (2013-02-13)[1])
Система типізації static, strong, inferred
Під впливом від OCaml, Erlang, JavaScript
Операційна система Linux, OS X, Windows
Ліцензія MIT License, AGPLv3
Репозиторій вихідного коду github.com/MLstate/opalang
Вебсайт opalang.org

Мову можна використовувати як для клієнтських, так і для серверних сценаріїв, де програми пишуться в Opa і згодом компілюються в Nodejs на сервері в на JavaScript на стороні клієнта.[2][3] Opa має сильну статичну типізацію, яка може бути корисна в захисті проти безпеки таких проблем, як в SQL-ін'єкції і міжсайтовий скриптинг.[4]

Мову було вперше офіційно представлено на конференції OWASP 2010 року,[5] а вихідний код викладено на github[6] у червні 2011-го.

Design and features ред.

Opa складається з вебсерверабази даних та розподіленого рушія.[7] Код компілюється в JavaScript за допомогою Node.js на серверній стороні і в JavaScript з використанням jQuery для крос-браузерної сумісності на стороні клієнта.[8] Перевага даного підходу в порівнянні з деякими платформами Rich Internet Applications (RIA) є те, що користувачам не потрібно встановити плагін для браузера.[9] Opa розподіляє дії вебфреймворками, але використовує трохи інший підхід.[10] Його конструктори стверджують, що це допомагає мові уникнути багатьох проблем безпеки, на кшталт SQL ін'єкцій і міжсайтового скриптингу (XSS).[11]

Ядро мови функціональне і має статичний тип за видами типів. Мова також забезпечує роботу сесій, які інкапсулюють імперативні стани і взаємодіють за допомогою передачі повідомлень, схожими на роботу Erlang. Opa надає безліч структур або функцій, які є спільними в веброзробці, як об'єкти першого класу. Наприклад, HTML[12] та аналізатори, засновані на парсингу граматичних виразів.[13] Через це ця мова не призначена для створення не-вебдодатків (наприклад, додатків для настільних комп'ютерів).[14]

У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних MongoDB, схожих на об'єктно-реляційні відображення.[15][16][17] В версії 1.1.0 в лютому 2013 року також додано підтримку PostgreSQL.

Приклади ред.

Hello world ред.

Традиційна програма Hello world! створює вебсервер, який відобразить статичну сторінку з текстом «Hello world!», її код буде наступним:[18]

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

Він може бути скомпільований в окремий JS-файл:

$ opa hello_web.opa

Запуск JS-файлу запускає вебдодаток:

$ ./hello_web.js

Див. також ред.

  • Dart — JS-альтернатива для вебдодатків
  • Haxe — подібна мова програмування для вебдодатків
  • CoffeeScript — мова програмування, що компілюється в JavaScript

Примітки ред.

  1. http://blog.opalang.org/2013/02/some-great-news-on-opa.html
  2. Adam Koprowski (24 February 2012).
  3. Opa actually supports various server-side backends, Nodejs being the most popular one
  4. Robertson, William; Giovanni, Vigna (2009).
  5. "OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010".
  6. «GitHub repository» [Архівовано 25 лютого 2016 у Wayback Machine.].
  7. «Opa — The Scalable Open Source Cloud Language» [Архівовано 12 жовтня 2016 у Wayback Machine.].
  8. «Interview: François-Régis Sinot on Opa, a Web Development Platform» [Архівовано 10 травня 2016 у Wayback Machine.].
  9. Neil McAllister (8 September 2011).
  10. «InfoWorld review: Tools for rapid Web development» [Архівовано 19 травня 2010 у Wayback Machine.].
  11. «Auch Opa ist für Cloud-Anwendungen» [Архівовано 2 липня 2016 у Wayback Machine.].
  12. «Opa — a unified approach to web programming» [Архівовано 13 березня 2016 у Wayback Machine.]. i-Programmer. 28 August 2011.
  13. Koprowski, Binsztok (2011).
  14. «Opa, un nouveau langage pour le développement d'applications Web» [Архівовано 27 лютого 2017 у Wayback Machine.] (in French).
  15. «Hello, database» [Архівовано 12 січня 2014 у Wayback Machine.].
  16. «Low-level MongoDB support» [Архівовано 12 січня 2014 у Wayback Machine.].
  17. «Programming Opa: Web development, reimagined» [Архівовано 2 жовтня 2016 у Wayback Machine.].
  18. Alastair Aitken (26 July 2011).

Бібліографія ред.

Посилання ред.