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

Дадаць каментар