Opa (мова програмування)
Opa — мова програмування з відкритим вихідним кодом для розробки масштабованих веб-додатків.
Opa | |
---|---|
Парадигма | мульти-парадигма: функціональна та імперативна |
Дата появи | 2011 |
Розробник | MLstate |
Останній реліз | 1.1.0 (stable) (13 лютого 2013[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-альтернатива для веб-додатків
- Нaxe — подібна мова програмування для веб-додатків
- CoffeeScript — мова програмування, що компілюється в JavaScript
Примітки
- http://blog.opalang.org/2013/02/some-great-news-on-opa.html
- Adam Koprowski (24 February 2012).
- Opa actually supports various server-side backends, Nodejs being the most popular one
- Robertson, William; Giovanni, Vigna (2009).
- "OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010".
- «GitHub repository».
- «Opa — The Scalable Open Source Cloud Language».
- «Interview: François-Régis Sinot on Opa, a Web Development Platform».
- Neil McAllister (8 September 2011).
- «InfoWorld review: Tools for rapid Web development».
- «Auch Opa ist für Cloud-Anwendungen».
- «Opa — a unified approach to web programming». i-Programmer. 28 August 2011.
- Koprowski, Binsztok (2011).
- «Opa, un nouveau langage pour le développement d'applications Web» (in French).
- «Hello, database» Архівовано 12 січня 2014 у Wayback Machine..
- «Low-level MongoDB support» Архівовано 12 січня 2014 у Wayback Machine..
- «Programming Opa: Web development, reimagined».
- Alastair Aitken (26 July 2011).
Бібліографія
- Opa: Up and Running, 2013, O'Reilly Media ISBN 978-1449328856