Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Мировые новости. Обсуждения. (https://forum.antichat.xyz/forumdisplay.php?f=23)
-   -   Google опубликовал язык логического программирования Logica (https://forum.antichat.xyz/showthread.php?t=483444)

Suicide 14.04.2021 00:39

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

Logica продолжает развитие другого разработанного в Google языка обработки данных Yedalog и предоставляет уровень абстракции, недоступный в штатном SQL. Запросы в Logica программируются в форме набора логических утверждений. Поддерживаются модули, операции импорта и возможность использования Logica из интерактивной оболочки Jupyter Notebook. Например, для формирования сводки персон, наиболее часто упоминаемых в новостях за 2020 год, можно использовать следующую программу на языке Logica для обращения к БД GDELT:

Код:

Code:
@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
  +----------------+----------------+
  |    person    | 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 позволяет компоновать программы из небольших, понятных и доступных для повторного использования логических блоков, которые могут быть протестированы, связаны с определёнными именами и сгруппированы в пакеты, доступные для использования в составе других проектов.



Время: 06:49