(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date(); for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); ym(93790508, "init", { defer: true, clickmap:true, trackLinks:true, accurateTrackBounce:true }); ym(93790508, 'hit', window.location.href);

Google представил новый язык программирования Logica

Корпорация Google часто удивляет новыми проектами. То операционная система Fuchsia, теперь — новый декларативный язык логического программирования Logica. По словам разработчиков, он предназначен для манипулирования данными и транслирования программ в язык SQL. Подробности — в материале Selectel.

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

Чем еще может порадовать новый язык?

Здесь вас поймут.

Selectel

На самом деле, Logica — продолжение развития еще одного языка обработки данных, который называется 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 +----------------+----------------+ | 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 могут быть очень длинными и многострочными. При этом содержимое таких запросов неочевидно для восприятия.

Для типовых повторяющихся вычислений в SQL есть возможность работать с представлениями и функциями, но, к сожалению, они не поддерживают операции импорта, не предоставляя также гибкости, которая свойственна высокоуровневым языкам. Функцию в функцию здесь передать, например, невозможно.

А вот Logica предоставляет возможность компоновки программ из небольших, понятных и доступных для повторного использования логических блоков. Они могут быть протестированы и связаны с определенными именами, после чего сгруппированы в пакеты, доступные для использования в составе прочих проектов.

Разработчики уже оформили туториал для ознакомления с основными функциями и преимуществами нового языка программирования.

Не пропускайте последние новости из мира IT, подписывайтесь на блог Selectel.

0
Комментарии
-3 комментариев
Раскрывать всегда