Google har introduceret et nyt deklarativt sprog til logisk programmering kaldet Logica, designet til datamanipulation og som oversætter programmer til SQL-sprog. Det nye sprog er rettet mod dem, der ønsker at bruge syntaksen fra logisk programmering til at skrive databaseforespørgsler. I øjeblikket kan den resulterende SQL-kode køres i Google BigQuery eller i databaserne PostgreSQL og SQLite, hvor understøttelsen stadig er eksperimentel. I fremtiden planlægges det at udvide antallet af understøttede SQL-dialekter. Projektkoden er skrevet i Python og offentliggjort under Apache 2.0-licensen.
Logica fortsætter udviklingen af et andet databehandlingssprog udviklet af Google, Yedalog, og tilbyder et abstraktionsniveau, der ikke er tilgængeligt i standard SQL. Forespørgsler i Logica programmeres som et sæt logiske udsagn. Moduler, importoperationer og muligheden for at bruge Logica fra den interaktive Jupyter Notebook er understøttet. For eksempel kan følgende program i Logica bruges til at danne et resumé af personer, der oftest nævnes i nyhederne i 2020, ved at gøre følgende databaseopkald til GDELT: @OrderBy(Mentions, "mentions desc"); @Limit(Mentions, 10); Mentions(person:, mentions? += 1) distinkt :- gdelt-bq.gdeltv2.gkg(persons:, date:), Substr(ToString(date), 0, 4) == "2020", the_persons == Split(persons, ";"), person in the_persons; $ logica mentions.l kør 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 | +—————-+—————-+
Skrivning af komplekse SQL-forespørgsler fører til behovet for at skrive omfangsrige, flersidede kæder, der ikke er åbenlyse i forståelsen, hvilket hindrer genbrug af dele af forespørgslen og vanskeliggør vedligeholdelse. For typiske gentagne beregninger i SQL kan man anvende udsigter og funktioner, men de understøtter ikke importoperationer og giver ikke den fleksibilitet, som er karakteristisk for højniveau-sprog (fx er det umuligt at sende en funktion til en anden funktion). Logica gør det muligt at sammensætte programmer ud fra små, forståelige og genanvendelige logiske enheder, som kan testes, knyttes til bestemte navne og grupperes i pakker, der er tilgængelige for brug i andre projekter.
Kilde: opennet.ru
