Google опублікував мову логічного програмування Logica

Компанія Google представила нову декларативну мову логічного програмування Logica, призначену для маніпулювання даними та транслюючу програми в мову SQL. Нова мова орієнтована тих, хто хоче використовувати синтаксис логічного програмування під час написання запитів до БД. В даний час результуючий SQL-код може виконуватися в сховищі Google BigQuery або в СУБД PostgreSQL і SQLite, підтримка яких поки експериментальна. У майбутньому планується розширити кількість підтримуваних SQL-діалектів. Код проекту написаний мовою Python та опублікований під ліцензією Apache 2.0.

Logica продовжує розвиток іншої розробленої в Google мови обробки даних Yedalog та надає рівень абстракції, недоступний у штатному SQL. Запити в Logica програмуються у вигляді набору логічних тверджень. Підтримуються модулі, операції імпорту та можливість використання Logica з інтерактивної оболонки Jupyter Notebook. Наприклад, для формування зведення персон, які найчастіше згадуються в новинах за 2020 рік, можна використовувати наступну програму мовою Logica для звернення до БД GDELT: @OrderBy(Mentions, «mentions desc»); @ Limit (Mentions, 10); Mentions(person:, mentions? += 1) distinct :- gdelt-bq.gdeltv2.gkg(persons:, date:), Substr(ToString(date), 0, 4) == «2020», the_persons == Split (persons, «;»), person in the_persons; $ logica mentions.l run Mentions +—————-+—————-+ | людина | mentions_count | +—————-+—————-+ | donald trump | 3077130 | | los angeles | 1078412 | | joe biden | 1054827 | | george floyd | 872919 | | boris johnson | 674786 | | barack obama | 438181 | | vladimir putin | 410587 | | bernie sanders | 387383 | | andrew cuomo | 345462 | | Las Vegas | 325487 | +—————-+—————-+

Написання складних запитів на SQL призводить до необхідності написання громіздких багаторядкових ланцюжків, не очевидних для сприйняття, що заважають повторному використанню частин запиту та утруднюють супровід. Для типових обчислень, що повторюються, в SQL можна використовувати уявлення і функції, але вони не підтримують операції імпорту і не надають гнучкості, властивої високорівневим мовам (наприклад, неможливо передати функцію в функцію). Logica дозволяє компонувати програми з невеликих, зрозумілих та доступних для повторного використання логічних блоків, які можуть бути протестовані, пов'язані з певними іменами та згруповані у пакети, доступні для використання у складі інших проектів.

Джерело: opennet.ru

Додати коментар або відгук