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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][перевірена версія]
(Створено шляхом перекладу сторінки «Opa (programming language)»)
Мітки: Переклад вмісту, суміш розкладок у тексті
 
м
Рядок 1: Рядок 1:
  +
{{Infobox programming language
'''Opa''' — мова програмування з відкритим вихідним кодом для розробки [[Масштабовність|масштабованих]] [[Веб-застосунок|веб-додатків]].
 
  +
| name = Opa
  +
| logo =
  +
| paradigm = мульти-парадигма: функціональна та імперативна
  +
| year = 2011
  +
| typing = static, strong, inferred
  +
| developer = [http://linkedin.com/company/mlstate MLstate]
  +
| latest_release_version = 1.1.0 (stable)
  +
| latest_release_date = {{Release date and age|2013|02|13}}<ref>http://blog.opalang.org/2013/02/some-great-news-on-opa.html</ref>
  +
| operating_system = [[Linux]], [[OS X]], [[Windows]]
  +
| genre = [[Programming language]]
  +
| influenced_by = [[OCaml]], [[Erlang]], [[JavaScript]]
  +
| license = [[MIT License]], [[Affero General Public License|AGPLv3]]
  +
| website = {{URL|opalang.org}}
  +
}}
  +
 
'''Opa'''&nbsp;— мова програмування з відкритим вихідним кодом для розробки [[Масштабовність|масштабованих]] [[Веб-застосунок|веб-додатків]].
   
 
Мову можна використовувати як для клієнтських, так і для серверних сценаріїв, де програми пишуться в Opa і згодом компілюються в [[Node.js|Nodejs]] на [[Сервер|сервері]] в [[JavaScript|на JavaScript]] на [[Клієнт (інформатика)|стороні клієнта]].<ref><cite class="citation web">Adam Koprowski (24 February 2012). </cite></ref><ref>Opa actually supports various server-side backends, Nodejs being the most popular one</ref> Opa маж сильну [[Система типізації|статичну типізацію]], яка може бути корисна в захисті проти безпеки таких проблем, як [[SQL ін'єкція|в SQL-ін'єкції]] і [[Міжсайтовий скриптінг|міжсайтовий скриптинг]].<ref><cite class="citation journal">Robertson, William; Giovanni, Vigna (2009). </cite></ref>
 
Мову можна використовувати як для клієнтських, так і для серверних сценаріїв, де програми пишуться в Opa і згодом компілюються в [[Node.js|Nodejs]] на [[Сервер|сервері]] в [[JavaScript|на JavaScript]] на [[Клієнт (інформатика)|стороні клієнта]].<ref><cite class="citation web">Adam Koprowski (24 February 2012). </cite></ref><ref>Opa actually supports various server-side backends, Nodejs being the most popular one</ref> Opa маж сильну [[Система типізації|статичну типізацію]], яка може бути корисна в захисті проти безпеки таких проблем, як [[SQL ін'єкція|в SQL-ін'єкції]] і [[Міжсайтовий скриптінг|міжсайтовий скриптинг]].<ref><cite class="citation journal">Robertson, William; Giovanni, Vigna (2009). </cite></ref>
   
Мову було вперше офіційно представлено на конференції OWASP 2010 року,<ref><cite class="citation web">[[owasp:OWASP_AppSec_Research_2010_-_Stockholm,_Sweden#OPA:_Language_Support_for_a_Sane.2C_Safe_and_Secure_Web|"OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010"]]. </cite></ref> а вихідний код викладено на [[GitHub|github]]<ref><cite class="citation web">[https://github.com/MLstate/opalang "GitHub repository"].</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AOpa+%28programming+language%29&rft.btitle=GitHub+repository&rft.genre=unknown&rft_id=https%3A%2F%2Fgithub.com%2FMLstate%2Fopalang&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook">&nbsp;</span></ref>
+
Мову було вперше офіційно представлено на конференції OWASP 2010 року,<ref><cite class="citation web">[[owasp:OWASP_AppSec_Research_2010_-_Stockholm,_Sweden#OPA:_Language_Support_for_a_Sane.2C_Safe_and_Secure_Web|"OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010"]]. </cite></ref> а вихідний код викладено на [[GitHub|github]]<ref><cite class="citation web">[https://github.com/MLstate/opalang «GitHub repository»].</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AOpa+%28programming+language%29&rft.btitle=GitHub+repository&rft.genre=unknown&rft_id=https%3A%2F%2Fgithub.com%2FMLstate%2Fopalang&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook">&nbsp;</span></ref>
 
у червні 2011-го.
 
у червні 2011-го.
   
 
== Design and features ==
 
== Design and features ==
Opa складається з [[Веб-сервер|веб-сервера]], [[База даних|бази даних]] та розподіленого рушія.<ref><cite class="citation web">[http://www.webappers.com/2011/07/22/opa-the-scalable-open-source-cloud-language/ "Opa The Scalable Open Source Cloud Language"]. </cite></ref> Код компілюється в [[JavaScript]] за допомогою [[Node.js]] на серверній стороні і в [[JavaScript]] з використанням [[jQuery]] для крос-браузерної сумісності на стороні клієнта.<ref><cite class="citation web">[http://www.infoq.com/articles/Opa "Interview: François-Régis Sinot on Opa, a Web Development Platform"]. </cite></ref>
+
Opa складається з [[Веб-сервер|веб-сервера]], [[База даних|бази даних]] та розподіленого рушія.<ref><cite class="citation web">[http://www.webappers.com/2011/07/22/opa-the-scalable-open-source-cloud-language/ «Opa&nbsp;— The Scalable Open Source Cloud Language»]. </cite></ref> Код компілюється в [[JavaScript]] за допомогою [[Node.js]] на серверній стороні і в [[JavaScript]] з використанням [[jQuery]] для крос-браузерної сумісності на стороні клієнта.<ref><cite class="citation web">[http://www.infoq.com/articles/Opa «Interview: François-Régis Sinot on Opa, a Web Development Platform»]. </cite></ref>
Перевага даного підходу в порівнянні з деякими платформами [[Насичений інтернет-застосунок|Rich Internet Applications]] (RIA) є те, що користувачам не потрібно встановити [[Розширення браузера|плагін]] для браузера.<ref><cite class="citation web">Neil McAllister (8 September 2011). </cite></ref> Opa розподіляє дії веб-фреймворками, але використовує трохи інший підхід.<ref><cite class="citation web">[http://www.infoworld.com/d/developer-world/infoworld-review-tools-rapid-web-development-297 "InfoWorld review: Tools for rapid Web development"]. </cite></ref>
+
Перевага даного підходу в порівнянні з деякими платформами [[Насичений інтернет-застосунок|Rich Internet Applications]] (RIA) є те, що користувачам не потрібно встановити [[Розширення браузера|плагін]] для браузера.<ref><cite class="citation web">Neil McAllister (8 September 2011). </cite></ref> Opa розподіляє дії веб-фреймворками, але використовує трохи інший підхід.<ref><cite class="citation web">[http://www.infoworld.com/d/developer-world/infoworld-review-tools-rapid-web-development-297 «InfoWorld review: Tools for rapid Web development»]. </cite></ref>
Його конструктори стверджують, що це допомагає мові уникнути багатьох проблем безпеки, на кшталт [[SQL ін'єкція|SQL ін'єкцій]] і [[Міжсайтовий скриптінг|міжсайтового скриптингу]] (XSS).<ref><cite class="citation web">[http://www.heise.de/developer/meldung/Auch-Opa-ist-fuer-Cloud-Anwendungen-1288588.html "Auch Opa ist für Cloud-Anwendungen"]. </cite></ref>
+
Його конструктори стверджують, що це допомагає мові уникнути багатьох проблем безпеки, на кшталт [[SQL ін'єкція|SQL ін'єкцій]] і [[Міжсайтовий скриптінг|міжсайтового скриптингу]] (XSS).<ref><cite class="citation web">[http://www.heise.de/developer/meldung/Auch-Opa-ist-fuer-Cloud-Anwendungen-1288588.html «Auch Opa ist für Cloud-Anwendungen»]. </cite></ref>
   
Ядро мови [[Функційне програмування|функціональне]] і має статичний [[Система типізації|тип]] за [[Вивід типів|видами типів]]. Мова також забезпечує роботу сесій, які інкапсулюють [[Імперативне програмування|імперативні]] стани і взаємодіють за допомогою [[Обмін повідомленнями|передачі повідомлень]], схожими на роботу [[Erlang]]. Opa надає безліч структур або функцій, які є спільними в веб-розробці, як [[Об'єкт першого класу|об'єкти першого класу]]. Наприклад, [[HTML]]<ref><cite class="citation web">[http://www.i-programmer.info/news/98-languages/2961-opa-a-unified-approach-to-web-programming.html "Opa - a unified approach to web programming"]. i-Programmer. 28 August 2011.</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AOpa+%28programming+language%29&rft.btitle=Opa+-+a+unified+approach+to+web+programming&rft.date=2011-08-28&rft.genre=unknown&rft_id=http%3A%2F%2Fwww.i-programmer.info%2Fnews%2F98-languages%2F2961-opa-a-unified-approach-to-web-programming.html&rft.pub=i-Programmer&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook">&nbsp;</span></ref> та [[Синтаксичний аналіз|аналізатори]], засновані на парсингу граматичних виразів.<ref><cite class="citation web">Koprowski, Binsztok (2011). </cite></ref> Через це ця мова не призначена для створення не-веб-додатків (наприклад, [[Застосунок|додатків для настільних комп'ютерів]]).<ref><cite class="citation web">[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). </cite></ref>
+
Ядро мови [[Функційне програмування|функціональне]] і має статичний [[Система типізації|тип]] за [[Вивід типів|видами типів]]. Мова також забезпечує роботу сесій, які інкапсулюють [[Імперативне програмування|імперативні]] стани і взаємодіють за допомогою [[Обмін повідомленнями|передачі повідомлень]], схожими на роботу [[Erlang]]. Opa надає безліч структур або функцій, які є спільними в веб-розробці, як [[Об'єкт першого класу|об'єкти першого класу]]. Наприклад, [[HTML]]<ref><cite class="citation web">[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.</cite><span class="Z3988" title="ctx_ver=Z39.88-2004&rfr_id=info%3Asid%2Fen.wikipedia.org%3AOpa+%28programming+language%29&rft.btitle=Opa+-+a+unified+approach+to+web+programming&rft.date=2011-08-28&rft.genre=unknown&rft_id=http%3A%2F%2Fwww.i-programmer.info%2Fnews%2F98-languages%2F2961-opa-a-unified-approach-to-web-programming.html&rft.pub=i-Programmer&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook">&nbsp;</span></ref> та [[Синтаксичний аналіз|аналізатори]], засновані на парсингу граматичних виразів.<ref><cite class="citation web">Koprowski, Binsztok (2011). </cite></ref> Через це ця мова не призначена для створення не-веб-додатків (наприклад, [[Застосунок|додатків для настільних комп'ютерів]]).<ref><cite class="citation web">[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). </cite></ref>
   
У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних [[MongoDB]], схожих на [[Об'єктно-реляційне відображення|об'єктно-реляційні відображення]].<ref><cite class="citation web">[http://doc.opalang.org/#!/manual/Hello--database "Hello, database"]. </cite></ref><ref><cite class="citation web">[http://doc.opalang.org/#!/manual/Low-level-MongoDB-support "Low-level MongoDB support"]. </cite></ref><ref><cite class="citation news">[http://news.idg.no/cw/art.cfm?id=36C6A408-F2EE-3929-CB53260EBA6B884F "Programming Opa: Web development, reimagined"]. </cite></ref>
+
У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних [[MongoDB]], схожих на [[Об'єктно-реляційне відображення|об'єктно-реляційні відображення]].<ref><cite class="citation web">[http://doc.opalang.org/#!/manual/Hello--database «Hello, database»]. </cite></ref><ref><cite class="citation web">[http://doc.opalang.org/#!/manual/Low-level-MongoDB-support «Low-level MongoDB support»]. </cite></ref><ref><cite class="citation news">[http://news.idg.no/cw/art.cfm?id=36C6A408-F2EE-3929-CB53260EBA6B884F «Programming Opa: Web development, reimagined»]. </cite></ref>
 
В версії 1.1.0 в лютому 2013 року також додано підтримку [[PostgreSQL]].
 
В версії 1.1.0 в лютому 2013 року також додано підтримку [[PostgreSQL]].
   
Рядок 19: Рядок 35:
   
 
=== Hello world ===
 
=== Hello world ===
Традиційна програма [[Hello world!]] створює веб-сервер, який відобразить статичну сторінку з текстом "Hello world!", її код буде наступним:<ref><cite class="citation web">Alastair Aitken (26 July 2011). </cite></ref><source lang="opa">
+
Традиційна програма [[Hello world!]] створює веб-сервер, який відобразить статичну сторінку з текстом «Hello world!», її код буде наступним:<ref><cite class="citation web">Alastair Aitken (26 July 2011). </cite></ref><source lang="opa">
 
Server.start(Server.http,
 
Server.start(Server.http,
 
{ title: "Hello"
 
{ title: "Hello"
Рядок 32: Рядок 48:
   
 
== Див. також ==
 
== Див. також ==
* [[Dart]] - JS-альтернатива для веб-додатків
+
* [[Dart]]&nbsp;— JS-альтернатива для веб-додатків
* [[Haxe|Нaxe]] - подібна мова програмування для веб-додатків
+
* [[Haxe|Нaxe]]&nbsp;— подібна мова програмування для веб-додатків
* [[CoffeeScript]] - мова програмування, що компілюється в JavaScript
+
* [[CoffeeScript]]&nbsp;— мова програмування, що компілюється в JavaScript
   
 
== Посилання ==
 
== Посилання ==
Рядок 43: Рядок 59:
 
* ''Opa: Up and Running'', 2013, [[O'Reilly Media]] ISBN 978-1449328856
 
* ''Opa: Up and Running'', 2013, [[O'Reilly Media]] ISBN 978-1449328856
   
  +
== Посилання ==
== Зовнішні посилання ==
 
* <span class="official-website"><span class="url">[http://opalang.org Офіційний сайт]</span></span><span class="official-website"></span> [[Category:Official website different in Wikidata and Wikipedia|Category:Official website different in Wikidata and Wikipedia]]
+
* <span class="official-website"><span class="url">[http://opalang.org Офіційний сайт]</span></span><span class="official-website"></span> [[Категорія:Official website different in Wikidata and Wikipedia|Category: Official website different in Wikidata and Wikipedia]]
 
[[Категорія:Функціональні мови програмування]]
 
[[Категорія:Функціональні мови програмування]]
 
[[Категорія:Веб-програмування]]
 
[[Категорія:Веб-програмування]]

Версія за 08:53, 28 вересня 2016

Opa
Парадигма:мульти-парадигма: функціональна та імперативна
Дата появи:2011
Розробник:MLstate
Останній реліз:1.1.0 (stable) (13 лютого 2013; 2346 днів тому[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

Посилання

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

Посилання