Paradigm | multi- парадигма : функциональный, императивный |
---|---|
Разработчик | MLstate |
Впервые появился | 2011 |
Стабильный выпуск | 1.1.0 (стабильный) / 13 февраля 2013 г.; 7 лет назад (13.02.2013) |
Дисциплина печати | статическая, сильная, предположительно |
OS | Linux, OS X, Windows |
Лицензия | Лицензия MIT, AGPLv3 |
Веб-сайт | opalang.org |
Под влиянием | |
OCaml, Erlang, JavaScript |
Opa - это открытый исходный код язык программирования для разработки масштабируемых веб приложения.
Его можно использовать как для на стороне клиента, так и для сценариев на стороне сервера, где полные программы написаны на Opa и впоследствии скомпилированы в Node.js на сервере и JavaScript на клиенте, с компилятором , автоматизирующим все коммуникации между ними. Opa реализует сильную, статическую типизацию, что может быть полезно для защиты от таких проблем безопасности, как SQL-инъекции и атаки межсайтового скриптинга..
Впервые язык был официально представлен на конференции OWASP в 2010 году, а исходный код был выпущен на GitHub в июне 2011 года под лицензией GNU. Стандартная общественная лицензия Affero. Позже лицензия была изменена на лицензию MIT для части фреймворка (библиотеки) и AGPL для компилятора, так что приложения, написанные на Opa, могут быть выпущены по любой лицензии, проприетарной или с открытым исходным кодом.
Opa состоит из веб-сервера, базы данных и механизма распределенного выполнения. Код, написанный на Opa, компилируется в JavaScript с использованием Node.js на стороне сервера и в JavaScript с использованием jQuery для кроссбраузерности на стороне клиента. Преимущество этого подхода по сравнению с некоторыми платформами Rich Internet Application (RIA) заключается в том, что пользователям не требуется устанавливать подключаемый модуль в своем браузере. Opa разделяет мотивацию с веб-фреймворками, но использует другой подход. Его разработчики утверждают, что это помогает Opa избежать многих проблем с безопасностью, таких как SQL-инъекции или атаки межсайтового скриптинга (XSS).
Основной язык: функциональный и имеет статическую систему типов с выводом типа . Opa также предоставляет сеансы, которые инкапсулируют императивное состояние и взаимодействуют с использованием передачи сообщений, подобно процессам Erlang. Opa предоставляет множество структур или функций, которые являются общими для веб-разработки, например, первоклассные объекты, например, HTML и парсеры, на основе Parsing Expression Грамматики. Из-за этой связи между языком и концепциями, связанными с Интернетом, Opa не предназначен для не-веб-приложений (например, настольных приложений ).
В выпуске 0.9.0 в феврале 2012 года была представлена технология сопоставления баз данных для нереляционных, документно-ориентированная база данных MongoDB, аналогичная объектно-реляционному отображению. В выпуске 1.1.0 в феврале 2013 года также добавлена поддержка PostgreSQL, открыв путь для поддержка нескольких баз данных SQL.
Традиционная программа Hello world, создающая веб-сервер который обслуживает статическую страницу с содержанием «Hello, web!», может быть записан в Opa как:
Server.start (Server.http, {title: "Hello", page: function () {Opa (язык программирования) - Opa (programming language)
}})
Его можно скомпилировать в автономный исполняемый файл JS с помощью:
$ opa hello_web.opa
Запуск полученного исполняемого файла JS запускает веб-приложение:
$./hello_web.js