Відмінності між версіями «Opa (мова програмування)»

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
(Виправлено джерел: 2; позначено як недійсні: 0. #IABot (v2.0beta14))
 
Рядок 29: Рядок 29:
 
Ядро мови [[Функційне програмування|функціональне]] і має статичний [[Система типізації|тип]] за [[Вивід типів|видами типів]]. Мова також забезпечує роботу сесій, які інкапсулюють [[Імперативне програмування|імперативні]] стани і взаємодіють за допомогою [[Обмін повідомленнями|передачі повідомлень]], схожими на роботу [[Erlang]]. Opa надає безліч структур або функцій, які є спільними в веб-розробці, як [[Об'єкт першого класу|об'єкти першого класу]]. Наприклад, [[HTML]]<ref>[http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html «Opa&nbsp;— a unified approach to web programming»]. i-Programmer. 28 August 2011.</ref> та [[Синтаксичний аналіз|аналізатори]], засновані на парсингу граматичних виразів.<ref>Koprowski, Binsztok (2011). </ref> Через це ця мова не призначена для створення не-веб-додатків (наприклад, [[Застосунок|додатків для настільних комп'ютерів]]).<ref>[http://linuxfr.org/news/opa-un-nouveau-langage-pour-le-d%C3%A9veloppement-d%E2%80%99applications-web «Opa, un nouveau langage pour le développement d'applications Web»] (in French). </ref>
 
Ядро мови [[Функційне програмування|функціональне]] і має статичний [[Система типізації|тип]] за [[Вивід типів|видами типів]]. Мова також забезпечує роботу сесій, які інкапсулюють [[Імперативне програмування|імперативні]] стани і взаємодіють за допомогою [[Обмін повідомленнями|передачі повідомлень]], схожими на роботу [[Erlang]]. Opa надає безліч структур або функцій, які є спільними в веб-розробці, як [[Об'єкт першого класу|об'єкти першого класу]]. Наприклад, [[HTML]]<ref>[http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html «Opa&nbsp;— a unified approach to web programming»]. i-Programmer. 28 August 2011.</ref> та [[Синтаксичний аналіз|аналізатори]], засновані на парсингу граматичних виразів.<ref>Koprowski, Binsztok (2011). </ref> Через це ця мова не призначена для створення не-веб-додатків (наприклад, [[Застосунок|додатків для настільних комп'ютерів]]).<ref>[http://linuxfr.org/news/opa-un-nouveau-langage-pour-le-d%C3%A9veloppement-d%E2%80%99applications-web «Opa, un nouveau langage pour le développement d'applications Web»] (in French). </ref>
   
У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних [[MongoDB]], схожих на [[Об'єктно-реляційне відображення|об'єктно-реляційні відображення]].<ref>[http://doc.opalang.org/#!/manual/Hello--database «Hello, database»]. </ref><ref>[http://doc.opalang.org/#!/manual/Low-level-MongoDB-support «Low-level MongoDB support»]. </ref><ref>[http://news.idg.no/cw/art.cfm?id=36C6A408-F2EE-3929-CB53260EBA6B884F «Programming Opa: Web development, reimagined»]. </ref>
+
У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних [[MongoDB]], схожих на [[Об'єктно-реляційне відображення|об'єктно-реляційні відображення]].<ref>[http://doc.opalang.org/#!/manual/Hello--database «Hello, database»] {{Webarchive|url=https://web.archive.org/web/20140112111933/http://doc.opalang.org/#!/manual/Hello--database |date=12 січень 2014 }}.</ref><ref>[http://doc.opalang.org/#!/manual/Low-level-MongoDB-support «Low-level MongoDB support»] {{Webarchive|url=https://web.archive.org/web/20140112111933/http://doc.opalang.org/#!/manual/Low-level-MongoDB-support |date=12 січень 2014 }}.</ref><ref>[http://news.idg.no/cw/art.cfm?id=36C6A408-F2EE-3929-CB53260EBA6B884F «Programming Opa: Web development, reimagined»]. </ref>
 
В версії 1.1.0 в лютому 2013 року також додано підтримку [[PostgreSQL]].
 
В версії 1.1.0 в лютому 2013 року також додано підтримку [[PostgreSQL]].
   

Поточна версія на 19:22, 18 травня 2019

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

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

Мову можна використовувати як для клієнтських, так і для серверних сценаріїв, де програми пишуться в 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

Примітки[ред. | ред. код]

Бібліографія[ред. | ред. код]

Посилання[ред. | ред. код]