stringtranslate.com

Опа (язык программирования)

Opa — это язык программирования для разработки масштабируемых веб-приложений . Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией GNU Affero General Public License (AGPLv3) и лицензией MIT .

Его можно использовать как для клиентских, так и для серверных скриптов , когда полные программы пишутся в Opa и впоследствии компилируются в Node.js на сервере и JavaScript на клиенте , при этом компилятор автоматизирует все взаимодействие между ними. [3] [4] Opa реализует строгую статическую типизацию , которая может быть полезна для защиты от проблем безопасности, таких как SQL-инъекции и атаки с использованием межсайтовых скриптов . [5]

Язык был впервые официально представлен на конференции Open Worldwide Application Security Project ( OWASP ) в 2010 году [6], а исходный код был опубликован на GitHub [7] в июне 2011 года под лицензией GNU Affero General Public License (AGPL). Позднее лицензия была изменена на MIT License для части программного фреймворка ( библиотеки ) и 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 : "Привет" , page : function ( ) { <h1> Привет , веб!</h1> } } )        

Его можно скомпилировать в автономный исполняемый файл JavaScript с помощью:

$  опа  hello_web.opa

Запуск полученного исполняемого файла JavaScript запускает веб-приложение:

$  ./hello_web.js

Смотрите также

Ссылки

  1. ^ "Выпуск 1.1.1: MLstate/opalang". GitHub . Получено 29-01-2021 .
  2. ^ "Некоторые замечательные новости об Опе" . Получено 29.01.2021 .
  3. Копровски, Адам (24 февраля 2012 г.). «Node.js против Opa: противостояние веб-фреймворков». developer.com.
  4. ^ Opa поддерживает различные серверные бэкэнды, наиболее популярным из которых является Nodejs.
  5. ^ Робертсон, Уильям; Джованни, Винья (2009). «Статическое обеспечение целостности веб-приложений посредством строгой типизации». Труды SSYM'09 18-й конференции по симпозиуму по безопасности USENIX .[ постоянная мертвая ссылка ]
  6. ^ "OPA: Языковая поддержка для разумного, безопасного и защищенного Интернета, на конференции OWASP 2010". OWASP. Июнь 2010 г.
  7. ^ "Репозиторий GitHub". GitHub .
  8. ^ "Opa – масштабируемый язык облачных вычислений с открытым исходным кодом". WebAppers. 22 июля 2011 г.
  9. ^ "Интервью: Франсуа-Режис Сино об Opa, платформе веб-разработки". InfoQ. 7 сентября 2011 г.
  10. Нил МакАлистер (8 сентября 2011 г.). «Представляем Opa — язык веб-разработки, который правит всеми». InfoWorld.
  11. ^ "Обзор InfoWorld: Инструменты для быстрой веб-разработки". InfoWorld . 12 мая 2010 г.
  12. ^ "Auch Opa ist für Cloud-Anwendungen" . Хейзе онлайн . 29 июля 2011 г.
  13. ^ "Opa – единый подход к веб-программированию". i-Programmer. 28 августа 2011 г.
  14. ^ Копровски, Бинсток (2011). "TRX: Формально проверенный синтаксический интерпретатор". Логические методы в информатике .
  15. ^ «Опа, новый язык для разработки веб-приложений» (на французском языке). LinuxПт. 22 июня 2011 г.
  16. ^ "Hello, database". Документация Opa. Архивировано из оригинала 2014-01-12 . Получено 2012-02-22 .
  17. ^ "Поддержка MongoDB низкого уровня". Документация Opa. Архивировано из оригинала 2014-01-12 . Получено 2012-02-22 .
  18. ^ "Programming Opa: веб-разработка, переосмысленная". Computerworld . 1 февраля 2012 г.
  19. ^ Эйткен, Аластер (26 июля 2011 г.). «Opa, язык облаков – тест-драйв». Морган Хилл. Архивировано из оригинала 25 сентября 2011 г. Получено 6 сентября 2011 г.

Библиография

Внешние ссылки