Опа (язык программирования)
![]() | |
Парадигма | мультипарадигмальность : функциональная , императивная |
---|---|
Разработчик | MLstate |
Впервые появился | 2011 |
Стабильная версия | |
Дисциплина набора текста | статический , сильный , предполагаемый |
ТЫ | Линукс , ОС Х , Windows |
Лицензия | Лицензия MIT , AGPLv3 |
Веб-сайт | опаланг |
Под влиянием | |
OCaml , Эрланг , JavaScript |
Opa — с открытым исходным кодом язык программирования для разработки масштабируемых веб-приложений .
Его можно использовать как для сценариев на стороне клиента , так и на стороне сервера , когда полные программы пишутся на Opa и впоследствии компилируются в Node.js на сервере и в JavaScript на клиенте , при этом компилятор автоматизирует все взаимодействие между ними. [3] [4] Opa реализует строгую статическую типизацию , которая может быть полезна для защиты от проблем безопасности, таких как SQL-инъекции и атаки с использованием межсайтовых сценариев . [5]
Впервые язык был официально представлен на конференции OWASP в 2010 году. [6] и исходный код был опубликован на GitHub [7] в июне 2011 года под лицензией GNU Affero General Public License . Позже лицензия была изменена на лицензию MIT для части платформы (библиотеки) и AGPL для компилятора, так что приложения, написанные на Opa, можно выпускать под любой лицензией, проприетарной или с открытым исходным кодом.
Дизайн и особенности
[ редактировать ]Opa состоит из веб-сервера , базы данных и механизма распределенного выполнения. [8] Код, написанный на Opa, компилируется в JavaScript с использованием Node.js на стороне сервера и в JavaScript с использованием jQuery для кроссбраузерной совместимости на стороне клиента . [9] Преимущество этого подхода по сравнению с некоторыми платформами Rich Internet Application (RIA) заключается в том, что пользователям не требуется устанавливать плагин в свой браузер. [10] Opa разделяет мотивацию веб-фреймворков , но использует другой подход. [11] Его разработчики утверждают, что это помогает Opa избежать многих проблем безопасности, таких как SQL-инъекции или атаки межсайтового скриптинга (XSS). [12]
Основной язык функционален и имеет статическую систему типов с выводом типа . Opa также предоставляет сеансы, которые инкапсулируют императивное состояние и взаимодействуют с помощью передачи сообщений , аналогично процессам Erlang . Opa предоставляет множество структур и функций, которые часто встречаются в веб-разработке, например, первоклассные объекты . например HTML [13] и синтаксические анализаторы , основанные на анализе грамматик выражений . [14] Из-за этой связи между языком и концепциями, связанными с Интернетом, Opa не предназначен для не-веб-приложений (например, настольных приложений ). [15]
В выпуске 0.9.0 в феврале 2012 года была представлена технология сопоставления баз данных для нереляционной, документо-ориентированной базы данных MongoDB , аналогичная объектно-реляционному сопоставлению . [16] [17] [18] В версии 1.1.0, вышедшей в феврале 2013 года, также была добавлена поддержка PostgreSQL , что открыло путь для поддержки нескольких баз данных SQL .
Примеры
[ редактировать ]Привет, мир
[ редактировать ]Традиционная программа Hello world , создающая веб-сервер, обслуживающий статическую страницу с надписью «Hello, web!» в качестве его содержимого можно записать на Opa как: [19]
Server.start(Server.http,
{ title: "Hello"
, page: function() { <h1>Hello, web!</h1> }
}
)
Его можно скомпилировать в отдельный исполняемый файл JS с помощью:
$ opa hello_web.opa
Запуск полученного исполняемого файла JS запускает веб-приложение:
$ ./hello_web.js
См. также
[ редактировать ]- Ur — функциональный язык программирования для веб-разработки.
- Dart — альтернатива Javascript для веб-приложений
- Haxe — аналогичный язык программирования для веб-приложений.
- CoffeeScript — язык программирования, транскомпилированный в Javascript для веб-приложений.
- Dark — язык программирования, объединяющий разработку и развертывание бессерверных сервисов.
Ссылки
[ редактировать ]- ^ «Выпуск 1.1.1 · MLstate/opalang» . Гитхаб . Проверено 29 января 2021 г.
- ^ «Некоторые отличные новости об Опе» . Проверено 29 января 2021 г.
- ^ Адам Копровски (24 февраля 2012 г.). «Node.js против Opa: разборка веб-фреймворков» . разработчик.com.
- ^ Opa на самом деле поддерживает различные серверные серверные части, наиболее популярным из которых является Nodejs.
- ^ Робертсон, Уильям; Джованни, Винья (2009). «Статическое обеспечение целостности веб-приложений посредством строгой типизации» . SSYM'09 Материалы 18-й конференции по симпозиуму по безопасности USENIX . [ постоянная мертвая ссылка ]
- ^ «OPA: Языковая поддержка для разумного, безопасного и защищенного Интернета на OWASP 2010» . ОВАСП. Июнь 2010.
- ^ «Репозиторий GitHub» . Гитхаб .
- ^ «Opa — масштабируемый облачный язык с открытым исходным кодом» . Веб-приложения. 22 июля 2011 г.
- ^ «Интервью: Франсуа-Режи Сино об Opa, платформе веб-разработки» . ИнфоВ. 7 сентября 2011 г.
- ^ Нил Макаллистер (8 сентября 2011 г.). «Представляем Opa, язык веб-разработки, который будет управлять всеми» . ИнфоМир.
- ^ «Обзор InfoWorld: Инструменты для быстрой веб-разработки» . Инфомир . 12 мая 2010 г.
- ^ «Дедушка тоже для облачных приложений» . Хейзе онлайн . 29 июля 2011 г.
- ^ «Опа — единый подход к веб-программированию» . я-программист. 28 августа 2011 г.
- ^ Копровски, Бишток (2011). «TRX: формально проверенный интерпретатор парсера» . Логические методы в информатике.
- ^ «Opa, новый язык для разработки веб-приложений» (на французском языке). LinuxПт. 22 июня 2011 г.
- ^ «Здравствуйте, база данных» . Опа Документация. Архивировано из оригинала 12 января 2014 г. Проверено 22 февраля 2012 г.
- ^ «Низкоуровневая поддержка MongoDB» . Опа Документация. Архивировано из оригинала 12 января 2014 г. Проверено 22 февраля 2012 г.
- ^ «Программирование Opa: новое понимание веб-разработки» . Компьютерный мир . 1 февраля 2012 г.
- ^ Аластер Эйткен (26 июля 2011 г.). «Опа, облачный язык – тест-драйв» . Морган Хилл. Архивировано из оригинала 25 сентября 2011 года . Проверено 6 сентября 2011 г.
Библиография
[ редактировать ]- Опа: Up and Running , 2013, O'Reilly Media ISBN 978-1449328856